.NET teknolojilerinde en çok kullanılan özelliklerin arasında Repeater gelir. Kullanması da çok basittir. Kaynak veriyi verirsiniz, gerekli parametreleri girersiniz, her şey kendiliğinden olur biter.

Bu kolaylıktan yola çıkarak Wicket içerisinde Repeater adında bir component aramaya başladım, ve buldum: org.apache.wicket.markup.repeater.RepeatingView

İnternette yaptığım araştırmalarda bu aracın kullanımına dair çok karışık (en azından bana öyle geldi) bilgilere ulaştım. Evirdim çevirdim, ancak bir türlü kullanmayı beceremedim. Keza GridView i de öyle. Proje geliştirenler bilir; GridView, Repeater ın özelleşmiş bir versiyonudur.

Durumu kara kara düşünürken bir anda karşıma PageableListView denen şahane bir component çıktı. Her derdime çare oldu, yaralarımı iyileştirdi, projemi yeniden ayağa kaldırdı.

Bu komponent, org.apache.wicket.markup.html.list.PageableListView kütüphanesi altında yer almakta. Sınıfımızı import ettikten sonra kodlarımızı yazmaya başlayabiliriz.

Öncelikle html sayfamızı oluşturalım:

<div>
    <table>
        <tr>
            <th>Plaka</th>
            <th>Şasi No</th>
            <th>Sahip</th>
            <th>Durum</th>
            <th>Düzenle</th>
            <th>Sil</th>
        </tr>
        <tr wicket:id="carList">
            <td><span wicket:id="plaque">[plaque]</span></td>
            <td><span wicket:id="sasi">[sasi]</span></td>
            <td><span wicket:id="ownerNameSurname">[owner]</span></td>
            <td><span wicket:id="status">[status]</span></td>
            <td><a href="#" wicket:id="edit">Düzenle</a></td>
            <td><a href="#" wicket:id="delete" >Sil</a></td>
        </tr>
    </table>
</div>
<div wicket:id="navigator"></div>

 

Sayfamızın html kodları bundan oluşmakta. Html kısmında dikkat edilmesi gereken nokta: PageableListView göstergemizi göstereceğimiz html componentinin wicket:id değerini bir tablonun <tr> değerinin içine attribute olarak eklemek. Mesela <table> etiketinin içine eklenmiş olsaydı her satır için en baştan bir tablo oluşturması gerekecekti. Listeleme esnasında da gerçekten göze hoş görülmeyen bir durum oluşuyor. 

Şimdi java kodlarını yazmaya başlayalım:

PageableListView lw = new PageableListView("carList", liste, 5) {

   @Override
   protected void populateItem(ListItem item) {
      final Cars car = (Cars) item.getModelObject();
      
item.add(new Label("plaque", car.getPlaque()));
item.add(new Label("sasi", car.getPlateTag()));
item.add(new Label("ownerNameSurname", car.getOwner().getName() + " " +
car.getOwner().getSurname()));
if (car.getStatus() == 0) { item.add(new Label("status", "İşleme alınmayı bekliyor")); } else if (car.getStatus() == 1) { item.add(new Label("status", "İşleme girdi")); } else if (car.getStatus() == 2) { item.add(new Label("status", "İşlem bitti/Teslim edilebilir")); } else { item.add(new Label("status", "Araç sahibinde")); }
item.add(new Link("edit") { @Override public void onClick() { } }); item.add(new Link("delete") { @Override public void onClick() { car.DeleteCar(); }); }; add(lw);







MarkupContainer carListNavigator = add(new PagingNavigator("navigator", lw));

Şimdi java kodları hakınca biraz konuşalım.

Yukarıda görüldüğü gibi öncelikle PageableListView nesnesi yaratıyoruz. “carlist” html dosyasındaki karşılığının ismi, “liste” verilerimizin tutulduğu List<Cars> cinsinden bir liste. En sondaki 5 sayısı da bir sayfadana kaç tane satırdan oluşacağını bize bildiriyor. Nesne yaratıldığında içinde yer alan PopulateItem methodunu otomatik olarak NetBeans ekliyor. Netbaens in yararını gördüğüm ilk nokta.

Daha sonra bu nesne içerisine teker teker diğer nesnelerimizi ekliyoruz. (PopulateItem içinde)

PagingNavigator ise sayfalar arasında geçimizi sağlaycak. Oluşturması sadece 1 satır, kullanması çok eğlenceli…

Sonuçta karşımıza çok güzel bir sonuç çıkıyor:

pageablelistview

Tags: | Categories: JAVA