15 Temmuz 2010 Perşembe

ExtJs.Window için Sürükle Bırak (Drag'n Drop) Düzeltmesi

Bir süredir ExtJS ve diğer bazı JS kütüphanelerinden bolca kullanıldığı bir ajax ekranı ile uğraşmaktaydım. Şöyle bir problemle karşılaştım, ekranda bir çok panel açık olduğunda bir Ext.Window açtığımızda Ext.Window'u sürükle bırak yaparken aşağıdaki ekranlarla da etkileşim sürdüğü için takılmalar oluyordu.

Bu sorunu Ext.Window'u "modal pane" olarak yaparak (modal:true) çözebilirdim ama window açıkken arka plan ile etkileşimi kaybetmek de istemiyordum. Bu nedenle ben de şöyle bir çözüm düşündüm: Ext.Window sürükle bırak yapılırken arka plan modal pane haline gelsin (opacity verilen bir mask div'i sayesinde), sürükle bırak tamamlanınca da eski haline dönsün.

    ...
    <div class="ext-el-mask" id="ext-modal-mask" 
    style="display: none; width: 100%; height: 100%; z-index: 9000;"></div>
    ...
    var originalStartDrag = Ext.Window.DD.prototype.startDrag;
    var originalEndDrag = Ext.Window.DD.prototype.endDrag;
    Ext.override( Ext.Window.DD, {
        startDrag: function() {
    Ext.get('ext-modal-mask').show();
    originalStartDrag.apply(this, arguments);
        },
        endDrag: function() {
         Ext.get('ext-modal-mask').hide();
         originalEndDrag.apply(this, arguments);
        }
    } );

2 Temmuz 2010 Cuma

JSF Component Binding

JSF te ön yüzde kullandığımız nesnelerin sunucu sınıflarındaki karşılıklarını oluşturmak için binding özelliği kullanılır.
Örneğin aşağıda bir input nesnesi bulunmakta ve kayitDemo beanindeki adNesnesi ne bind edilmekte.
    <h:inputText value="#{kayitDemo.ad}" binding="#{kayitDemo.adNesnesi}"/>
    <h:commandButton action="#{kayitDemo.kaydet}" value="Kaydet" />
Bu durumda adNesnesi ne aşağıdaki gibi tüm özellikleri ile erişebiliriz.
    public class KayitDemo {
     private String ad;
     private HtmlInputText adNesnesi;
     public void kaydet() {
      System.out.println("ad = " + ad);
      adNesnesi.setMaxlength(6);
      adNesnesi.setReadonly(true);
      adNesnesi.setValue("Ahmet");
     }
     …
    }
Kullanabileceğiniz nesne tipleri listesi aşağıda bulunmaktadır.
HtmlInputHidden
HtmlInputSecret
HtmlInputText
HtmlInputTextarea
HtmlOutputFormat
HtmlSelectManyListbox
HtmlSelectManyMenu
HtmlSelectOneListbox
HtmlSelectOneMenu
HtmlSelectOneRadio
HtmlOutputLabel
HtmlOutputLink
HtmlOutputText
HtmlSelectBooleanCheckbox
HtmlSelectManyCheckbox
UIInput
UIOutput
UISelectBoolean
UISelectMany
UISelectOne


Sürekli işe yarar bir şey olduğu için elimin altında bulunmasını istedim.