为同一视图初始化多拖放支持

initializing multiple drop support for the same view

如何在具有不同传输类型的一个视图中使用两种不同的拖放支持?

    int srcOps = DND.DROP_MOVE | DND.DROP_COPY;
    Transfer[] dragDropTransfers = new Transfer[] { myTransferType1.getInstance() };
    this.getTreeViewer().addDragSupport(srcOps, dragDropTransfers, new OverviewDragSourceAdapter(this));
    this.getTreeViewer().addDropSupport(srcOps, dragDropTransfers, new OverviewDropAdapter(this));
    dragDropTransfers = new Transfer[] { myTransferType2.getInstance() };
    this.getTreeViewer().addDropSupport(srcOps, dragDropTransfers, new AddDropAdapter(this));

它给出 org.eclipse.swt.SWTError:无法初始化 Drop。

内部 addDropSupport 使用 DropTargetDropTarget 的 JavaDoc 说:

ERROR_CANNOT_INIT_DROP - unable to initiate drop target; this will occur if more than one drop target is created for a control or if the operating system will not allow the creation of the drop target

因此您不能多次调用 addDropSupport。你将不得不写一个 DropTargetListener