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

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

Introduction

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

Prototype

public TreeViewerFocusCellManager(TreeViewer viewer, FocusCellHighlighter focusDrawingDelegate,
        CellNavigationStrategy navigationStrategy) 

Source Link

Document

Create a new manager with a custom navigation strategy

Usage

From source file:de.walware.ecommons.ui.util.ViewerUtil.java

License:Open Source License

public static void installDefaultEditBehaviour(final TreeViewer treeViewer) {
    final CellNavigationStrategy naviStrat = new CellNavigationStrategy() {
        @Override//from w  w w .j  a  v a  2  s .c om
        public ViewerCell findSelectedCell(final ColumnViewer viewer, final ViewerCell currentSelectedCell,
                final Event event) {
            final ViewerCell cell = super.findSelectedCell(viewer, currentSelectedCell, event);
            if (cell != null) {
                treeViewer.getTree().showColumn(treeViewer.getTree().getColumn(cell.getColumnIndex()));
            }
            return cell;
        }

    };
    final TreeViewerFocusCellManager focusCellManager = new TreeViewerFocusCellManager(treeViewer,
            new FocusCellOwnerDrawHighlighter(treeViewer), naviStrat);
    TreeViewerEditor.create(treeViewer, focusCellManager, createActivationStrategy(treeViewer),
            ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_VERTICAL
                    | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR | ColumnViewerEditor.KEYBOARD_ACTIVATION);
}

From source file:org.bonitasoft.studio.contract.ui.property.input.ContractInputTreeViewer.java

License:Open Source License

public void initialize(final ContractInputController inputController, final IMessageManager messageManager,
        final EMFDataBindingContext emfDataBindingContext) {
    this.messageManager = messageManager;
    this.inputController = inputController;
    this.emfDataBindingContext = emfDataBindingContext;
    final ComposedAdapterFactory adapterFactory = new ComposedAdapterFactory(
            ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
    propertySourceProvider = new AdapterFactoryContentProvider(adapterFactory);
    adapterFactoryLabelProvider = new AdapterFactoryLabelProvider(adapterFactory);
    getTree().setHeaderVisible(true);//from   w w  w  .  j a  v a  2  s .  c o m
    getTree().setLinesVisible(true);
    addFilter(new ComplexTypeChildrenViewerFilter());
    final ObservableListTreeContentProvider contentProvider = new ObservableListTreeContentProvider(
            new ContractInputObservableFactory(), new ContractInputTreeStructureAdvisor());
    setContentProvider(contentProvider);
    final CellNavigationStrategy cellNavigationStrategy = new AddRowOnEnterCellNavigationStrategy(this,
            inputController);
    final TreeViewerFocusCellManager focusCellManager = new TreeViewerFocusCellManager(this,
            new FocusCellOwnerDrawHighlighter(this), cellNavigationStrategy);
    TreeViewerEditor.create(this, focusCellManager, new CharriageColumnViewerEditorActivationStrategy(this),
            ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR
                    | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION);

    ColumnViewerToolTipSupport.enableFor(this);

    configureTableLayout();
    createColumns();
}

From source file:org.eclipsetrader.ui.internal.charts.views.HistoryDataDetailEditor.java

License:Open Source License

void createViewer(Composite parent) {
    Tree tree = new Tree(parent, SWT.FULL_SELECTION | SWT.MULTI);
    tree.setHeaderVisible(true);/*w ww.j a  v a  2s  . c o  m*/
    tree.setLinesVisible(true);

    viewer = new TreeViewer(tree);

    IObservableFactory observableFactory = new IObservableFactory() {

        @Override
        public IObservable createObservable(Object target) {
            if (target instanceof HistoryDataDetailEditorModel) {
                return Observables
                        .unmodifiableObservableList(((HistoryDataDetailEditorModel) target).getList());
            }
            if (target instanceof HistoryDataEditorModel) {
                return Observables.unmodifiableObservableList(((HistoryDataEditorModel) target).getList());
            }
            return null;
        }
    };

    TreeStructureAdvisor treeStructureAdvisor = new TreeStructureAdvisor() {

        @Override
        public Boolean hasChildren(Object element) {
            if (element instanceof HistoryDataEditorModel) {
                return true;
            }
            return false;
        }
    };

    ObservableListTreeContentProvider contentProvider = new ObservableListTreeContentProvider(observableFactory,
            treeStructureAdvisor);
    viewer.setContentProvider(contentProvider);

    GC gc = new GC(parent);
    FontMetrics fontMetrics = gc.getFontMetrics();
    gc.dispose();

    TreeViewerColumn viewerColumn = new TreeViewerColumn(viewer, SWT.NONE);
    viewerColumn.getColumn().setText(Messages.HistoryDataDetailEditor_Time);
    viewerColumn.getColumn().setWidth(Dialog.convertHorizontalDLUsToPixels(fontMetrics, 70));
    viewerColumn.setEditingSupport(ObservableValueEditingSupport.create(viewer, dbc, new TextCellEditor(tree),
            CellEditorValueProperty.timeValue(), BeanProperties.value(HistoryDataElement.PROP_DATE)));

    viewerColumn = new TreeViewerColumn(viewer, SWT.RIGHT);
    viewerColumn.getColumn().setText(Messages.HistoryDataDetailEditor_Open);
    viewerColumn.getColumn().setWidth(Dialog.convertHorizontalDLUsToPixels(fontMetrics, 55));
    viewerColumn.setEditingSupport(ObservableValueEditingSupport.create(viewer, dbc, new TextCellEditor(tree),
            CellEditorValueProperty.doubleValue(), BeanProperties.value(HistoryDataElement.PROP_OPEN)));

    viewerColumn = new TreeViewerColumn(viewer, SWT.RIGHT);
    viewerColumn.getColumn().setText(Messages.HistoryDataDetailEditor_High);
    viewerColumn.getColumn().setWidth(Dialog.convertHorizontalDLUsToPixels(fontMetrics, 55));
    viewerColumn.setEditingSupport(ObservableValueEditingSupport.create(viewer, dbc, new TextCellEditor(tree),
            CellEditorValueProperty.doubleValue(), BeanProperties.value(HistoryDataElement.PROP_HIGH)));

    viewerColumn = new TreeViewerColumn(viewer, SWT.RIGHT);
    viewerColumn.getColumn().setText(Messages.HistoryDataDetailEditor_Low);
    viewerColumn.getColumn().setWidth(Dialog.convertHorizontalDLUsToPixels(fontMetrics, 55));
    viewerColumn.setEditingSupport(ObservableValueEditingSupport.create(viewer, dbc, new TextCellEditor(tree),
            CellEditorValueProperty.doubleValue(), BeanProperties.value(HistoryDataElement.PROP_LOW)));

    viewerColumn = new TreeViewerColumn(viewer, SWT.RIGHT);
    viewerColumn.getColumn().setText(Messages.HistoryDataDetailEditor_Close);
    viewerColumn.getColumn().setWidth(Dialog.convertHorizontalDLUsToPixels(fontMetrics, 55));
    viewerColumn.setEditingSupport(ObservableValueEditingSupport.create(viewer, dbc, new TextCellEditor(tree),
            CellEditorValueProperty.doubleValue(), BeanProperties.value(HistoryDataElement.PROP_CLOSE)));

    viewerColumn = new TreeViewerColumn(viewer, SWT.RIGHT);
    viewerColumn.getColumn().setText(Messages.HistoryDataDetailEditor_Volume);
    viewerColumn.getColumn().setWidth(Dialog.convertHorizontalDLUsToPixels(fontMetrics, 70));
    viewerColumn.setEditingSupport(ObservableValueEditingSupport.create(viewer, dbc, new TextCellEditor(tree),
            CellEditorValueProperty.longValue(), BeanProperties.value(HistoryDataElement.PROP_VOLUME)));

    if (Platform.WS_GTK.equals(Platform.getWS())) {
        viewerColumn = new TreeViewerColumn(viewer, SWT.RIGHT);
        viewerColumn.getColumn().setWidth(1);
    }

    final String[] properties = new String[] { HistoryDataElement.PROP_DATE, HistoryDataElement.PROP_OPEN,
            HistoryDataElement.PROP_HIGH, HistoryDataElement.PROP_LOW, HistoryDataElement.PROP_CLOSE,
            HistoryDataElement.PROP_VOLUME, "" //$NON-NLS-1$
    };

    DataViewerLabelProvider labelProvider = new DataViewerLabelProvider(
            BeansObservables.observeMaps(contentProvider.getKnownElements(), properties));
    labelProvider.setDateFormat(Util.getTimeFormat());
    viewer.setLabelProvider(labelProvider);

    viewer.setSorter(new ViewerSorter() {

        @Override
        public int compare(Viewer viewer, Object o1, Object o2) {
            if ((o1 instanceof HistoryDataEditorModel) && (o2 instanceof HistoryDataEditorModel)) {
                TimeSpan ts1 = ((HistoryDataEditorModel) o1).getBarSize();
                TimeSpan ts2 = ((HistoryDataEditorModel) o2).getBarSize();
                if (ts1.higherThan(ts2)) {
                    return 1;
                }
                if (ts2.higherThan(ts1)) {
                    return -1;
                }
                return 0;
            } else if ((o1 instanceof HistoryDataElement) && (o2 instanceof HistoryDataElement)) {
                HistoryDataElement e1 = (HistoryDataElement) o1;
                HistoryDataElement e2 = (HistoryDataElement) o2;
                if (e1.getDate() != null && e2.getDate() != null) {
                    return e1.getDate().compareTo(e2.getDate());
                }
                if (e1.getDate() != null && e2.getDate() == null) {
                    return -1;
                }
                if (e1.getDate() == null && e2.getDate() != null) {
                    return 1;
                }
            }
            return 0;
        }
    });

    CellNavigationStrategy naviStrat = new CellNavigationStrategy() {

        @Override
        public ViewerCell findSelectedCell(ColumnViewer viewer, ViewerCell currentSelectedCell, Event event) {
            ViewerCell cell = super.findSelectedCell(viewer, currentSelectedCell, event);
            if (cell != null) {
                if (cell.getColumnIndex() == properties.length - 1) {
                    return null;
                }
                Tree tree = ((TreeViewer) viewer).getTree();
                tree.showColumn(tree.getColumn(cell.getColumnIndex()));
            }
            return cell;
        }
    };

    TreeViewerFocusCellManager focusCellManager = new TreeViewerFocusCellManager(viewer,
            new FocusCellOwnerDrawHighlighter(viewer), naviStrat);

    ColumnViewerEditorActivationStrategy activationStrategy = new ColumnViewerEditorActivationStrategy(viewer) {

        @Override
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL
                    || (event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED
                            && event.keyCode == SWT.CR)
                    || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;

        }
    };
    TreeViewerEditor.create(viewer, focusCellManager, activationStrategy,
            ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR
                    | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION);

    tree.addTraverseListener(new TraverseListener() {

        @Override
        public void keyTraversed(TraverseEvent e) {
            if (e.detail == SWT.TRAVERSE_RETURN || e.detail == SWT.TRAVERSE_ESCAPE) {
                e.doit = false;
            }
        }
    });
    tree.addKeyListener(new KeyAdapter() {

        @Override
        public void keyPressed(KeyEvent e) {
            if (viewer.isCellEditorActive()) {
                return;
            }
            if (e.keyCode == SWT.INSERT) {
                IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();

                HistoryDataEditorModel parent = null;

                int index = 0;
                if (!selection.isEmpty()) {
                    parent = model.getParent(selection.getFirstElement());
                    if (parent == null) {
                        return;
                    }
                    index = parent.getList().indexOf(selection.getFirstElement());
                    if (index == -1) {
                        index = parent.getList().size();
                    }
                }

                final HistoryDataElement element = new HistoryDataElement();
                parent.getList().add(index, element);

                e.doit = false;

                Display.getDefault().asyncExec(new Runnable() {

                    @Override
                    public void run() {
                        if (!viewer.getControl().isDisposed()) {
                            viewer.editElement(element, 0);
                        }
                    }
                });
            } else if (e.character == SWT.DEL) {
                IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
                for (Object element : selection.toList()) {
                    HistoryDataEditorModel parent = model.getParent(selection.getFirstElement());
                    if (parent != null) {
                        if (parent.getList().remove(element)) {
                            changeSupport.firePropertyChange(PROP_DIRTY, dirty, dirty = true);
                        }
                    }
                }
            }
        }
    });

    viewer.setInput(model);
}