GWT Перетаскивание внутри дерева и между сетками деревьев
Мы используем GWT, и нам необходимо создать две сетки дерева перетаскивания. Каждое дерево содержит родителей и детей (максимум два уровня на данный момент). Вот что нам нужно сделать:
Случаи применения
- Перетащите родителя из одной древовидной сетки в другую.
- Перетащите родителя 1 к родителю 2 (1 станет ребенком от 2, а все дети 1 станут детьми от 2) -> пожалуйста, не спрашивайте:D
- Перетащите ребенка от одного родителя к другому (в пределах одной и той же древовидной сетки)
- Перетащите дочерний элемент на верхний уровень в той же сетке дерева (дочерний элемент станет родительским)
- Перетащите ребенка в другую сетку деревьев с двумя вариантами
1 - Верхний уровень - ребенок из дерева 1 станет родителем для дерева 2.
2 - Родитель - Дочерний элемент из дерева 1 станет дочерним от родительского элемента в сетке дерева 2.
Если это не имеет особого смысла, у нас еще нет полного контекста, так что это все, что мы знаем.
проблема
Мы можем перетащить на ту же сетку дерева. Если строка, в которую мы хотим перетащить ячейку, скрыта, мы устанавливаем прокрутку в значение true, чтобы сетка прокручивалась, когда пользователь перетаскивал ее внутрь. Примерно так:
private void setDraggableOptions(DragAndDropColumn<?, ?> column) {
// retrieve draggableOptions on the column
DraggableOptions draggableOptions = column.getDraggableOptions();
draggableOptions.setScroll(true);
// use template to construct the helper. The content of the div will be set
// after
draggableOptions.setHelper(HelperType.CLONE);
// opacity of the helper
draggableOptions.setOpacity((float) 0.8);
// cursor to use during the drag operation
draggableOptions.setCursor(Cursor.MOVE);
// set the revert option
draggableOptions.setRevert(RevertOption.ON_INVALID_DROP);
// prevents dragging when user click on the category drop-down list
draggableOptions.setCancel("select");
column.setDraggableOptions(draggableOptions);
}
Теперь проблема в том, что, установив древовидную сетку для прокрутки, пользователь никогда не сможет перетащить объект во второе дерево, поскольку прокрутка будет пытаться держать объект всегда внутри сетки.
Мы используем gwtquery-плагины
Есть ли идея обойти это? Заранее большое спасибо.