GWT Drag and Drop внутри дерева и между сетками дерева

Мы используем 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.

Есть ли идея обойти это? Заранее большое спасибо.


person Nuno Gonçalves    schedule 02.10.2012    source источник


Ответы (1)


См. мой ответ на ваш вопрос здесь

person jdramaix    schedule 02.10.2012