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;
    }

}

2-e - Hosgeldin.html 

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);

        
    }
}

5-k- KayitPanel.html 

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ç 





Tartışma




ya da
CAPTCHA Images