1.表格内的行支持拖拽调节顺序(RCP,SWT,插件开发【qq群】336280109)
/**
* @param tv
* 表格内的行支持拖动调节顺序
*/
private void supportDragDrop(final TableViewer tv) {
final Transfer[] transfers = new Transfer[] { LocalSelectionTransfer.getTransfer() };
// 拖
final DragSource dragSource = new DragSource(tv.getTable(), DND.DROP_MOVE);
dragSource.setTransfer(transfers);
dragSource.addDragListener(new DragSourceAdapter() {
@Override
public void dragSetData(final DragSourceEvent event) {
LocalSelectionTransfer.getTransfer().setSelection(tv.getSelection());
}
});
// 放
final DropTarget dropTarget = new DropTarget(tv.getTable(), DND.DROP_MOVE);
dropTarget.setTransfer(transfers);
dropTarget.addDropListener(new DropTargetAdapter() {
@Override
public void drop(final DropTargetEvent event) {
final int itemCount = input.size();
int dropIndex = itemCount;
if (event.item != null) {
final TableItem tableItem = (TableItem) event.item;
for (int i = 0; i < tv.getTable().getItemCount(); i++) {
if (tv.getTable().getItem(i) == tableItem) {
dropIndex = i;
break;
}
}
}
final int dragIndex = tv.getTable().getSelectionIndex();
if (dragIndex < itemCount && dropIndex < itemCount && dragIndex < dropIndex) {// 上往下拖
final Variable vDrag = input.get(dragIndex);
input.add(dropIndex + 1, vDrag);
input.remove(dragIndex);
tv.refresh();
} else if (dragIndex < itemCount && dropIndex < itemCount && dragIndex > dropIndex) {// 下往上拖
final Variable vDrag = input.get(dragIndex);
input.remove(dragIndex);
input.add(dropIndex, vDrag);
tv.refresh();
}
}
});
}
2.
3.