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
or
Sayfayı Düzenle
Sürümler
Compare Result