如何从gwt-dnd获取放置目标

时间:2011-02-22 17:50:30

标签: gwt drag-and-drop

我有一个包含两行的垂直面板,分别是第1行和第2行 row包含几个小部件,现在我需要允许用户拖动 并在第1行和第2行之间删除小部件,这是我做的

   _handler = new DragHandler() { .... }; 
   _widgetDragController = new PickupDragController(boundaryPanel, false);
   _widgetDragController.setBehaviorMultipleSelection(false); 
   _widgetDragController.addDragHandler(_handler);

然后为每一行创建面板以保存小部件并分配一个放置控制器:

   VerticalPanelWithSpacer vPanel = new VerticalPanelWithSpacer(); 

   // initialize a widget drop controller for the current column VerticalPanelDropController

   widgetDropController = new VerticalPanelDropController(vPanel);   
   _widgetDragController.registerDropController(widgetDropController); 

当我在第1行和第2行之间移动小部件时,如何找到放置目标(即哪一行)?是否有任何方式_widgetDragController可以告诉哪个丢弃控制器参与,然后我可以从drop控制器进一步调用getDropTarget()?

1 个答案:

答案 0 :(得分:0)

您可以在VerticalPanelDropController.onDrop(DragContext)中实现该功能,当用户放置该drop控制器时会调用该功能。 drop控制器知道它所属的VerticalPanelWithSpacer,dragContext包含诸如x,y坐标之类的信息。您可以使用此信息(y坐标和窗口小部件的坐标)来计算应添加的行(尽管您可能需要考虑滚动等,这使得它更棘手)。希望有所帮助: - )