Wiki Sayfaları
Abstract Class
Array
Class Compositions and Associations(Siniflarin Olusumu ve Birlikteliyi)
Compiling and Interpreting Java Code(Java Kodunu Derleme)
Degiskenler(Variables)
ECLIPSE & JIRA & MYLYN Üçlüsü
Enum
Extends Olunan Class’larda Constructor iliskisi
Final
HIBERNATE : Repeated column in mapping for entity: ... (should be mapped with insert=false update=
Hibernate ile @Any kullanımı
Initialization Blocks(Class’ta Bloglarin Calisma Prensibi )
instanceof keyword
Interface Class
JAVA PACKAGE
java.io.Serializable
java.util.regex.Matcher and java.util.regex.Pattern
java.util.Scanner and java.util.Formatter
Jsf 2.0 ile Custom Component OlustrumaJsf 2.0 ile Custom Component Olustruma
Labeled Statements
Object
Passing Variables into Methods
Primitive type(Ilkel veri tipleri)
Programming with Java Operators and Strings(Java Operatorleri ve String mothodlari)
Programming with Java Statements(Java Programlama Ifadeleri)
Raporu Ziplenmesi ve Zipten Cikarilmasi
String , StringBuffer , StringBuilder
System.out.printf
TDD ile Uygulama Geliştirme
Tomcatde JSESSIONID Yönetimi
TreeSet Uygulamasi
Varargs
Wicket EKÜ (Eller Klavye Üzerinde) çalışma sorularıReklamlar
Wicket EKÜ (Eller Klavye Üzerinde) çalışma soruları
Wicket EKÜ (Eller Klavye Üzerinde) çalışma soruları
Wicket EKÜ (Eller Klavye Üzerinde) çalışma soruları
1 - Merhaba Dünya Örneği
Bu örneğimizde Wicket ile basit bir "Merhaba Dünya" örneği gerçekleştireceğiz
1-a - Gerekli Jar dosyalarının tanıtılması .
Masa üzerindeki wicket_lib.rar dosyasını masa üstüne açınız.
1-b - web.xml dosyasının düzeltilmesi
web.xml dosyası Uygulama sunucusuna / JSP - SERVLET barındırıcıya (container) Wicket çatısını (framerwork) tanıttığımız yerdir.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>wicketUygulama</display-name>
<filter>
<filter-name>wicketUygulama</filter-name>
<filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
<init-param>
<param-name>applicationClassName</param-name>
<param-value>tr.org.java.web.Uygulama</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>wicketUygulama</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
1-c - tr.org.java.web paketini oluşturma
Netbeans içerisinde paket oluşturmak için "source packages" üzerindeyken sağ tıklayıp "new --> package" demek yeterlidir.
1-d - Uygulama.java sınıfını oluşturmak.
Bu sınıfı tr.org.java.web paketi altında oluşturunuz.
Wicket içerisinde konfigurasyon işleri sınıf içerisinde yapılır. Bu örneğimizde Uygulama.java içerisinde konfigurasyon işlerini yapabilmekteyiz.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tr.org.java.web;
import org.apache.wicket.protocol.http.WebApplication;
/**
*
* @author altuga
*/
public class Uygulama extends WebApplication{
@Override
public Class getHomePage() {
return Basla.class;
}
}
Uygulama sınıfının WebApplication sınıfından türetildiğine dikkat ediniz !!! Ayrıca getHomePage() metodunu ezdik (override) ettik. Bu web uygulaması ilk çalıştığında Basla.class kullanıcıların karşısına çıkacak olan ilk ekran olacaktır.
1-e - Basla.html
Bu HTML dosyasını tr.org.java.web paketi altında oluşturunuz. Tuhaf gelebilir....
HTML tasarımın gerçekleştiği yerdir. Java veya anlaşılması dakikalar süren etiketlerin (tags) olmadığı yalın HTML dosyası.
<?xml version="1.0" encoding="UTF-8"?>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<span wicket:id="etiket" >[Calisma aninda isim gelecek] </span>
</body>
</html>
Bazı dikkat edilesi noktalar
Saf HTML kodları...
1-f - Basla.java
Sınıfı tr.org.java.web paketi altında oluşturunuz.
HTML in arkadasındaki itici güç; HTML tasarımcısı ile Java uygulama geliştiricisini ayıran nokta;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tr.org.java.web;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
/**
*
* @author altuga
*/
public class Basla extends WebPage{
public Basla() {
this.add(new Label("etiket", "Merhaba Naber"));
}
}
Basla sınıfının WebPage sınıfından türetildiğine dikkat ediniz!!! Sonra Basla sınıfının yapılandırıcısı (constructor) içerisinde Label bileşenini sayfaya ekliyoruz.
Sonuç
2 - Ajax update bağlantısı
Bu örnek Apache Wicket ile basit bir Ajax uygulamasının nasıl yapıldığı incelenecektir.
2-a - Gerekli Jar dosyalarının tanıtılması .
1-a daki gibi yapınız.
2-b - web.xml dosyasının düzeltilmesi
1-b deki gibi yapınız
2-c - tr.org.java.web paketini oluşturma
1-c deki gibi yapınız.
2-d - Uygulama.java sınıfını oluşturmak.
Bu sınıfı tr.org.java.web paketi altında oluşturunuz.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tr.org.java.web;
import org.apache.wicket.protocol.http.WebApplication;
/**
*
* @author altuga
*/
public class Uygulama extends WebApplication{
@Override
public Class getHomePage() {
return Hosgeldin.class;
}
}
Sadece HTML kodları, dikkat...
Bu html dosyasını tr.org.java.web paketi altında oluşturunuz.
<html>
<head></head>
<body>
<a href="#" wicket:id="link">click me</a>
<p>
Counter: <span wicket:id="counter">nr of times</span>
</body>
</html>
2-f - Hosgeldin.java
Bu sınıfı tr.org.java.web paketi altında oluşturunuz.
Ajax işleri java kodu içerisinde hallediliyor, bakınız :
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tr.org.java.web;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.Model;
/**
*
* @author altuga
*/
public class Hosgeldin extends WebPage {
public Hosgeldin() {
Model model = new Model() {
private int counter = 0;
public Object getObject() {
return new Integer(counter++);
}
};
final Label label = new Label("counter", model);
label.setOutputMarkupId(true);
add(new AjaxFallbackLink("link") {
public void onClick(AjaxRequestTarget target) {
if (target != null) {
// target ajax isteklerini gecerli olur
target.addComponent(label);
}
}
});
add(label);
}
}
Sonuç
3 - Form uygulaması
Bu örnek Apache Wicket ile form uygulamasının nasıl yapıldığını göstermektedir. Kısaca form içerisine girilen değerler alıp bir ArrayList nesnesine atıyoruz, bu istenirse veritabanına da atılabilir.
3-a - Gerekli Jar dosyalarının tanıtılması .
1-a daki gibi yapınız.
3-b - web.xml dosyasının düzeltilmesi
1-b deki gibi yapınız
3-c - tr.org.java.web paketini oluşturma
1-c deki gibi yapınız.
3-d - Uygulama.java sınıfını oluşturmak.
Bu sınıfı tr.org.java.web paketi altında oluşturunuz.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tr.org.java.web;
import org.apache.wicket.protocol.http.WebApplication;
/**
*
* @author altuga
*/
public class Uygulama extends WebApplication{
@Override
public Class getHomePage() {
return Kayit.class;
}
}
3-e - Kayit.html
Bu html dosyasını tr.org.java.web paketi altında oluşturunuz.
Düz html hiç bir süpriz yok...
<?xml version="1.0" encoding="UTF-8"?>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<form wicket:id="form">
<div>
<div><span wicket:id="feedback">[[ feedback ]]</span></div>
<div>
<div>İsim</div>
<div><input type="text" wicket:id="isim"> </div>
</div>
<div>
<div>Soyad</div>
<div><input type="text" wicket:id="soyad"> </div>
</div>
<div>
<div>Çalıştığınız Firma</div>
<div><input type="text" wicket:id="firma"> </div>
</div>
<div>
<br>
<div><input type="submit" value="Tamam" > </div>
</div>
</div>
</form>
</body>
</html>
Yukarıdaki koda dikkat ederseniz sadece HTML kodlarından oluştuğunu göreceksiniz.
3-f - Kayit.java
Bu sınıfı tr.org.java.web paketi altında oluşturunuz.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tr.org.java.web;
import java.util.ArrayList;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.model.Model;
import org.apache.wicket.validation.validator.StringValidator.MaximumLengthValidator;
import tr.org.java.data.Musteri;
/**
*
* @author altuga
*/
public class Kayit extends WebPage {
public Kayit() {
MusteriForm form = new MusteriForm("form");
this.add(form);
}
}
class MusteriForm extends Form {
private final static ArrayList<Musteri> musteriler = new ArrayList<Musteri>();
TextField isim = null;
TextField soyad = null;
TextField firma = null;
public MusteriForm(final String formAdi) {
super(formAdi);
final FeedbackPanel feedback = new FeedbackPanel("feedback");
feedback.setOutputMarkupId(true);
add(feedback);
isim = new TextField("isim", new Model(""));
isim.setRequired(true).add(MaximumLengthValidator.maximumLength(10)).add(MaximumLengthValidator.minimumLength(3));
this.add(isim);
soyad = new TextField("soyad", new Model(""));
soyad.setRequired(true).add(MaximumLengthValidator.maximumLength(10)).add(MaximumLengthValidator.minimumLength(3));
this.add(soyad);
firma = new TextField("firma", new Model(""));
firma.setRequired(true).add(MaximumLengthValidator.maximumLength(10)).add(MaximumLengthValidator.minimumLength(3));
this.add(firma);
}
@Override
protected void onSubmit() {
Musteri musteri = new Musteri();
musteri.setIsim(isim.getModelObjectAsString());
musteri.setSoyad(soyad.getModelObjectAsString());
musteri.setFirma(firma.getModelObjectAsString());
musteriler.add(musteri);
}
}
Sonuç
4 - Modal Window uygulaması
Bu örnek Apache Wicket ile Modal window sisteminin nasıl yapıldığını göstermektedir.
Bunun öncesinde wicket 1.4 kütüphanesini www.jtpd.org/wicket14.rar adresinden indiriniz veya masa üzerindeki wicket14.rar dosyasının içerisindekileri bir klasöre açınız.
4-a - Gerekli Jar dosyalarının tanıtılması .
1-a daki gibi yapınız.
4-b - web.xml dosyasının düzeltilmesi
1-b deki gibi yapınız
4-c - tr.org.java.web paketini oluşturma
1-c deki gibi yapınız.
4-d - Uygulama.java
Bu sınıfı tr.org.java.web paketi altında oluşturunuz.
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package tr.org.java.web;
import javax.servlet.http.HttpServletRequest;
import org.apache.wicket.Page;
import org.apache.wicket.extensions.ajax.markup.html.form.upload.UploadWebRequest;
import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.protocol.http.WebRequest;
import org.apache.wicket.util.file.Folder;
/**
* Application class for org.apache.wicket.examples.upload example.
*
* @author Eelco Hillenius
*/
public class Uygulama extends WebApplication
{
/**
* Yapilandirici.
*/
public Uygulama()
{
}
/**
* @see org.apache.wicket.Application#getHomePage()
*/
@Override
public Class getHomePage()
{
return Basla.class;
}
/**
* @see org.apache.wicket.examples.WicketExampleApplication#init()
*/
@Override
protected void init()
{
// url rewriting
mountBookmarkablePage("/guzel-bir-uygulama", Basla.class);
}
}
Uygulama.java içerisinde URL rewriting işlemide yapılmaktadır. Dikkat.
4-e - Basla.html
Bu sınıfı tr.org.java.web paketi altında oluşturunuz.
<?xml version="1.0" encoding="UTF-8"?>
<html>
<head></head>
<body>
<div wicket:id="modal1"></div>
<a wicket:id="showModal1"> modal dialog sayfasını göster</a>
<br/><br/>
Bilgi : <span wicket:id="result"></span>
</body>
</html>
4-f - Basla.java
Bu sınıfı tr.org.java.web paketi altında oluşturunuz.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tr.org.java.web;
import org.apache.wicket.Page;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.PropertyModel;
/**
*
* @author Administrator
*/
public class Basla extends WebPage
{
/**
*/
public Basla()
{
final Label result;
add(result = new Label("result", new PropertyModel( this, "result")));
result.setOutputMarkupId(true); // guncel tutmak icin
/*
* First modal window
*/
final ModalWindow modal1;
add(modal1 = new ModalWindow("modal1"));
modal1.setPageMapName("modal-1");
modal1.setCookieName("modal-1");
modal1.setPageCreator(new ModalWindow.PageCreator()
{
public Page createPage()
{
return new Pencere1Sayfa(Basla.this, modal1);
}
});
modal1.setWindowClosedCallback(new ModalWindow.WindowClosedCallback()
{
public void onClose(AjaxRequestTarget target)
{
target.addComponent(result);
}
});
modal1.setCloseButtonCallback(new ModalWindow.CloseButtonCallback()
{
public boolean onCloseButtonClicked(AjaxRequestTarget target)
{
setResult("Modal window 1 - close button");
return true;
}
});
add(new AjaxLink("showModal1")
{
@Override
public void onClick(AjaxRequestTarget target)
{
modal1.show(target);
}
});
}
/**
* @return the result
*/
public String getResult()
{
return result;
}
/**
* @param result
* the result to set
*/
public void setResult(String result)
{
this.result = result;
}
private String result;
}
4-g - Pencere1Sayfa.html
Bu html dosyasını tr.org.java.web paketi altında oluşturunuz.
<?xml version="1.0" encoding="UTF-8"?>
<html>
<head>
<title>Bu bir modal penceresidir</title>
<style type="text/css">
body {
font-family: verdana, sans-serif;
font-size: 82%;
background-color: white;
}
</style>
</head>
<body>
Modal PENÇERE içeriği.
<p>
<a wicket:id="closeOK">"Güzellikle" kapat </a><br/>
<a wicket:id="closeCancel">"İsyankar" biçimde kapat </a><br/>
</p>
<p>
<div wicket:id="modal"></div>
<a wicket:id="open">Başka bir diyalog pençeresi aç</a>
</p>
<p>
<div>Başka bileşen ekleliyoruz, aşağıda dikkat.</div>
<div wicket:id="dateTimeField" />
</p>
</body>
</html>
4-h - Pencere1Sayfa.java
Bu sınıfı tr.org.java.web paketi altında oluşturunuz.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tr.org.java.web;
import org.apache.wicket.Page;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.extensions.yui.calendar.DateTimeField;
import org.apache.wicket.markup.html.WebPage;
/**
*
* @author Administrator
*/
public class Pencere1Sayfa extends WebPage{
/**
*
* @param modalWindowPage
* @param window
*/
public Pencere1Sayfa(final Basla modalWindowPage, final ModalWindow window)
{
add(new AjaxLink("closeOK")
{
@Override
public void onClick(AjaxRequestTarget target)
{
if (modalWindowPage != null) {
modalWindowPage.setResult("Modal penceresi 1 - Güzellikle kapatıldı");
}
window.close(target);
}
});
add(new AjaxLink("closeCancel")
{
@Override
public void onClick(AjaxRequestTarget target)
{
if (modalWindowPage != null)
modalWindowPage.setResult("Modal penceresi 1 -İsyankar biçimde kapatıldı");
window.close(target);
}
});
add(new DateTimeField("dateTimeField"));
final ModalWindow modal;
add(modal = new ModalWindow("modal"));
modal.setPageMapName("modal-2");
modal.setCookieName("modal window 2");
modal.setResizable(false);
modal.setInitialWidth(30);
modal.setInitialHeight(15);
modal.setWidthUnit("em");
modal.setHeightUnit("em");
modal.setCssClassName(ModalWindow.CSS_CLASS_GRAY);
modal.setPageCreator(new ModalWindow.PageCreator()
{
public Page createPage()
{
return new Pencere2Sayfa(modal);
}
});
modal.setCloseButtonCallback(new ModalWindow.CloseButtonCallback()
{
public boolean onCloseButtonClicked(AjaxRequestTarget target)
{
target.appendJavascript("alert(' Buradan kapatamazsın, git bağlantıya tıkla lütfen ')");
return false;
}
});
add(new AjaxLink("open")
{
@Override
public void onClick(AjaxRequestTarget target)
{
modal.show(target);
}
});
}
}
4-i - Pencere2Sayfa.html
Bu html dosyasını tr.org.java.web paketi altında oluşturunuz.
<?xml version="1.0" encoding="UTF-8"?>
<html>
<head>
<title>Modal dialog</title>
<style type="text/css">
body {
font-family: verdana, sans-serif;
font-size: 82%;
background-color: #FFFEC4;
}
</style>
</head>
<body>
Bu bir modal penceresidir ve başka bir modal pençeresinin içerisinden açılmıştır.
Boyutlarıyla (resizable) oynanamaz. Uzunlukları (em) birimiyle belirtilmiştir.
<p>
<a wicket:id="close">Sayfayı kapat</a><br/>
</body>
</html>
4-j - Pencere2Sayfa.java
Bu sınıfı tr.org.java.web paketi altında oluşturunuz.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tr.org.java.web;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.markup.html.WebPage;
/**
*
* @author Administrator
*/
public class Pencere2Sayfa extends WebPage{
/**
* @param window
*/
public Pencere2Sayfa(final ModalWindow window)
{
add(new AjaxLink("close")
{
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target)
{
window.close(target);
}
});
}
}
Sonuç
5 - CRUD uygulaması
Bu örnekte Create - Update - Delete uygulamasının Apache Wicket ile nasıl yapılacağı gösterilmektedir.
Bunun öncesinde wicket 1.4 kütüphanesini www.jtpd.org/wicket14.rar adresinden indiriniz veya masa üzerindeki wicket14.rar dosyasının içerisindekileri bir klasöre açınız.
5-a - Gerekli Jar dosyalarının tanıtılması .
1-a daki gibi yapınız.
5-b - web.xml dosyasının düzeltilmesi
1-b deki gibi yapınız
5-c - tr.org.java.web paketini oluşturma
1-c deki gibi yapınız.
5-d - Uygulama.java sınıfını oluşturmak.
Bu sınıfı tr.org.java.web paketi altında oluşturunuz.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tr.org.java.web;
import org.apache.log4j.Logger;
import org.apache.wicket.Page;
import org.apache.wicket.Request;
import org.apache.wicket.Response;
import org.apache.wicket.Session;
import org.apache.wicket.protocol.http.WebApplication;
/**
*
* @author Administrator
*/
public class Uygulama extends WebApplication{
/**
* Yapilandirici.
*/
public Uygulama()
{
}
/**
* @see org.apache.wicket.Application#getHomePage()
*/
@Override
public Class<? extends Page> getHomePage()
{
return KayitlarSayfasi.class;
}
/**
* @see org.apache.wicket.examples.WicketExampleApplication#init()
*/
@Override
protected void init()
{
// url rewriting yapmak bu kadar basit.
mountBookmarkablePage("/guzel-bir-uygulama", KayitlarSayfasi.class);
}
@Override
public final Session newSession(Request request, Response response) {
return new Oturum(request);
}
}
5-e - Oturum.java
Bu sınıfı tr.org.java.web paketi altında oluşturunuz.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tr.org.java.web;
import org.apache.wicket.Request;
import org.apache.wicket.protocol.http.WebSession;
import tr.org.java.dao.KisiBean;
import tr.org.java.data.Kisi;
/**
*
* @author Administrator
*/
public class Oturum extends WebSession {
private KisiBean kisiBean = new KisiBean();
private Kisi kisi = new Kisi();
public Kisi getKisi() {
return kisi;
}
public void setKisi(Kisi kisi) {
this.kisi = kisi;
}
public KisiBean getKisiBean() {
return kisiBean;
}
public void setKisiBean(KisiBean kisiBean) {
this.kisiBean = kisiBean;
}
public Oturum(Request request) {
super(request);
}
}
5-f- Kisi.java
Bu sınıfı tr.org.java.data paketi altında oluşturunuz.
package tr.org.java.data;
import java.io.Serializable;
public class Kisi implements Serializable {
private int id;
private String ad;
private String soyad;
public Kisi(int id, String ad, String soyad) {
this.id = id;
this.ad = ad;
this.soyad = soyad;
}
public Kisi() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAd() {
return ad;
}
public void setAd(String ad) {
this.ad = ad;
}
public String getSoyad() {
return soyad;
}
public void setSoyad(String soyad) {
this.soyad = soyad;
}
@Override
public boolean equals(Object obj) {
if (obj == null)
return false;
if (obj instanceof Kisi) {
Kisi kisi = (Kisi) obj;
if (this.id == kisi.getId())
return true;
}
return false;
}
}
5-g- KisiBean.java
Bu sınıfı tr.org.java.dao paketi altında oluşturunuz.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tr.org.java.dao;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import tr.org.java.data.Kisi;
public class KisiBean implements Serializable{
private List<Kisi> kisiler = new ArrayList<Kisi>();
private Kisi mevcutKisi = new Kisi();
/**
*
* @return Kisi listesini geri dondurur.
*/
public List<Kisi> getKisiler() {
// varsayilan liste
if (kisiler.isEmpty()) {
kisiler.add(new Kisi(1, "Mert", "Çalışkan"));
kisiler.add(new Kisi(2, "Ali Ozan", "Çil"));
kisiler.add(new Kisi(3, "Taner", "Diler"));
kisiler.add(new Kisi(4, "Altuğ Bilgin", "Altıntaş"));
kisiler.add(new Kisi(5, "Batuhan", "Kayhan"));
kisiler.add(new Kisi(6, "Çağatay", "Çivici"));
kisiler.add(new Kisi(7, "Yiğit", "Darçın"));
kisiler.add(new Kisi(8, "Kerem", "Koşaner"));
kisiler.add(new Kisi(9, "Emre", "Uzunoğlu"));
}
return kisiler;
}
public String ekle() {
mevcutKisi.setId(new Random().nextInt());
kisiler.add(mevcutKisi);
setMevcutKisi(new Kisi());
return "";
}
public String guncelle() {
for (Kisi kisi : kisiler) {
if (kisi.getId() == mevcutKisi.getId()) {
kisi = mevcutKisi;
}
}
setMevcutKisi(new Kisi());
return "";
}
public String sil() {
kisiler.remove(mevcutKisi);
return "";
}
public String mevcutKisiTemizle() {
setMevcutKisi(new Kisi());
return "";
}
public void setKisiler(List<Kisi> kisiler) {
this.kisiler = kisiler;
}
public Kisi getMevcutKisi() {
return mevcutKisi;
}
public void setMevcutKisi(Kisi mevcutKisi) {
this.mevcutKisi = mevcutKisi;
}
}
5-i- KayitlarSayfasi.html
Bu html dosyasını tr.org.java.web paketi altında oluşturunuz.
İşin tüm döndüğü sayfa burası.
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns:wicket="http://wicket.apache.org/">
<wicket:head>
<link wicket:id="css" rel="Stylesheet" type="text/css" href="/wicket-pratikler/stil/jtpd.css"/>
</wicket:head>
<body>
<table id="izgara" wicket:id="veri" width="80%">
<thead>
<tr>
<th colspan="3" align="center">Kişiler
<div wicket:id="modalyeni"></div>
<a href="#" wicket:id="yeni"
title="Yeni Kayıt" >
<img src="/wicket-pratikler/imaj/ikon/yeni.gif" border="0"></a>
</th>
</tr>
<tr>
<th>Ad</th> <th>Soyad</th> <th>İşlem</th>
</tr>
</thead>
<tbody >
<tr wicket:id="rows">
<td wicket:id="ad">ad test</td>
<td wicket:id="soyad">soyad test</td>
<td>
<div wicket:id="modal"></div>
<a href="#" title="Güncelle" wicket:id="guncelle">
<img src="/wicket-pratikler/imaj/ikon/guncelle.gif" border="0"></a>
<a href="#" title="Sil" wicket:id="sil">
<img src="/wicket-pratikler/imaj/ikon/sil.gif" border="0"></a>
</td>
</tr>
</tbody>
<tfoot>
<tr><td colspan="3" align="center" wicket:id="navigator"></td></tr>
</tfoot>
</table>
</body>
</html>
5-j- KayitlarSayfasi.java
Bu sınıfı tr.org.java.web paketi altında oluşturunuz.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tr.org.java.web;
import java.util.List;
import org.apache.wicket.Session;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.ajax.markup.html.navigation.paging.AjaxPagingNavigator;
import org.apache.wicket.behavior.SimpleAttributeModifier;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.PageableListView;
import tr.org.java.data.Kisi;
/**
*
* @author Administrator
*/
public class KayitlarSayfasi extends WebPage {
private WebMarkupContainer datacontainer = null;
public KayitlarSayfasi() {
WebMarkupContainer css = new WebMarkupContainer("css");
add(css);
//veri tutacagi
datacontainer = new WebMarkupContainer("veri");
datacontainer.setOutputMarkupId(true);
add(datacontainer);
final ModalWindow modal = new ModalWindow("modalyeni");
datacontainer.add(modal);
datacontainer.add(new AjaxLink("yeni") {
@Override
public void onClick(AjaxRequestTarget target) {
modal.setContent(new KayitPanel(modal.getContentId(), modal, 0));
modal.setResizable(false);
modal.setInitialWidth(30);
modal.setInitialHeight(15);
modal.setWidthUnit("em");
modal.setHeightUnit("em");
modal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
// tabloyu guncelle
public void onClose(AjaxRequestTarget target) {
target.addComponent(datacontainer);
}
});
modal.show(target);
}
});
// KisiBean icersinden kisi listesini al
final Oturum oturum = (Oturum) Session.get();
final List kisiler = (oturum.getKisiBean().getKisiler());
// ekrana yapistir, 10 ar 10 ar listeleyecek
PageableListView listview = new PageableListView("rows", kisiler, 10) {
@Override
protected void populateItem(ListItem item) {
final Kisi kisi = (Kisi) item.getModelObject();
item.add(new Label("ad", kisi.getAd()));
item.add(new Label("soyad", kisi.getSoyad()));
//guncelleme baglantisina(link) tiklandiginda ne olacagini buraya yaziyoruz
final ModalWindow modal = new ModalWindow("modal");
item.add(modal);
oturum.setKisi(kisi);
modal.setContent(new KayitPanel(modal.getContentId(), modal));
modal.setResizable(false);
modal.setInitialWidth(30);
modal.setInitialHeight(15);
modal.setWidthUnit("em");
modal.setHeightUnit("em");
modal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
public void onClose(AjaxRequestTarget target) {
target.addComponent(datacontainer);
}
});
item.add(new AjaxLink("guncelle") {
@Override
public void onClick(AjaxRequestTarget target) {
oturum.setKisi(kisi);
modal.show(target);
}
});
// ---
//sil baglantisina(link) tiklandiginda ne olacagini buraya yaziyoruz
Link silBaglantisi = new Link("sil") {
@Override
public void onClick() {
kisiler.remove(kisi);
}
};
silBaglantisi.add(new SimpleAttributeModifier("onclick", "return confirm('emin misin?');"));
item.add(silBaglantisi);
// ---
}
};
datacontainer.add(listview);
datacontainer.add(new AjaxPagingNavigator("navigator", listview));
datacontainer.setVersioned(false);
}
}
Bu html dosyasını tr.org.java.web paketi altında oluşturunuz.
<?xml version="1.0" encoding="UTF-8"?>
<wicket:panel>
<head></head>
<body>
<form wicket:id="basit-form">
<table id="panel" width="20%">
<tbody>
<tr>
<td><b>Ad</b></td>
<td><input wicket:id="ad" type="text" name="Ad"></td>
</tr>
<tr>
<td><b>Soyad</b></td>
<td><input wicket:id="soyad" type="text" name="Soyad"></td>
</tr>
<tr>
<td> <input wicket:id="submit" type="submit" name="Tamam" value="Tamam"> </td>
<td> <input wicket:id="iptal" type="reset" name="iptal" value="İptal"> </td>
</tr>
</tbody>
</table>
</form>
</body>
</wicket:panel>
5-L- KayitPanel.java dosyasını oluşturmak.
Bu sınıfı tr.org.java.web paketi altında oluşturunuz.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tr.org.java.web;
import org.apache.wicket.Session;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.PropertyModel;
import tr.org.java.dao.KisiBean;
import tr.org.java.data.Kisi;
/**
* @author Administrator
*/
public class KayitPanel extends Panel {
public KayitPanel(String id, ModalWindow window, int yeni) {
super(id);
BasitForm basitForm = new BasitForm("basit-form", window, yeni);
this.add(basitForm);
}
public KayitPanel(String id, ModalWindow window) {
super(id);
BasitForm basitForm = new BasitForm("basit-form", window);
this.add(basitForm);
}
}
/**
* @author ABA
*/
class BasitForm extends Form {
TextField ad = null;
TextField soyad = null;
Oturum oturum = (Oturum) Session.get();
Kisi kisi = null;
public BasitForm(String id, final ModalWindow window) {
super(id);
kisi = oturum.getKisi();
ad = new TextField("ad", new PropertyModel(kisi, "ad"));
soyad = new TextField("soyad", new PropertyModel(kisi, "soyad"));
this.add(ad);
this.add(soyad);
this.add(new AjaxButton("submit", this) {
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
KisiBean kisiBean = oturum.getKisiBean();
// kisi guncelleme
Kisi kisiGuncelle = new Kisi(kisi.getId(), ad.getModelObject().toString(),
soyad.getModelObject().toString());
kisiBean.setMevcutKisi(kisiGuncelle);
kisiBean.guncelle();
// islem tamamlaninca pencereyi kapat
window.close(target);
}
});
this.add(new AjaxButton("iptal", this) {
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
window.close(target);
}
});
}
public BasitForm(String id, final ModalWindow window, final int yeni) {
super(id);
kisi = new Kisi();
ad = new TextField("ad", new PropertyModel(kisi, "ad"));
soyad = new TextField("soyad", new PropertyModel(kisi, "soyad"));
this.add(ad);
this.add(soyad);
this.add(new AjaxButton("submit", this) {
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
KisiBean kisiBean = oturum.getKisiBean();
// yeni kisi ekleme
Kisi yeniKisi = new Kisi(0, ad.getModelObject().toString(),
soyad.getModelObject().toString());
kisiBean.setMevcutKisi(yeniKisi);
kisiBean.ekle();
// islem tamamlaninca pencereyi kapat
window.close(target);
}
});
this.add(new AjaxButton("iptal", this) {
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
window.close(target);
}
});
}
}
Sonuç
Yeni Sayfa Oluştur
Tartışma
ya da