Vaadin 8 Drag & Drop - как переключать элементы в вертикальном расположении?

Мне нужно выполнить очень простое перетаскивание панелей в вертикальном расположении.

  • каждая панель устанавливается как DragSourceExtension
  • вертикальный макет установлен как DropTargetExtension

Теперь, когда у меня есть несколько панелей в вертикальном расположении, и я перетаскиваю панель над другой и опускаю ее, запускается мой dropListener, и здесь я не уверен, как управлять тем, что мне нужно. Мне просто нужно, чтобы панель перемещалась в нужное место в зависимости от указателя мыши. Может ли кто-нибудь поделиться кодом, как это сделать с помощью Vaadin 8.2? Должен ли я переключать панели вручную? Если да, то как я могу определить место, на которое указывает мышь в вертикальной компоновке?

dropTarget.addDropListener(event -> {
  Optional<AbstractComponent> dragSource = event.getDragSourceComponent();
  if (dragSource.isPresent() ) {
      # I can remove dragged panel from layout using this code
      fieldsLayout.removeComponent(dragSource.get());

      ## how to place dragged panel into proper place ??

  }
});

person David Marko    schedule 17.01.2018    source источник


Ответы (1)


Не уверен, что это перебор, но в Vaadin 7 мы всегда использовали аддон DragDropLayouts для упрощения кода. Мы также недавно использовали его в проектах Vaadin 8, и он просто работает;)

https://vaadin.com/directory/component/dragdroplayouts

person André Schild    schedule 17.01.2018