2011-03-10 52 views
1

如何約束PanelPositioned的元素,以便它們只能在當前面板內拖動?我有兩個不同數據類型的垂直列表,一個在另一個之上。兩者都使用一個PanelPositioned以允許拖動&降重新排序,但元件可以上下拖動到另一個面板,生成誤差定位互動的兩個ICEfaces面板

<ice:panelPositioned id="dragPanel1" var="dataType1var" 
    value="#{displayBean.dataType1List}" constraint="vertical"> 
    <ice:panelGroup style="cursor:move;"> 

    </ice:panelGroup> 
</ice:panelPositioned> 

<ice:panelPositioned id="dragPanel2" var="dataType2var" 
    value="#{displayBean.dataType2List}" constraint="vertical"> 
    <ice:panelGroup style="cursor:move;"> 

    </ice:panelGroup> 
</ice:panelPositioned> 

回答

1

對於ICEfaces的3.0,添加一個beforeChangeListenerice:panelPositioned元件。如果event.getType() !=PanelPositionedEvent,這位聽衆應該打電話event.cancel()TYPE_MOVEevent.getIndex()event.getOldIndex()都大於1.如果是移動,那麼它在面板內。添加/刪除正在面板之間移動。

對於icefaces 1.8.2(neve使用2.0),您需要添加一個偵聽器到ice:panelPositioned元素。沒有beforeChangeListener。你將需要一份清單和當前清單(兩份)。初始化輔助bean時,都初始化爲相同的元素。監聽器,如果移動 - 在列表之前設置爲當前列表,否則將當前列表設置爲列表之前。必須是副本,而不是參考。