Example usage for org.eclipse.jface.viewers TreeViewerColumn TreeViewerColumn

List of usage examples for org.eclipse.jface.viewers TreeViewerColumn TreeViewerColumn

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers TreeViewerColumn TreeViewerColumn.

Prototype

public TreeViewerColumn(TreeViewer viewer, int style, int index) 

Source Link

Document

Creates a new viewer column for the given TreeViewer on a new TreeColumn with the given style bits.

Usage

From source file:org.dawnsci.plotting.tools.grid.GridTool.java

License:Open Source License

private void createColumns(TreeViewer viewer) {

    viewer.setColumnProperties(new String[] { "Name", "Value", "Unit" });
    ColumnViewerToolTipSupport.enableFor(viewer);

    TreeViewerColumn var = new TreeViewerColumn(viewer, SWT.LEFT, 0);
    var.getColumn().setText("Name"); // Selected
    var.getColumn().setWidth(220);
    var.setLabelProvider(new NodeLabelProvider(0));

    var = new TreeViewerColumn(viewer, SWT.LEFT, 1);
    var.getColumn().setText("Value"); // Selected
    var.getColumn().setWidth(140);
    var.setLabelProvider(new DelegatingProviderWithTooltip(new NodeLabelProvider(2)));
    var.setEditingSupport(new ValueEditingSupport(viewer));

    var = new TreeViewerColumn(viewer, SWT.LEFT, 2);
    var.getColumn().setText("Unit"); // Selected
    var.getColumn().setWidth(90);
    var.setLabelProvider(new DelegatingProviderWithTooltip(new NodeLabelProvider(3)));
    var.setEditingSupport(new UnitEditingSupport(viewer));

}

From source file:org.dawnsci.plotting.tools.preference.DiffractionDefaultsPreferencePage.java

License:Open Source License

private void createColumns(TreeViewer viewer) {

    ColumnViewerToolTipSupport.enableFor(viewer, ToolTip.NO_RECREATE);
    viewer.setColumnProperties(new String[] { "Name", "Original", "Value", "Unit" });

    TreeViewerColumn var = new TreeViewerColumn(viewer, SWT.LEFT, 0);
    var.getColumn().setText("Name"); // Selected
    var.getColumn().setWidth(200);
    var.setLabelProvider(new ColumnLabelProvider());

    var = new TreeViewerColumn(viewer, SWT.LEFT, 1);
    var.getColumn().setText("Original"); // Selected
    var.getColumn().setWidth(0);
    var.getColumn().setResizable(false);
    var.setLabelProvider(new DelegatingStyledCellLabelProvider(new NodeLabelProvider(1)));

    var = new TreeViewerColumn(viewer, SWT.LEFT, 2);
    var.getColumn().setText("Value"); // Selected
    var.getColumn().setWidth(100);
    var.setLabelProvider(new DelegatingStyledCellLabelProvider(new NodeLabelProvider(2)));
    var.setEditingSupport(new ValueEditingSupport(viewer));

    var = new TreeViewerColumn(viewer, SWT.LEFT, 3);
    var.getColumn().setText("Unit"); // Selected
    var.getColumn().setWidth(90);
    var.setLabelProvider(new DelegatingStyledCellLabelProvider(new NodeLabelProvider(3)));
    var.setEditingSupport(new UnitEditingSupport(viewer));
}

From source file:org.dawnsci.plotting.tools.region.RegionEditorTool.java

License:Open Source License

private void createColumns(final TreeViewer viewer) {
    viewer.setColumnProperties(new String[] { "Name", "Value", "Unit", "Visible", "Active", "Mobile" });
    ColumnViewerToolTipSupport.enableFor(viewer);

    TreeViewerColumn var = new TreeViewerColumn(viewer, SWT.LEFT, 0);
    var.getColumn().setText("Name");
    var.getColumn().setWidth(190);
    var.getColumn().setMoveable(true);
    var.setLabelProvider(new DelegatingProviderWithTooltip(new RegionEditorLabelProvider(0)));
    var.setEditingSupport(new RegionEditorEditingSupport(viewer, 0));

    var = new TreeViewerColumn(viewer, SWT.LEFT, 1);
    var.getColumn().setText("Value");
    var.getColumn().setWidth(100);
    var.getColumn().setMoveable(true);
    var.setLabelProvider(new DelegatingProviderWithTooltip(new RegionEditorLabelProvider(1)));
    var.setEditingSupport(new RegionEditorEditingSupport(viewer, 1));

    var = new TreeViewerColumn(viewer, SWT.LEFT, 2);
    var.getColumn().setText("Unit");
    var.getColumn().setWidth(90);
    var.getColumn().setMoveable(true);
    var.setLabelProvider(new DelegatingProviderWithTooltip(new RegionEditorLabelProvider(2)));
    var.setEditingSupport(new UnitEditingSupport(viewer));

    var = new TreeViewerColumn(viewer, SWT.LEFT, 3);
    var.getColumn().setText("Visible");
    var.getColumn().setWidth(60);
    var.getColumn().setMoveable(true);
    var.setLabelProvider(new DelegatingProviderWithTooltip(new RegionEditorLabelProvider(3)));
    var.setEditingSupport(new RegionEditorEditingSupport(viewer, 3));

    var = new TreeViewerColumn(viewer, SWT.LEFT, 4);
    var.getColumn().setText("Active");
    var.getColumn().setWidth(60);
    var.getColumn().setMoveable(true);
    var.setLabelProvider(new DelegatingProviderWithTooltip(new RegionEditorLabelProvider(4)));
    var.setEditingSupport(new RegionEditorEditingSupport(viewer, 4));

    var = new TreeViewerColumn(viewer, SWT.LEFT, 5);
    var.getColumn().setText("Mobile");
    var.getColumn().setWidth(60);
    var.getColumn().setMoveable(true);
    var.setLabelProvider(new DelegatingProviderWithTooltip(new RegionEditorLabelProvider(5)));
    var.setEditingSupport(new RegionEditorEditingSupport(viewer, 5));
}

From source file:org.eclipse.scanning.device.ui.device.scannable.ControlTreeViewer.java

License:Open Source License

private void createColumns(TreeViewer viewer) {

    viewer.setColumnProperties(new String[] { "Name", "Value" });
    ColumnViewerToolTipSupport.enableFor(viewer);

    TreeViewerColumn nameColumn = new TreeViewerColumn(viewer, SWT.LEFT, 0);
    nameColumn.getColumn().setText("Name");
    nameColumn.getColumn().setWidth(200);
    nameColumn.setLabelProvider(new ColumnLabelProvider() {
        public String getText(Object element) {
            INamedNode node = (INamedNode) element;
            return node.getDisplayName();
        }/* www .  j av  a 2 s.c o m*/
    });
    nameColumn.setEditingSupport(new NameEditingSupport(this));

    TreeViewerColumn valueColumn = new TreeViewerColumn(viewer, SWT.LEFT, 1);
    valueColumn.getColumn().setText("Value");
    valueColumn.getColumn().setWidth(300);
    valueColumn.setLabelProvider(
            new DelegatingStyledCellLabelProvider(new ControlValueLabelProvider(cservice, this)));
    valueColumn.setEditingSupport(new ControlEditingSupport(viewer, cservice, controlViewerMode));
}

From source file:org.eclipse.sirius.table.ui.tools.internal.editor.DTableViewerManager.java

License:Open Source License

/**
 * Create the TreeViewer.//from w  w w .j  a  va2  s. c om
 * 
 * Problem for action on column header :
 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=23103
 * 
 * @param composite
 *            the parent composite
 */
@Override
protected void createTreeViewer(final Composite composite) {
    // Create a composite to hold the children
    final GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.FILL_BOTH);
    composite.setLayoutData(gridData);
    final TreeColumnLayout treeLayout = new TreeColumnLayout();
    composite.setLayout(treeLayout);
    // Create and setup the TreeViewer
    final int style = SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.MULTI;
    treeViewer = new DTableTreeViewer(composite, style, this);
    // Add a focus listener to deactivate the EMF actions on the Tree
    treeViewer.getTree().addFocusListener(new DTableTreeFocusListener(tableEditor, treeViewer.getTree()));
    initializeDragSupport();
    sortListener = new DLinesSorter(getEditingDomain(), getEditor().getTableModel());
    // 1st column with line labels
    DslCommonPlugin.PROFILER.startWork(SiriusTasksKey.ADD_SWT_COLUMN_KEY);
    final TreeViewerColumn headerTreeColumn = new TreeViewerColumn(treeViewer, SWT.CENTER, 0);
    DslCommonPlugin.PROFILER.startWork(SiriusTasksKey.SET_COLUMN_NAME_KEY);
    headerTreeColumn.getColumn().setText("");
    DslCommonPlugin.PROFILER.stopWork(SiriusTasksKey.SET_COLUMN_NAME_KEY);

    ILabelDecorator decorator = PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator();
    CellLabelProvider lineheaderColumnLabelProvider = new DTableLineLabelProvider(decorator) {
        /* Display gray background for the OS other than GTK. */
        @Override
        public Color getBackground(final Object element) {
            if (IS_GTK_OS) {
                // We could desactivate the gray background color for Linux
                // return super.getBackground(element);
                return Display.getCurrent().getSystemColor(SWT.COLOR_WIDGET_LIGHT_SHADOW);
            } else {
                return Display.getCurrent().getSystemColor(SWT.COLOR_WIDGET_LIGHT_SHADOW);
            }
        }
    };
    headerTreeColumn.setLabelProvider(lineheaderColumnLabelProvider);
    int headerColumnWidth = ((DTable) dRepresentation).getHeaderColumnWidth();
    if (headerColumnWidth != 0) {
        treeLayout.setColumnData(headerTreeColumn.getColumn(), new ColumnPixelData(headerColumnWidth));
        if (headerTreeColumn.getColumn().getWidth() != headerColumnWidth) {
            headerTreeColumn.getColumn().setWidth(headerColumnWidth);
        }
    } else {
        treeLayout.setColumnData(headerTreeColumn.getColumn(), new ColumnWeightData(1));
        if (IS_GTK_OS) {
            // Do not launch treeViewerColumn.getColumn().pack() here
            // for windows because the size is computed only with the
            // headerText and under windows this size is fixed with this
            // value for the next pack. Under linux it's better with this
            // pack() here.
            // Not really understood...
            headerTreeColumn.getColumn().pack();
        }
    }

    headerTreeColumn.getColumn().addListener(SWT.Selection, sortListener);
    DslCommonPlugin.PROFILER.stopWork(SiriusTasksKey.ADD_SWT_COLUMN_KEY);

    // Next columns
    int index = 1;
    for (final DColumn column : ((DTable) dRepresentation).getColumns()) {
        addNewColumn(column, index++);
    }
    treeViewer.setUseHashlookup(true);
    tableUIUpdater = new TableUIUpdater(this, dRepresentation);
    descriptionFileChangedNotifier = new DescriptionFileChangedNotifier(this);
    dTableContentProvider = new DTableContentProvider();
    treeViewer.setContentProvider(dTableContentProvider);
    // The input for the table viewer is the instance of DTable
    treeViewer.setInput(dRepresentation);

    treeViewer.getTree().setLinesVisible(true);
    treeViewer.getTree().setHeaderVisible(true);
    fillMenu();
    triggerColumnSelectedColumn();

    // Expands the line according to the model
    treeViewer.setExpandedElements(TableHelper.getExpandedLines((DTable) dRepresentation).toArray());

    // Pack after expand for resize column on all subLines
    for (int i = 0; i < treeViewer.getTree().getColumnCount(); i++) {
        // Do the pack only if the ColumnData is a ColumnWeightData
        final Object data = treeViewer.getTree().getColumn(i).getData(AbstractDTableViewerManager.LAYOUT_DATA);
        if (data instanceof ColumnWeightData) {
            treeViewer.getTree().getColumn(i).pack();
        }
    }
    treeViewer.addTreeListener(tableViewerListener);
    // Manage height of the lines, selected colors,
    triggerCustomDrawingTreeItems();

    // Create a new CellFocusManager
    final TreeViewerFocusCellManager focusCellManager = new TreeViewerFocusCellManager(treeViewer,
            new FocusCellOwnerDrawHighlighter(treeViewer));
    // Create a TreeViewerEditor with focusable cell
    TreeViewerEditor.create(treeViewer, focusCellManager,
            new DTableColumnViewerEditorActivationStrategy(treeViewer),
            ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR
                    | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION);
    // Set after the setInput to avoid layout call it several time for
    // nothing at opening
    headerTreeColumn.getColumn().addControlListener(tableViewerListener);
    initializeKeyBindingSupport();
}

From source file:org.eclipse.sirius.table.ui.tools.internal.editor.DTableViewerManager.java

License:Open Source License

/**
 * Add a new column in the table.<BR>
 * /*from  ww  w  .j  a v a2  s  .com*/
 * @param newColumn
 *            The new targetColumn
 * @param index
 *            the index at which to place the newly created column
 * @param changeInput
 *            true if we must change the input of the SWT tree to null
 *            before adding the SWT column, false otherwise
 */
public void addNewColumn(final DColumn newColumn, final int index, final boolean changeInput) {
    DslCommonPlugin.PROFILER.startWork(SiriusTasksKey.ADD_SWT_COLUMN_KEY);

    if (treeViewer.getTree() != null) {
        for (TreeColumn tCol : treeViewer.getTree().getColumns()) {
            Object data = tCol.getData(TABLE_COLUMN_DATA);
            if (data != null && data.equals(newColumn)) {
                return;
            }
        }
    }

    final TreeViewerColumn treeViewerColumn = new TreeViewerColumn(treeViewer, SWT.LEFT, index);
    if (newColumn.getLabel() != null) {
        DslCommonPlugin.PROFILER.startWork(SiriusTasksKey.SET_COLUMN_NAME_KEY);

        TreeColumn treeColumn = treeViewerColumn.getColumn();

        ILabelProvider dTableColumnHeaderLabelProvider = new DTableColumnHeaderLabelProvider();

        String text = dTableColumnHeaderLabelProvider.getText(newColumn);
        treeColumn.setText(text);

        Image image = dTableColumnHeaderLabelProvider.getImage(newColumn);
        treeColumn.setImage(image);

        DslCommonPlugin.PROFILER.stopWork(SiriusTasksKey.SET_COLUMN_NAME_KEY);
    }
    if (newColumn.isVisible()) {
        if (newColumn.getWidth() != 0) {
            ((TreeColumnLayout) treeViewer.getControl().getParent().getLayout())
                    .setColumnData(treeViewerColumn.getColumn(), new ColumnPixelData(newColumn.getWidth()));
            if (treeViewerColumn.getColumn().getWidth() != newColumn.getWidth()) {
                treeViewerColumn.getColumn().setWidth(newColumn.getWidth());
            }
        } else {
            ((TreeColumnLayout) treeViewer.getControl().getParent().getLayout())
                    .setColumnData(treeViewerColumn.getColumn(), new ColumnWeightData(1));
            if (IS_GTK_OS) {
                // Do not launch treeViewerColumn.getColumn().pack() here
                // for windows because the size is computed only with the
                // headerText and under windows this size is fixed with this
                // value for the next pack. Under linux it's better with
                // this pack() here.
                // Not really understood...
                treeViewerColumn.getColumn().pack();
            }
        }
    } else {
        // Set the size of the column to 0
        ((TreeColumnLayout) treeViewer.getControl().getParent().getLayout())
                .setColumnData(treeViewerColumn.getColumn(), new ColumnPixelData(0));
    }

    // Add the LabelProvider with decorating feature
    ILabelDecorator decorator = PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator();
    DTableDecoratingLabelProvider labelProvider = new DTableDecoratingLabelProvider(newColumn, decorator);
    treeViewerColumn.setLabelProvider(new DelegatingStyledCellLabelProvider(labelProvider));

    if (newColumn instanceof DFeatureColumn) {
        treeViewerColumn.setEditingSupport(
                new DFeatureColumnEditingSupport(treeViewer, (DFeatureColumn) newColumn, getEditingDomain(),
                        getAccessor(), getTableCommandFactory(), (AbstractDTableEditor) tableEditor));
    } else if (newColumn instanceof DTargetColumn) {
        treeViewerColumn.setEditingSupport(
                new DTargetColumnEditingSupport(treeViewer, (DTargetColumn) newColumn, getEditingDomain(),
                        getAccessor(), tableCommandFactory, (AbstractDTableEditor) tableEditor));
    }
    treeViewerColumn.getColumn().setData(TABLE_COLUMN_DATA, newColumn);
    treeViewerColumn.getColumn().addControlListener(tableViewerListener);
    treeViewerColumn.getColumn().addListener(SWT.Selection, sortListener);
    DslCommonPlugin.PROFILER.stopWork(SiriusTasksKey.ADD_SWT_COLUMN_KEY);
}

From source file:org.nfc.eclipse.plugin.NdefEditorPart.java

License:Open Source License

@Override
public void createPartControl(Composite composite) {

    composite.setLayout(new FillLayout());
    composite.setBackground(new Color(composite.getDisplay(), 0xFF, 0xFF, 0xFF));

    form = new SashForm(composite, SWT.HORIZONTAL);
    form.setLayout(new FillLayout());

    Composite wrapper = new Composite(form, SWT.NONE);
    wrapper.setLayout(new FillLayout());

    treeViewer = new TreeViewer(wrapper, SWT.BORDER | SWT.FULL_SELECTION);
    treeViewer.getTree().setLinesVisible(true);
    treeViewer.getTree().setHeaderVisible(true);

    ColumnViewerToolTipSupport.enableFor(treeViewer);

    TreeViewerFocusCellManager focusCellManager = new TreeViewerFocusCellManager(treeViewer,
            new FocusCellOwnerDrawHighlighter(treeViewer));
    ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(treeViewer) {
        @Override//from   w ww  .  j  av a  2s. c om
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL
                    || event.eventType == ColumnViewerEditorActivationEvent.MOUSE_CLICK_SELECTION
                    || (event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED
                            && event.keyCode == SWT.CR)
                    || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };

    TreeViewerEditor.create(treeViewer, focusCellManager, actSupport,
            ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR
                    | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION);

    TreeViewerColumn column = new TreeViewerColumn(treeViewer, 0, SWT.NONE);
    column.getColumn().setWidth(200);
    column.getColumn().setMoveable(true);
    column.getColumn().setText("Record");
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object element) {
            return element.toString();
        }

        // add tooltip here
    });

    column = new TreeViewerColumn(treeViewer, SWT.NONE);
    column.getColumn().setWidth(200);
    column.getColumn().setMoveable(true);
    column.getColumn().setText("Value");

    column.setLabelProvider(new NdefRecordModelValueColumnLabelProvider());
    column.setEditingSupport(
            new NdefRecordModelEditingSupport(treeViewer, this, operator.getNdefRecordFactory()));

    column = new TreeViewerColumn(treeViewer, SWT.NONE);
    column.getColumn().setWidth(50);
    column.getColumn().setMoveable(true);
    column.getColumn().setText("Size");
    column.getColumn().setAlignment(SWT.CENTER);
    column.setLabelProvider(new NdefRecordModelSizeColumnLabelProvider());

    // http://blog.eclipse-tips.com/2008/05/single-column-tableviewer-and.html

    column = new TreeViewerColumn(treeViewer, SWT.NONE);
    column.getColumn().setMoveable(true);
    column.getColumn().setResizable(false);
    column.getColumn().setText("Hint");
    column.getColumn().setAlignment(SWT.LEFT);

    column.setLabelProvider(new NdefRecordModelHintColumnProvider());

    column.getColumn().pack();

    treeViewer.setContentProvider(new NdefRecordModelContentProvider());

    treeViewer.setInput(operator.getModel());

    new NdefRecordModelMenuListener(treeViewer, this, ndefMultiPageEditor, operator.getModel());

    treeViewer.expandAll();

    // we want the last column to 'fill' with the layout
    // trigger at key points:
    // first show
    composite.getDisplay().asyncExec(new Runnable() {
        public void run() {
            packAndFillLastColumn();
        }
    });

    // resize
    treeViewer.getTree().addControlListener(new ControlAdapter() {
        public void controlResized(ControlEvent e) {
            packAndFillLastColumn();
        }
    });

    // manual resizing of columns
    Tree tree = treeViewer.getTree();
    for (int i = 0; i < tree.getColumnCount() - 1; i++) {
        tree.getColumn(i).addControlListener(new ControlAdapter() {
            public void controlResized(ControlEvent e) {
                packAndFillLastColumn();
            }
        });
    }

    // drag and drop
    Transfer[] types = new Transfer[] { LocalSelectionTransfer.getTransfer() };
    int operations = DND.DROP_MOVE;

    treeViewer.addDragSupport(operations, types, new DragSourceListener() {

        @Override
        public void dragFinished(DragSourceEvent event) {
            // end drag
        }

        @Override
        public void dragSetData(DragSourceEvent event) {
            // do nothing for LocalSelectionTransfer
        }

        @Override
        public void dragStart(DragSourceEvent event) {

            int column = NdefEditorPart.this.getColumn(event.x);

            if (column == 0) {
                TreeSelection selection = (TreeSelection) treeViewer.getSelection();

                Object node = selection.getFirstElement();
                if (node instanceof NdefRecordModelRecord) {
                    event.doit = true;

                    NdefRecordModelRecord ndefRecordModelRecord = (NdefRecordModelRecord) node;

                    if (ndefRecordModelRecord.getLevel() == 1) {
                        Activator.info(
                                "Start drag for " + ndefRecordModelRecord.getRecord().getClass().getSimpleName()
                                        + " at level " + ndefRecordModelRecord.getLevel());

                        event.data = node;

                        event.doit = true;
                    } else {
                        Activator.info("Do not start drag for level " + ndefRecordModelRecord.getLevel());

                        event.doit = false;
                    }
                } else {
                    Activator.info("Do not start drag");

                    event.doit = false;
                }
            } else {
                Activator.info("Do not start drag for column " + column);

                event.doit = false;
            }
        }
    });

    treeViewer.addDropSupport(operations, types, new TreeDropTargetEffect(treeViewer.getTree()) {

        /**
         * 
         * Check out what kind of (visual) insert feedback to give user in GUI while dragging: insert before or after.
         * 
         */

        @Override
        public void dragOver(DropTargetEvent event) {
            Widget item = event.item;
            if (item instanceof TreeItem) {
                TreeItem treeItem = (TreeItem) item;

                NdefRecordModelNode node = (NdefRecordModelNode) treeItem.getData();

                if (node instanceof NdefRecordModelRecord) {
                    if (node.getLevel() == 1) {

                        event.feedback = DND.FEEDBACK_EXPAND | DND.FEEDBACK_SCROLL;

                        Point pt = event.display.map(null, treeViewer.getControl(), event.x, event.y);
                        Rectangle bounds = treeItem.getBounds();
                        if (pt.y < bounds.y + bounds.height / 3) {
                            event.feedback |= DND.FEEDBACK_INSERT_BEFORE;
                        } else if (pt.y > bounds.y + 2 * bounds.height / 3) {
                            event.feedback |= DND.FEEDBACK_INSERT_AFTER;
                        } else {
                            // event.feedback |= DND.FEEDBACK_SELECT;
                        }

                    } else {
                        // ignore node
                    }
                } else {
                    // ignore node
                }
            } else if (item != null) {
                // ignore item
            } else if (item == null) {
                // ignore null item
            }

            super.dragOver(event);
        }

        public void drop(DropTargetEvent event) {

            Activator.info("Drop " + event.getSource() + " " + event.item);

            Widget item = event.item;
            if (item instanceof TreeItem) {
                TreeItem treeItem = (TreeItem) item;

                NdefRecordModelNode node = (NdefRecordModelNode) treeItem.getData();

                if (node instanceof NdefRecordModelRecord) {
                    if (node.getLevel() == 1) {

                        TreeSelection selection = (TreeSelection) treeViewer.getSelection();

                        NdefRecordModelRecord source = (NdefRecordModelRecord) selection.getFirstElement();

                        if (source.getLevel() != 1) {

                            return;
                        }

                        Point pt = event.display.map(null, treeViewer.getControl(), event.x, event.y);
                        Rectangle bounds = treeItem.getBounds();
                        if (pt.y < bounds.y + bounds.height / 3) {
                            Activator.info("Drop " + source + " before " + node);

                            operator.move(source, node.getParent(), node.getParentIndex());

                            modified(true);
                        } else if (pt.y > bounds.y + 2 * bounds.height / 3) {
                            Activator.info("Drop " + source + " after " + node);

                            operator.move(source, node.getParent(), node.getParentIndex() + 1);

                            modified(true);
                        } else {
                            // event.feedback |= DND.FEEDBACK_SELECT;
                        }

                    } else {
                        Activator.info("Ignore drop node " + node.getClass().getSimpleName() + " at level "
                                + node.getLevel());
                    }
                } else {
                    Activator.info("Ignore drop node " + node.getClass().getSimpleName());
                }
            } else if (item != null) {
                Activator.info("Ignore drop item " + item.getClass().getSimpleName() + " " + item.getData());
            } else if (item == null) {
                // ignore null item
            }
        }

    });
}

From source file:uk.ac.diamond.scisoft.analysis.rcp.results.navigator.DataNavigator.java

License:Apache License

/**
 * Create contents of the view part.//w  w  w.  j av a2 s.  co m
 * @param parent
 */
@Override
public void createPartControl(Composite parent) {

    this.resultsViewer = new TreeViewer(parent,
            SWT.BORDER | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI);

    ColumnViewerToolTipSupport.enableFor(resultsViewer);

    final TreeViewerColumn name = new TreeViewerColumn(resultsViewer, SWT.NONE, 0);
    name.setLabelProvider(new IFileTreeColumnProvider());
    name.getColumn().setText("Name");
    name.getColumn().setWidth(350);
    name.getColumn().addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            resultsViewer.setComparator(new AlphaNumericFileSorter());
        }
    });

    final TreeViewerColumn size = new TreeViewerColumn(resultsViewer, SWT.NONE, 1);
    size.getColumn().setText("Size");
    size.getColumn().setWidth(100);
    size.getColumn().addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            resultsViewer.setComparator(new SizeFileSorter());
        }
    });

    final TreeViewerColumn date = new TreeViewerColumn(resultsViewer, SWT.NONE, 2);
    date.getColumn().setText("Date Modified");
    date.getColumn().setWidth(250);
    date.getColumn().addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            resultsViewer.setComparator(new DateFileSorter());
        }
    });

    resultsViewer.setColumnProperties(new String[] { "Name", "Size", "Date Modified" });
    resultsViewer.setUseHashlookup(true);
    resultsViewer.setContentProvider(new IFileTreeContentProvider(project));
    resultsViewer.setLabelProvider(new IFileTreeLabelProvider());
    resultsViewer.getTree().setHeaderVisible(true);

    //resultsViewer.setInput(rootFile);
    //resultsViewer.expandToLevel(3);
    try {
        setupProject(project, null);
    } catch (Exception e1) {
        logger.error("Cannot create project", e1);
    }
    IWorkingSetManager workingSetManager = PlatformUI.getWorkbench().getWorkingSetManager();
    if (workingSetManager.getWorkingSet(DATA_WORKINGSET_NAME) == null) {
        workingSetManager.addWorkingSet(
                workingSetManager.createWorkingSet(DATA_WORKINGSET_NAME, new IAdaptable[] { project }));
    }

    getSite().setSelectionProvider(resultsViewer);

    createRightClickMenu();
    createDragSupport(resultsViewer);
    createActions();
    initializeToolBar();
    initializeMenu();

    addSelectionListener(resultsViewer);

}