.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> .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }   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: Tags: | Categories: JAVA

Aralık 0925

Wicket - Login

Wicket ile karşılaştığım ilk sorunlardan biri: Sayfa içerisinde Submit işlemi. Aslında çok kolay gibi bir işlemmiş (Ben de yaptıktan sonra öğrendim). Bu işlemi bir Login sayfası üzerinde göstermek istedim sizlere. Zaten interaktif bir web projesinde en başta olması gereken durumdur Login.html sayfası. Html sayfasını aşağıda olduğu gibi oluşturuyoruz: <form wicket:id="loginForm"> <table> <tr> <td>TC Kimlik No: </td> <td><input type="text" wicket:id="username"/></td> </tr> <tr> <td>Şifre: </td> <td><input type="password" wicket:id="password"/></td> </tr> <tr> <td></td> <td><input type="submit" wicket:id="submitButton" value="Giriş"/></td> </tr> </table> </form> .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } Şimdi sıra geldi bu sayfa arkasında çalışacak olan Java kodlarını yazmaya. Onlar içinde aşağıdakileri yazmak yeterli olacaktır: private String username; private String password; public Login() { super(); RequiredTextField userNameField = new RequiredTextField("username", new PropertyModel(this, "username")); PasswordTextField passField = new PasswordTextField("password", new PropertyModel(this, "password")); passField.setResetPassword(false); Form form = new LoginForm("loginForm"); form.add(userNameField); form.add(passField); form.add(new Button("submitButton") { @Override public void onSubmit() { String username = Login.this.getUserName(); String password = Login.this.getPassword(); //VeriTabanı bağlantıları ve kontrolleri }); add(form); } class LoginForm extends Form { public LoginForm(String id) { super(id); } } protected String getUserName() { return username; } protected String getPassword() { return password; } .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } Yukarıda yazdığımız tüm kod parçalarının bütünü aşağıdaki resimdeki gibi kullanıcı karşısına çıkmaktadır: Java kısmında yazılan PropertyModel kod parçasının ne işe yaradığına ileriki yazılarımda değineceğim. Tags: | Categories: JAVA

Aralık 0925

Wicket Nedir ?

Daha önceki yazımda bahsettiğim gibi bu dönem içerisinde aldığım bir dersin dönem projesini yapmak için Wicket adındaki bu frameworkü tanımam, anlamam ve kullanmam gerekiyordu. Wicket’ı tanıdık, öğrendik, hazmettik ve sonunda projemizi teslim ettik.   Peki, bu Wicket nedir? Çok önemli bir soru. Wicket hakkında herhangi bir bilgisi olmayanlar gibi, bu projeye başlarken ben de “buda ne ?” sorusunu kendime sormuştum. Wicket kısaca; Java programlama dili için geliştirilmiş bir Framework. Web uygulamaları geliştirmek amacıyla kullanılıyor. Bu durumu ilk öğrendiğimde ASP.NET platformu kullanarak proje geliştirmiş olmamın bana çok yardımcı olacağını düşünmüştüm. Ancak yanılışım. Wicket, Web projeleri geliştirmek için kullanılan frameworklerin atası durumundaymış. Microsoft teknolojilerinde gördüğüm birçok olanağı burada bulamadım. (Bu güne kadar, ciddi anlamda yaptığım projelerde sadece .NET platformunu kullanmamdan ötürü ASP.NET ile karşılaştırma yapıyorum.) Wicket kullanımı esnasında çok sıkıntı çektim (Özellikle Türkçe kaynak konusunda). Projede kullandığım kodları ve karşılaştığım sorunları burada sizlerle tek tek paylaşacağım. Ana Sayfa: Apache Wicket Tags: | Categories: JAVA