Example usage for org.eclipse.jface.util LocalSelectionTransfer setSelection

List of usage examples for org.eclipse.jface.util LocalSelectionTransfer setSelection

Introduction

In this page you can find the example usage for org.eclipse.jface.util LocalSelectionTransfer setSelection.

Prototype

public void setSelection(ISelection s) 

Source Link

Document

Sets the transfer data for local use.

Usage

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);
}