Мы используем 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-plugins.
Есть ли идея обойти это? Заранее большое спасибо.