2011-03-10 51 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时,都初始化为相同的元素。监听器,如果移动 - 在列表之前设置为当前列表,否则将当前列表设置为列表之前。必须是副本,而不是参考。