У меня проблема с перемещением ячейки в таблице.
У кого-нибудь есть идеи, как перемещать строки в таблице SWT? Я хочу изменить заказ пользователем
взаимодействие и мне не нужно сортировать записи.
Я хотел бы добиться этого, перемещая выбранную строку вверх или вниз с помощью кнопки или перемещая элементы таблицы с помощью перетаскивания.
Я использую eclips 3.6 и java 1.6
Это то, что я пытаюсь с помощью перетаскивания, но не работает:
Transfer[] types = new Transfer[] { LocalSelectionTransfer.getTransfer()};
DragSource source = new DragSource(table, DND.DROP_MOVE );
source.setTransfer(types);
source.addDragListener(new DragSourceAdapter() {
public void dragSetData(DragSourceEvent event) {
// Get the selected items in the drag source
DragSource ds = (DragSource) event.widget;
Table table = (Table) ds.getControl();
TableItem[] selection = table.getSelection();
System.out.println(" drag "+ selection[0].getText());
}
});
DropTarget target = new DropTarget(table, DND.DROP_MOVE | DND.DROP_DEFAULT);
target.setTransfer(types);
TableViewer tb = new TableViewer(table);
tb.addDropSupport(DND.DROP_MOVE, types, new ViewerDropAdapter(viewer) {
@Override
public boolean validateDrop(Object target, int operation,
TransferData transferType) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean performDrop(Object data) {
// TODO Auto-generated method stub
return false;
}
});
У предмета, который я хотел бы переместить, больше столбца.
Ошибка, которой я стал:
org.eclipse.swt.SWTError: Невозможно инициализировать удаление
Когда мне сообщат, в каком новом элементе (индекс в таблице) перемещен элемент, этого будет достаточно, тогда я смогу изменить Список своих объектов и перерисовать таблицу.
Есть идеи, как решить эту проблему?
С уважением,
Haythem