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

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

Introduction

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

Prototype

public void setSelectionSetTime(long time) 

Source Link

Document

Sets the time when the selection operation this transfer is associated with was started.

Usage

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  w  w w .j  a va  2s. 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  ww  .  j  a  v  a2  s .  co  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);/*w w  w  .j  a  v a 2 s  . c om*/
    transfer.setSelectionSetTime(event.time & 0xFFFFFFFFL);

    if (selection.isEmpty()) {
        event.doit = false;
        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);/*from w  w w  .j a va 2 s  .c  om*/
    transfer.setSelectionSetTime(0);
}

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

    /*//w  w w  .  j  a  v a2 s. 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() {

    /*/*from w  w  w.  ja v a2s.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);
}

From source file:net.tourbook.importdata.DialogEasyImportConfig.java

License:Open Source License

private void createUI_514_IL_DragDrop() {

    /*//from   w w w  .j a  va  2s  . c  o  m
     * set drag adapter
     */
    _ilViewer.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 = _ilViewer.getSelection();

                    transfer.setSelection(selection);
                    transfer.setSelectionSetTime(_dragStart = event.time & 0xFFFFFFFFL);

                    event.doit = !selection.isEmpty();
                }
            });

    /*
     * set drop adapter
     */
    final ViewerDropAdapter viewerDropAdapter = new ViewerDropAdapter(_ilViewer) {

        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 ImportLauncher) {

                    final ImportLauncher filterItem = (ImportLauncher) selection.getFirstElement();

                    final int location = getCurrentLocation();
                    final Table filterTable = _ilViewer.getTable();

                    /*
                     * check if drag was startet from this filter, remove the filter item before
                     * the new filter is inserted
                     */
                    if (LocalSelectionTransfer.getTransfer().getSelectionSetTime() == _dragStart) {
                        _ilViewer.remove(filterItem);
                    }

                    int filterIndex;

                    if (__dragItem == null) {

                        _ilViewer.add(filterItem);
                        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) {
                            _ilViewer.insert(filterItem, filterIndex);
                        } else if (location == LOCATION_AFTER || location == LOCATION_ON) {
                            _ilViewer.insert(filterItem, ++filterIndex);
                        }
                    }

                    // reselect filter item
                    _ilViewer.setSelection(new StructuredSelection(filterItem));

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

    };

    _ilViewer.addDropSupport(DND.DROP_MOVE, new Transfer[] { LocalSelectionTransfer.getTransfer() },
            viewerDropAdapter);
}

From source file:net.tourbook.map2.view.DialogModifyMapProvider.java

License:Open Source License

private void createUI10MapProviderList(final Composite parent) {

    final PixelConverter pc = new PixelConverter(parent);

    _checkboxViewer = CheckboxTableViewer.newCheckList(parent, SWT.SINGLE | SWT.TOP | SWT.BORDER);

    final Table table = _checkboxViewer.getTable();
    GridDataFactory.swtDefaults()//
            .grab(true, true).hint(SWT.DEFAULT, pc.convertHeightInCharsToPixels(10)).align(SWT.FILL, SWT.FILL)
            .applyTo(table);/*from w ww .  java2 s . co m*/

    _checkboxViewer.setContentProvider(new IStructuredContentProvider() {
        public void dispose() {
        }

        public Object[] getElements(final Object inputElement) {
            return _allMp.toArray();
        }

        public void inputChanged(final Viewer viewer, final Object oldInput, final Object newInput) {
        }
    });

    _checkboxViewer.setLabelProvider(new LabelProvider() {
        @Override
        public String getText(final Object element) {
            return ((MP) element).getName();
        }
    });

    _checkboxViewer.addCheckStateListener(new ICheckStateListener() {
        public void checkStateChanged(final CheckStateChangedEvent event) {

            // keep the checked status
            final MP item = (MP) event.getElement();
            item.setCanBeToggled(event.getChecked());

            // select the checked item
            _checkboxViewer.setSelection(new StructuredSelection(item));
            //
            //            validateTab();
        }
    });

    _checkboxViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(final SelectionChangedEvent event) {
            enableUpDownButtons();
        }
    });

    /*
     * set drag adapter
     */
    _checkboxViewer.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 = _checkboxViewer.getSelection();

                    _dndCheckedElements = _checkboxViewer.getCheckedElements();

                    transfer.setSelection(selection);
                    transfer.setSelectionSetTime(_dndDragStartViewerLeft = event.time & 0xFFFFFFFFL);

                    event.doit = !selection.isEmpty();
                }
            });

    /*
     * set drop adapter
     */
    final ViewerDropAdapter viewerDropAdapter = new ViewerDropAdapter(_checkboxViewer) {

        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 MP) {

                    final MP mp = (MP) selection.getFirstElement();

                    final int location = getCurrentLocation();
                    final Table filterTable = _checkboxViewer.getTable();

                    /*
                     * check if drag was startet from this item, remove the item before the new
                     * item is inserted
                     */
                    if (LocalSelectionTransfer.getTransfer().getSelectionSetTime() == _dndDragStartViewerLeft) {
                        _checkboxViewer.remove(mp);
                    }

                    int filterIndex;

                    if (_dragOverItem == null) {

                        _checkboxViewer.add(mp);
                        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) {
                            _checkboxViewer.insert(mp, filterIndex);
                        } else if (location == LOCATION_AFTER || location == LOCATION_ON) {
                            _checkboxViewer.insert(mp, ++filterIndex);
                        }
                    }

                    // reselect filter item
                    _checkboxViewer.setSelection(new StructuredSelection(mp));

                    // set focus to selection
                    filterTable.setSelection(filterIndex);
                    filterTable.setFocus();

                    // recheck items
                    _checkboxViewer.setCheckedElements(_dndCheckedElements);

                    enableUpDownButtons();

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

    };

    _checkboxViewer.addDropSupport(DND.DROP_MOVE, new Transfer[] { LocalSelectionTransfer.getTransfer() },
            viewerDropAdapter);

}

From source file:net.tourbook.preferences.PrefPageTags.java

License:Open Source License

private void createUI_20_TagViewer(final Composite parent) {

    /*/*from  ww w  .ja va 2s  .co m*/
     * create tree layout
     */

    final Composite layoutContainer = new Composite(parent, SWT.NONE);
    GridDataFactory.fillDefaults()//
            .grab(true, true).hint(200, 100).applyTo(layoutContainer);

    final TreeColumnLayout treeLayout = new TreeColumnLayout();
    layoutContainer.setLayout(treeLayout);

    /*
     * create viewer
     */
    final Tree tree = new Tree(layoutContainer, SWT.H_SCROLL | SWT.V_SCROLL
    //            | SWT.BORDER
            | SWT.MULTI | SWT.FULL_SELECTION);

    tree.setHeaderVisible(false);
    tree.setLinesVisible(getPreferenceStore().getBoolean(ITourbookPreferences.VIEW_LAYOUT_DISPLAY_LINES));

    _tagViewer = new TreeViewer(tree);

    _tagViewer.setContentProvider(new TagViewerContentProvicer());
    _tagViewer.setComparator(new TagViewerComparator());
    _tagViewer.setUseHashlookup(true);

    _tagViewer.addDoubleClickListener(new IDoubleClickListener() {
        @Override
        public void doubleClick(final DoubleClickEvent event) {

            final Object selection = ((IStructuredSelection) _tagViewer.getSelection()).getFirstElement();

            if (selection instanceof TVIPrefTag) {

                // tag is selected

                onRenameTourTag();

            } else if (selection instanceof TVIPrefTagCategory) {

                // expand/collapse current item

                final TreeViewerItem tourItem = (TreeViewerItem) selection;

                if (_tagViewer.getExpandedState(tourItem)) {
                    _tagViewer.collapseToLevel(tourItem, 1);
                } else {
                    _tagViewer.expandToLevel(tourItem, 1);
                }
            }
        }
    });

    _tagViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(final SelectionChangedEvent event) {
            enableButtons();
        }
    });

    _tagViewer.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 = _tagViewer.getSelection();

                    //                  System.out.println("dragStart");
                    transfer.setSelection(selection);
                    transfer.setSelectionSetTime(_dragStartTime = event.time & 0xFFFFFFFFL);

                    event.doit = !selection.isEmpty();
                }
            });

    _tagViewer.addDropSupport(DND.DROP_MOVE, new Transfer[] { LocalSelectionTransfer.getTransfer() },
            new TagDropAdapter(this, _tagViewer));

    /*
     * create columns
     */
    TreeViewerColumn tvc;
    TreeColumn tvcColumn;

    // column: tags + tag categories
    tvc = new TreeViewerColumn(_tagViewer, SWT.TRAIL);
    tvcColumn = tvc.getColumn();
    tvc.setLabelProvider(new StyledCellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {

            final StyledString styledString = new StyledString();

            final Object element = cell.getElement();
            if (element instanceof TVIPrefTag) {

                final TourTag tourTag = ((TVIPrefTag) element).getTourTag();

                styledString.append(tourTag.getTagName(), UI.TAG_STYLER);
                cell.setImage(tourTag.isRoot() ? _imgTagRoot : _imgTag);

            } else if (element instanceof TVIPrefTagCategory) {

                final TVIPrefTagCategory tourTagCategoryItem = (TVIPrefTagCategory) element;
                final TourTagCategory tourTagCategory = tourTagCategoryItem.getTourTagCategory();

                cell.setImage(_imgTagCategory);

                styledString.append(tourTagCategory.getCategoryName(), UI.TAG_CATEGORY_STYLER);

                // get number of categories
                final int categoryCounter = tourTagCategory.getCategoryCounter();
                final int tagCounter = tourTagCategory.getTagCounter();
                if (categoryCounter == -1 && tagCounter == -1) {

                    //                  styledString.append("  ...", StyledString.COUNTER_STYLER);

                } else {

                    String categoryString = UI.EMPTY_STRING;
                    if (categoryCounter > 0) {
                        categoryString = "/" + categoryCounter; //$NON-NLS-1$
                    }
                    styledString.append("   " + tagCounter + categoryString, StyledString.QUALIFIER_STYLER); //$NON-NLS-1$
                }

            } else {
                styledString.append(element.toString());
            }

            cell.setText(styledString.getString());
            cell.setStyleRanges(styledString.getStyleRanges());
        }
    });
    treeLayout.setColumnData(tvcColumn, new ColumnWeightData(100, true));
}

From source file:net.tourbook.preferences.PrefPageTourTypeFilterList.java

License:Open Source License

private void createUI_10_FilterViewer(final Composite parent) {

    final TableLayoutComposite layouter = new TableLayoutComposite(parent, SWT.NONE);
    GridDataFactory.fillDefaults().grab(true, true).hint(200, SWT.DEFAULT).applyTo(layouter);

    final Table table = new Table(layouter, (SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION));
    table.setHeaderVisible(false);/*from  ww  w .j  a v  a 2  s .  co  m*/
    table.setLinesVisible(false);

    TableViewerColumn tvc;

    _filterViewer = new TableViewer(table);

    // column: name + image
    tvc = new TableViewerColumn(_filterViewer, SWT.NONE);
    tvc.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {

            final TourTypeFilter filter = ((TourTypeFilter) cell.getElement());
            final int filterType = filter.getFilterType();

            String filterName = null;
            Image filterImage = null;

            // set filter name/image
            switch (filterType) {
            case TourTypeFilter.FILTER_TYPE_DB:
                final TourType tourType = filter.getTourType();
                filterName = tourType.getName();
                filterImage = UI.getInstance().getTourTypeImage(tourType.getTypeId());
                break;

            case TourTypeFilter.FILTER_TYPE_SYSTEM:
                filterName = filter.getSystemFilterName();
                filterImage = UI.IMAGE_REGISTRY.get(UI.IMAGE_TOUR_TYPE_FILTER_SYSTEM);
                break;

            case TourTypeFilter.FILTER_TYPE_TOURTYPE_SET:
                filterName = filter.getTourTypeSet().getName();
                filterImage = UI.IMAGE_REGISTRY.get(UI.IMAGE_TOUR_TYPE_FILTER);
                break;

            default:
                break;
            }

            cell.setText(filterName);
            cell.setImage(filterImage);
        }
    });
    layouter.addColumnData(new ColumnWeightData(1));

    _filterViewer.setContentProvider(new IStructuredContentProvider() {
        @Override
        public void dispose() {
        }

        @Override
        public Object[] getElements(final Object inputElement) {
            return _filterList.toArray();
        }

        @Override
        public void inputChanged(final Viewer viewer, final Object oldInput, final Object newInput) {
        }
    });

    _filterViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(final SelectionChangedEvent event) {
            onSelectFilter();
        }
    });

    _filterViewer.addDoubleClickListener(new IDoubleClickListener() {
        @Override
        public void doubleClick(final DoubleClickEvent event) {
            onRenameFilterSet();
        }
    });

    /*
     * set drag adapter
     */
    _filterViewer.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 = _filterViewer.getSelection();

                    transfer.setSelection(selection);
                    transfer.setSelectionSetTime(_dragStartViewerLeft = event.time & 0xFFFFFFFFL);

                    event.doit = !selection.isEmpty();
                }
            });

    /*
     * set drop adapter
     */
    final ViewerDropAdapter viewerDropAdapter = new ViewerDropAdapter(_filterViewer) {

        private Widget _tableItem;

        @Override
        public void dragOver(final DropTargetEvent dropEvent) {

            // keep table item
            _tableItem = 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 TourTypeFilter) {

                    final TourTypeFilter filterItem = (TourTypeFilter) selection.getFirstElement();

                    final int location = getCurrentLocation();
                    final Table filterTable = _filterViewer.getTable();

                    /*
                     * check if drag was startet from this filter, remove the filter item before
                     * the new filter is inserted
                     */
                    if (LocalSelectionTransfer.getTransfer().getSelectionSetTime() == _dragStartViewerLeft) {
                        _filterViewer.remove(filterItem);
                    }

                    int filterIndex;

                    if (_tableItem == null) {

                        _filterViewer.add(filterItem);
                        filterIndex = filterTable.getItemCount() - 1;

                    } else {

                        // get index of the target in the table
                        filterIndex = filterTable.indexOf((TableItem) _tableItem);
                        if (filterIndex == -1) {
                            return false;
                        }

                        if (location == LOCATION_BEFORE) {
                            _filterViewer.insert(filterItem, filterIndex);
                        } else if (location == LOCATION_AFTER || location == LOCATION_ON) {
                            _filterViewer.insert(filterItem, ++filterIndex);
                        }
                    }

                    // reselect filter item
                    _filterViewer.setSelection(new StructuredSelection(filterItem));

                    // set focus to selection
                    filterTable.setSelection(filterIndex);
                    filterTable.setFocus();

                    _isModified = true;

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

    };

    _filterViewer.addDropSupport(DND.DROP_MOVE, new Transfer[] { LocalSelectionTransfer.getTransfer() },
            viewerDropAdapter);
}