2011-03-10 3 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, добавьте beforeChangeListener к ice:panelPositioned элемент. Затем этот слушатель должен позвонить event.cancel(), если event.getType() != - PanelPositionedEvent. TYPE_MOVE и event.getIndex() и event.getOldIndex() оба больше 1. Если это движение, то оно находится внутри панели. add/delete перемещаются между панелями.

Для ледовых покрытий 1.8.2 (не используется 2.0) вам необходимо добавить слушателя к элементу ice:panelPositioned. Нет beforeChangeListener. вам понадобится список и текущий список (две копии). Оба инициализируют одни и те же элементы при инициализации компонента bean. Слушатель, если перемещение - задано перед списком в текущий список, в противном случае устанавливает текущий список перед списком. Должна быть копия, а не ссылка.

Смежные вопросы