List of usage examples for org.eclipse.jface.util LocalSelectionTransfer setSelection
public void setSelection(ISelection s)
From source file:bndtools.views.ImportsExportsView.java
License:Open Source License
@Override public void createPartControl(Composite parent) { this.display = parent.getDisplay(); tree = new Tree(parent, SWT.FULL_SELECTION | SWT.MULTI); tree.setHeaderVisible(true);// w w w. j a v a2 s .co m tree.setLinesVisible(true); TreeColumn col; col = new TreeColumn(tree, SWT.NONE); col.setText("Package"); col.setWidth(400); col = new TreeColumn(tree, SWT.NONE); col.setText("Attribs"); col.setWidth(100); viewer = new TreeViewer(tree); viewer.setContentProvider(new ImportsExportsTreeContentProvider()); viewer.setSorter(new ImportsAndExportsViewerSorter()); viewer.setLabelProvider(new ImportsExportsTreeLabelProvider()); viewer.setAutoExpandLevel(2); hideSelfImportsFilter = new ViewerFilter() { @Override public boolean select(Viewer viewer, Object parentElement, Object element) { if (element instanceof ImportPackage) { return !((ImportPackage) element).isSelfImport(); } else if (element instanceof RequiredBundle) { return !((RequiredBundle) element).isSatisfied(); } return true; } }; viewer.setFilters(new ViewerFilter[] { hideSelfImportsFilter }); viewer.addDragSupport(DND.DROP_MOVE | DND.DROP_COPY, new Transfer[] { LocalSelectionTransfer.getTransfer() }, new DragSourceListener() { public void dragStart(DragSourceEvent event) { } public void dragSetData(DragSourceEvent event) { LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer(); if (transfer.isSupportedType(event.dataType)) transfer.setSelection(viewer.getSelection()); } public void dragFinished(DragSourceEvent event) { } }); viewer.addOpenListener(new IOpenListener() { public void open(OpenEvent event) { IStructuredSelection selection = (IStructuredSelection) event.getSelection(); for (Iterator<?> iter = selection.iterator(); iter.hasNext();) { Object item = iter.next(); if (item instanceof ImportUsedByClass) { ImportUsedByClass importUsedBy = (ImportUsedByClass) item; String className = importUsedBy.getClazz().getFQN(); IType type = null; if (selectedFiles != null) { IWorkspaceRoot wsroot = ResourcesPlugin.getWorkspace().getRoot(); for (File selectedFile : selectedFiles) { IFile[] wsfiles = wsroot.findFilesForLocationURI(selectedFile.toURI()); for (IFile wsfile : wsfiles) { IJavaProject javaProject = JavaCore.create(wsfile.getProject()); try { type = javaProject.findType(className); if (type != null) break; } catch (JavaModelException e) { ErrorDialog.openError(getSite().getShell(), "Error", "", new Status( IStatus.ERROR, Plugin.PLUGIN_ID, 0, MessageFormat.format("Error opening Java class '{0}'.", className), e)); } } } } try { if (type != null) JavaUI.openInEditor(type, true, true); } catch (PartInitException e) { ErrorDialog.openError(getSite().getShell(), "Error", "", new Status(IStatus.ERROR, Plugin.PLUGIN_ID, 0, MessageFormat.format("Error opening Java editor for class '{0}'.", className), e)); } catch (JavaModelException e) { ErrorDialog.openError(getSite().getShell(), "Error", "", new Status(IStatus.ERROR, Plugin.PLUGIN_ID, 0, MessageFormat.format("Error opening Java class '{0}'.", className), e)); } } } } }); fillActionBars(); getSite().getPage().addPostSelectionListener(this); getSite().getPage().addPartListener(partAdapter); ResourcesPlugin.getWorkspace().addResourceChangeListener(this, IResourceChangeEvent.POST_CHANGE); // Current selection & part IWorkbenchPart activePart = getSite().getPage().getActivePart(); ISelection activeSelection = getSite().getWorkbenchWindow().getSelectionService().getSelection(); selectionChanged(activePart, activeSelection); }
From source file:ca.mcgill.cs.swevo.qualyzer.providers.TableDragListener.java
License:Open Source License
/** * Defines the SelectionTransfer so that ValidateDrop can work. *///from w ww.j a va 2 s. c o m @Override public void dragStart(DragSourceEvent event) { IStructuredSelection selection = (IStructuredSelection) fViewer.getSelection(); CodeTableRow row = (CodeTableRow) selection.getFirstElement(); String data = row.getName() + SPLIT + row.getPersistenceId() + SPLIT + row.getFrequency(); LocalSelectionTransfer tran = LocalSelectionTransfer.getTransfer(); tran.setSelection(new StructuredSelection(data)); }
From source file:ca.mcgill.cs.swevo.qualyzer.providers.TreeDragListener.java
License:Open Source License
/** * Sets the selection transfer so that the validate drop method can work. *///from w ww . j a va 2 s . c o m @Override public void dragStart(DragSourceEvent event) { IStructuredSelection selection = (IStructuredSelection) fViewer.getSelection(); Node node = (Node) selection.getFirstElement(); String data = node.getPersistenceId() + SPLIT + node.getPathToRoot(); LocalSelectionTransfer tran = LocalSelectionTransfer.getTransfer(); tran.setSelection(new StructuredSelection(data)); }
From source file:com.aptana.ide.ui.io.navigator.actions.FileSystemCopyAction.java
License:Open Source License
private void setClipboard(IFileStore[] fileStores, String[] fileNames, String names) { try {//from w w w . j a va 2 s.co m // set the clipboard contents LocalSelectionTransfer selectionTransfer = LocalSelectionTransfer.getTransfer(); selectionTransfer.setSelection(new StructuredSelection(fileStores)); if (fileNames.length > 0) { fClipboard.setContents(new Object[] { fileStores, fileNames, names }, new Transfer[] { LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance(), TextTransfer.getInstance() }); } else { fClipboard.setContents(new Object[] { fileStores, names }, new Transfer[] { LocalSelectionTransfer.getTransfer(), TextTransfer.getInstance() }); } } catch (SWTError e) { if (e.code != DND.ERROR_CANNOT_SET_CLIPBOARD) { throw e; // $codepro.audit.disable thrownExceptions } if (MessageDialog.openQuestion(fShell, "Problem with copy title", //$NON-NLS-1$ "Problem with copy.")) { //$NON-NLS-1$ setClipboard(fileStores, fileNames, names); } } }
From source file:de.byteholder.geoclipse.mapprovider.DialogMPProfile.java
License:Open Source License
private Control createUI114Viewer(final Composite parent, final PixelConverter pixelConverter) { final TreeColumnLayout treeLayout = new TreeColumnLayout(); final Composite layoutContainer = new Composite(parent, SWT.NONE); layoutContainer.setLayout(treeLayout); GridDataFactory.fillDefaults().grab(true, true).applyTo(layoutContainer); {/*from www . j a v a2s . com*/ final Tree tree = new Tree(layoutContainer, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION); tree.setHeaderVisible(true); tree.setLinesVisible(true); /* * tree viewer */ _treeViewer = new ContainerCheckedTreeViewer(tree); _treeViewer.setContentProvider(new MapContentProvider()); _treeViewer.setUseHashlookup(true); _treeViewer.addDoubleClickListener(new IDoubleClickListener() { public void doubleClick(final DoubleClickEvent event) { final Object selectedItem = ((IStructuredSelection) _treeViewer.getSelection()) .getFirstElement(); if (selectedItem != null) { if (selectedItem instanceof TVIMapProvider) { // expand/collapse current item final MP mapProvider = ((TVIMapProvider) selectedItem).getMapProviderWrapper().getMP(); if ((mapProvider instanceof MPWms) == false) { // all none wms map provider can be toggled toggleMapVisibility(tree); } else { // expand/collapse item if (_treeViewer.getExpandedState(selectedItem)) { _treeViewer.collapseToLevel(selectedItem, 1); } else { _treeViewer.expandToLevel(selectedItem, 1); } } } else if (selectedItem instanceof TVIWmsLayer) { toggleMapVisibility(tree); } } } }); _treeViewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(final SelectionChangedEvent event) { onSelectMP(event.getSelection()); } }); _treeViewer.addDragSupport(DND.DROP_MOVE, new Transfer[] { LocalSelectionTransfer.getTransfer() }, new DragSourceListener() { public void dragFinished(final DragSourceEvent event) { final LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer(); if (event.doit == false) { return; } transfer.setSelection(null); transfer.setSelectionSetTime(0); } public void dragSetData(final DragSourceEvent event) { // data are set in LocalSelectionTransfer } public void dragStart(final DragSourceEvent event) { final LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer(); final ITreeSelection selection = (ITreeSelection) _treeViewer.getSelection(); transfer.setSelection(selection); transfer.setSelectionSetTime(_dragStartTime = event.time & 0xFFFFFFFFL); // only ONE map provider/layer is allowed to be dragged final Object firstElement = selection.getFirstElement(); event.doit = (selection.size() == 1) && ((firstElement instanceof TVIMapProvider) || (firstElement instanceof TVIWmsLayer)); } }); _treeViewer.addDropSupport(DND.DROP_MOVE, new Transfer[] { LocalSelectionTransfer.getTransfer() }, new ProfileDropAdapter(this, _treeViewer)); tree.addKeyListener(new KeyListener() { public void keyPressed(final KeyEvent e) { /* * toggle the visibility with the space key */ if (e.keyCode == ' ') { toggleMapVisibility(tree); } } public void keyReleased(final KeyEvent e) { } }); /* * add editing support for the tree */ final TreeViewerFocusCellManager focusCellManager = new TreeViewerFocusCellManager(_treeViewer, new FocusCellOwnerDrawHighlighter(_treeViewer)); final ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy( _treeViewer) { @Override protected boolean isEditorActivationEvent(final ColumnViewerEditorActivationEvent event) { return (event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL) || (event.eventType == ColumnViewerEditorActivationEvent.MOUSE_CLICK_SELECTION) || ((event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED) && (event.keyCode == SWT.F2)) || (event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC); } }; TreeViewerEditor.create(_treeViewer, // focusCellManager, actSupport, ColumnViewerEditor.TABBING_HORIZONTAL // | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR // | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION); } createUI116ViewerColumns(treeLayout, pixelConverter); return layoutContainer; }
From source file:de.byteholder.geoclipse.mapprovider.DialogMPWms.java
License:Open Source License
private void createUILayer20Viewer(final Composite parent, final PixelConverter pixelConverter) { final TableColumnLayout tableLayout = new TableColumnLayout(); _viewerContainer = new Composite(parent, SWT.NONE); _viewerContainer.setLayout(tableLayout); GridDataFactory.fillDefaults().grab(true, true).applyTo(_viewerContainer); /*/*from w w w. jav a2s . c o m*/ * create table */ final Table table = new Table(_viewerContainer, SWT.CHECK | SWT.MULTI | SWT.FULL_SELECTION | SWT.BORDER); table.setLayout(new TableLayout()); table.setHeaderVisible(true); table.setLinesVisible(true); _layerViewer = new CheckboxTableViewer(table); /* * create columns */ TableViewerColumn tvc; TableColumn tvcColumn; // column: layer title tvc = new TableViewerColumn(_layerViewer, SWT.LEAD); tvcColumn = tvc.getColumn(); tvcColumn.setText(Messages.Dialog_WmsConfig_Column_LayerName); tvc.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final MtLayer mtLayer = (MtLayer) cell.getElement(); cell.setText(mtLayer.getGeoLayer().getTitle()); } }); tableLayout.setColumnData(tvcColumn, new ColumnWeightData(20, true)); // column: layer id tvc = new TableViewerColumn(_layerViewer, SWT.LEAD); tvcColumn = tvc.getColumn(); tvcColumn.setText(Messages.Dialog_WmsConfig_Column_LayerId); tvc.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final MtLayer mtLayer = (MtLayer) cell.getElement(); cell.setText(mtLayer.getGeoLayer().getName()); } }); tableLayout.setColumnData(tvcColumn, new ColumnWeightData(10, true)); // column: bbox tvc = new TableViewerColumn(_layerViewer, SWT.LEAD); tvcColumn = tvc.getColumn(); tvcColumn.setText(Messages.Dialog_WmsConfig_Column_Bbox); tvc.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final MtLayer mtLayer = (MtLayer) cell.getElement(); final GeoPosition lowerPosition = mtLayer.getLowerGeoPosition(); final GeoPosition upperPosition = mtLayer.getUpperGeoPosition(); final StringBuilder sb = new StringBuilder(); sb.append(lowerPosition.latitude); sb.append(", "); //$NON-NLS-1$ sb.append(lowerPosition.longitude); sb.append(" / "); //$NON-NLS-1$ sb.append(upperPosition.latitude); sb.append(", "); //$NON-NLS-1$ sb.append(upperPosition.longitude); cell.setText(sb.toString()); } }); tableLayout.setColumnData(tvcColumn, new ColumnWeightData(20, true)); _layerViewer.setContentProvider(new IStructuredContentProvider() { public void dispose() { } public Object[] getElements(final Object inputElement) { final int mtLayerSize = _allMtLayers.size(); if (mtLayerSize == 0) { return null; } else { return _allMtLayers.toArray(new MtLayer[mtLayerSize]); } } public void inputChanged(final Viewer viewer, final Object oldInput, final Object newInput) { } }); _layerViewer.addCheckStateListener(new ICheckStateListener() { public void checkStateChanged(final CheckStateChangedEvent event) { // select the checked item _layerViewer.setSelection(new StructuredSelection(event.getElement())); // set focus to selected layer table.setSelection(table.getSelectionIndex()); onCheckLayer(event.getElement()); } }); _layerViewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(final SelectionChangedEvent event) { onSelectLayer(); } }); /* * set drag adapter */ _layerViewer.addDragSupport(DND.DROP_MOVE, new Transfer[] { LocalSelectionTransfer.getTransfer() }, new DragSourceListener() { public void dragFinished(final DragSourceEvent event) { final LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer(); if (event.doit == false) { return; } transfer.setSelection(null); transfer.setSelectionSetTime(0); } public void dragSetData(final DragSourceEvent event) { // data are set in LocalSelectionTransfer } public void dragStart(final DragSourceEvent event) { final LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer(); final ISelection selection = _layerViewer.getSelection(); transfer.setSelection(selection); transfer.setSelectionSetTime(_dragStartViewerLeft = event.time & 0xFFFFFFFFL); event.doit = !selection.isEmpty(); } }); /* * set drop adapter */ final ViewerDropAdapter viewerDropAdapter = new ViewerDropAdapter(_layerViewer) { private Widget fTableItem; @Override public void dragOver(final DropTargetEvent event) { // keep table item fTableItem = event.item; super.dragOver(event); } @Override public boolean performDrop(final Object droppedData) { if (droppedData instanceof StructuredSelection) { final Object firstElement = ((StructuredSelection) droppedData).getFirstElement(); if (firstElement instanceof MtLayer) { final MtLayer mtLayer = (MtLayer) firstElement; final int location = getCurrentLocation(); final Table layerTable = _layerViewer.getTable(); /* * check if drag was startet from this filter, remove the filter item before * the new filter is inserted */ if (LocalSelectionTransfer.getTransfer().getSelectionSetTime() == _dragStartViewerLeft) { _layerViewer.remove(mtLayer); } int tableIndex; if (fTableItem == null) { _layerViewer.add(mtLayer); tableIndex = layerTable.getItemCount() - 1; } else { // get index of the target in the table tableIndex = layerTable.indexOf((TableItem) fTableItem); if (tableIndex == -1) { return false; } if (location == LOCATION_BEFORE) { _layerViewer.insert(mtLayer, tableIndex); } else if (location == LOCATION_AFTER) { _layerViewer.insert(mtLayer, ++tableIndex); } } // set check state _layerViewer.setChecked(mtLayer, mtLayer.isDisplayedInMap()); // reselect filter item _layerViewer.setSelection(new StructuredSelection(mtLayer)); // set focus to selection layerTable.setSelection(tableIndex); layerTable.setFocus(); // update new layer topology in the map updateMap(false); return true; } } return false; } @Override public boolean validateDrop(final Object target, final int operation, final TransferData transferType) { final ISelection selection = LocalSelectionTransfer.getTransfer().getSelection(); if (selection instanceof StructuredSelection) { final Object draggedItem = ((StructuredSelection) selection).getFirstElement(); if (target == draggedItem) { return false; } } if (LocalSelectionTransfer.getTransfer().isSupportedType(transferType) == false) { return false; } // check drop location final int location = getCurrentLocation(); if (((location == LOCATION_AFTER) || (location == LOCATION_BEFORE)) == false) { return false; } return true; } }; _layerViewer.addDropSupport(DND.DROP_MOVE, new Transfer[] { LocalSelectionTransfer.getTransfer() }, viewerDropAdapter); }
From source file:de.walware.ecommons.ui.util.SelectionTransferDragAdapter.java
License:Open Source License
@Override public void dragStart(final DragSourceEvent event) { final ISelection selection = fSelectionProvider.getSelection(); final LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer(); transfer.setSelection(selection); transfer.setSelectionSetTime(event.time & 0xFFFFFFFFL); if (selection.isEmpty()) { event.doit = false;/* ww w. ja va 2 s . c o m*/ return; } }
From source file:de.walware.ecommons.ui.util.SelectionTransferDragAdapter.java
License:Open Source License
@Override public void dragFinished(final DragSourceEvent event) { final LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer(); transfer.setSelection(null); transfer.setSelectionSetTime(0);/* ww w .j a va 2 s.c om*/ }
From source file:net.tourbook.common.util.DialogModifyColumns.java
License:Open Source License
private void createUI_72_ColumnsViewer(final Composite parent) { final TableColumnLayout tableLayout = new TableColumnLayout(); final Composite layoutContainer = new Composite(parent, SWT.NONE); layoutContainer.setLayout(tableLayout); GridDataFactory.fillDefaults().grab(true, true).applyTo(layoutContainer); /*/*from w ww. ja v a 2s . c o m*/ * create table */ final Table table = new Table(layoutContainer, SWT.CHECK | SWT.FULL_SELECTION | SWT.BORDER); table.setLayout(new TableLayout()); table.setHeaderVisible(true); table.setLinesVisible(false); _columnViewer = new CheckboxTableViewer(table); defineAllColumns(tableLayout); reorderColumns(table); _columnViewer.setContentProvider(new IStructuredContentProvider() { @Override public void dispose() { } @Override public Object[] getElements(final Object inputElement) { return _columnViewerModel.toArray(); } @Override public void inputChanged(final Viewer viewer, final Object oldInput, final Object newInput) { } }); _columnViewer.addDoubleClickListener(new IDoubleClickListener() { @Override public void doubleClick(final DoubleClickEvent event) { final Object firstElement = ((IStructuredSelection) _columnViewer.getSelection()).getFirstElement(); if (firstElement != null) { // check/uncheck current item _columnViewer.setChecked(firstElement, !_columnViewer.getChecked(firstElement)); } } }); _columnViewer.addCheckStateListener(new ICheckStateListener() { @Override public void checkStateChanged(final CheckStateChangedEvent event) { final ColumnDefinition colDef = (ColumnDefinition) event.getElement(); if (colDef.canModifyVisibility()) { // keep the checked status colDef.setIsColumnDisplayed(event.getChecked()); // select the checked item _columnViewer.setSelection(new StructuredSelection(colDef)); } else { // column can't be unchecked _columnViewer.setChecked(colDef, true); } // save columns saveState_CurrentProfileColumns(); } }); _columnViewer.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(final SelectionChangedEvent event) { enableUpDownActions(); } }); /* * set drag adapter */ _columnViewer.addDragSupport(DND.DROP_MOVE, new Transfer[] { LocalSelectionTransfer.getTransfer() }, new DragSourceListener() { @Override public void dragFinished(final DragSourceEvent event) { final LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer(); if (event.doit == false) { return; } transfer.setSelection(null); transfer.setSelectionSetTime(0); } @Override public void dragSetData(final DragSourceEvent event) { // data are set in LocalSelectionTransfer } @Override public void dragStart(final DragSourceEvent event) { final LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer(); final ISelection selection = _columnViewer.getSelection(); _dndCheckedElements = _columnViewer.getCheckedElements(); transfer.setSelection(selection); transfer.setSelectionSetTime(_dndDragStartViewerLeft = event.time & 0xFFFFFFFFL); event.doit = !selection.isEmpty(); } }); /* * set drop adapter */ final ViewerDropAdapter viewerDropAdapter = new ViewerDropAdapter(_columnViewer) { private Widget _dragOverItem; @Override public void dragOver(final DropTargetEvent dropEvent) { // keep table item _dragOverItem = dropEvent.item; super.dragOver(dropEvent); } @Override public boolean performDrop(final Object data) { if (data instanceof StructuredSelection) { final StructuredSelection selection = (StructuredSelection) data; if (selection.getFirstElement() instanceof ColumnDefinition) { final ColumnDefinition colDef = (ColumnDefinition) selection.getFirstElement(); final int location = getCurrentLocation(); final Table filterTable = _columnViewer.getTable(); /* * check if drag was startet from this item, remove the item before the new * item is inserted */ if (LocalSelectionTransfer.getTransfer().getSelectionSetTime() == _dndDragStartViewerLeft) { _columnViewer.remove(colDef); } int filterIndex; if (_dragOverItem == null) { _columnViewer.add(colDef); filterIndex = filterTable.getItemCount() - 1; } else { // get index of the target in the table filterIndex = filterTable.indexOf((TableItem) _dragOverItem); if (filterIndex == -1) { return false; } if (location == LOCATION_BEFORE) { _columnViewer.insert(colDef, filterIndex); } else if (location == LOCATION_AFTER || location == LOCATION_ON) { _columnViewer.insert(colDef, ++filterIndex); } } // reselect filter item _columnViewer.setSelection(new StructuredSelection(colDef)); // set focus to selection filterTable.setSelection(filterIndex); filterTable.setFocus(); // recheck items _columnViewer.setCheckedElements(_dndCheckedElements); enableUpDownActions(); return true; } } return false; } @Override public boolean validateDrop(final Object target, final int operation, final TransferData transferType) { final LocalSelectionTransfer transferData = LocalSelectionTransfer.getTransfer(); // check if dragged item is the target item final ISelection selection = transferData.getSelection(); if (selection instanceof StructuredSelection) { final Object dragFilter = ((StructuredSelection) selection).getFirstElement(); if (target == dragFilter) { return false; } } if (transferData.isSupportedType(transferType) == false) { return false; } // check if target is between two items if (getCurrentLocation() == LOCATION_ON) { return false; } return true; } }; _columnViewer.addDropSupport(DND.DROP_MOVE, new Transfer[] { LocalSelectionTransfer.getTransfer() }, viewerDropAdapter); }
From source file:net.tourbook.importdata.DialogEasyImportConfig.java
License:Open Source License
private void createUI_214_IC_DragDrop() { /*//w w w .j a va 2 s . c o m * set drag adapter */ _icViewer.addDragSupport(DND.DROP_MOVE, new Transfer[] { LocalSelectionTransfer.getTransfer() }, new DragSourceListener() { @Override public void dragFinished(final DragSourceEvent event) { final LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer(); if (event.doit == false) { return; } transfer.setSelection(null); transfer.setSelectionSetTime(0); } @Override public void dragSetData(final DragSourceEvent event) { // data are set in LocalSelectionTransfer } @Override public void dragStart(final DragSourceEvent event) { final LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer(); final ISelection selection = _icViewer.getSelection(); transfer.setSelection(selection); transfer.setSelectionSetTime(_dragStart = event.time & 0xFFFFFFFFL); event.doit = !selection.isEmpty(); } }); /* * set drop adapter */ final ViewerDropAdapter viewerDropAdapter = new ViewerDropAdapter(_icViewer) { private Widget __dragItem; @Override public void dragOver(final DropTargetEvent dropEvent) { // keep table item __dragItem = dropEvent.item; super.dragOver(dropEvent); } @Override public boolean performDrop(final Object data) { if (data instanceof StructuredSelection) { final StructuredSelection selection = (StructuredSelection) data; if (selection.getFirstElement() instanceof ImportConfig) { final ImportConfig selectedItem = (ImportConfig) selection.getFirstElement(); final int location = getCurrentLocation(); final Table filterTable = _icViewer.getTable(); /* * check if drag was startet from this filter, remove the filter item before * the new filter is inserted */ if (LocalSelectionTransfer.getTransfer().getSelectionSetTime() == _dragStart) { _icViewer.remove(selectedItem); } int filterIndex; if (__dragItem == null) { _icViewer.add(selectedItem); filterIndex = filterTable.getItemCount() - 1; } else { // get index of the target in the table filterIndex = filterTable.indexOf((TableItem) __dragItem); if (filterIndex == -1) { return false; } if (location == LOCATION_BEFORE) { _icViewer.insert(selectedItem, filterIndex); } else if (location == LOCATION_AFTER || location == LOCATION_ON) { _icViewer.insert(selectedItem, ++filterIndex); } } // reselect filter item _icViewer.setSelection(new StructuredSelection(selectedItem)); // set focus to selection filterTable.setSelection(filterIndex); filterTable.setFocus(); return true; } } return false; } @Override public boolean validateDrop(final Object target, final int operation, final TransferData transferType) { final ISelection selection = LocalSelectionTransfer.getTransfer().getSelection(); if (selection instanceof StructuredSelection) { final Object dragFilter = ((StructuredSelection) selection).getFirstElement(); if (target == dragFilter) { return false; } } if (LocalSelectionTransfer.getTransfer().isSupportedType(transferType) == false) { return false; } return true; } }; _icViewer.addDropSupport(DND.DROP_MOVE, new Transfer[] { LocalSelectionTransfer.getTransfer() }, viewerDropAdapter); }