我在GridTable查看器中添加了DragListener,在nat表中添加了DropListener,但是当我选择任何行网格查看器并将其放置在nat表中时;所选数据没有丢失代码片段附在下面
在GridTableViewer中拖动源侦听器
Transfer[] transferTypes = new Transfer[] { LocalSelectionTransfer.getTransfer() }; this.gridTableViewer.addDragSupport(DND.DROP_COPY | DND.DROP_MOVE, transferTypes, new DragSourceListener() { @Override public void dragStart(final DragSourceEvent event) { System.out.println(transferTypes); event.doit = !ShowListDialog.this.gridTableViewer.getStructuredSelection().isEmpty(); } @Override public void dragSetData(final DragSourceEvent event) { if(LocalSelectionTransfer.getTransfer().isSupportedType(event.dataType)) { LocalSelectionTransfer.getTransfer() .setSelection(ShowListDialog.this.gridTableViewer.getStructuredSelection()); LocalSelectionTransfer.getTransfer().setSelectionSetTime(event.time & 0xFFFF); } } @Override public void dragFinished(final DragSourceEvent dragsourceevent) { // LocalSelectionTransfer.getTransfer().setSelection(null); // LocalSelectionTransfer.getTransfer().setSelectionSetTime(0); } });
NatTable中的DropTargetListener
Transfer[] transferTypes = new Transfer[] { LocalSelectionTransfer.getTransfer() };
this.natTable.addDropSupport(DND.DROP_COPY | DND.DROP_MOVE, transferTypes, new DropTargetListener() {
@Override
public void dragEnter(final DropTargetEvent event) {
event.detail = DND.DROP_COPY | DND.DROP_MOVE;
event.currentDataType = event.dataTypes[0];
}
@Override
public void dragOperationChanged(final DropTargetEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void dragOver(final DropTargetEvent event) {
event.detail = DND.DROP_COPY | DND.DROP_MOVE;
}
@Override
public void drop(final DropTargetEvent event) {
StructuredSelection structuredSelection = (StructuredSelection) event.data;
final Object selectedElement = structuredSelection.getFirstElement();
// for (Object selectedElement : structuredSelection.toList()) {
if (selectedElement instanceof String) {
}
}
@Override
public void dropAccept(final DropTargetEvent event) {
}
@Override
public void dragLeave(final DropTargetEvent droptargetevent) {
// TODO Auto-generated method stub
}
});
我在GridTable查看器中添加了DragListener,在nat表中添加了DropListener,但是当我选择任何行网格查看器并将其放置在nat表中时;所选数据没有丢失附加了代码段...
LocalSelectionTransfer
的Javadoc以某种方式进行了解释: