Example usage for org.eclipse.jface.viewers TreeViewer getAutoExpandLevel

List of usage examples for org.eclipse.jface.viewers TreeViewer getAutoExpandLevel

Introduction

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

Prototype

public int getAutoExpandLevel() 

Source Link

Document

Returns the auto-expand level.

Usage

From source file:org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor.java

License:Open Source License

private TreeViewer createTreeViewerArea(Composite parent) {

    final Composite treeArea = new Composite(parent, SWT.BORDER);

    treeArea.setLayout(new FillLayout());
    treeArea.setData(CSS_CLASS_KEY, "formContainer"); //$NON-NLS-1$
    treeArea.setBackgroundMode(SWT.INHERIT_DEFAULT);

    TreeViewer tempViewer = null;//from w ww.jav  a2  s. c  o  m
    String property = System.getProperty(ORG_ECLIPSE_E4_TOOLS_MODELEDITOR_FILTEREDTREE_ENABLED_XMITAB_DISABLED);
    if (property != null || preferences.getBoolean("tab-form-search-show", false)) { //$NON-NLS-1$
        FilteredTree viewParent = new FilteredTree(treeArea,
                SWT.MULTI | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL, new PatternFilter(), true);
        tempViewer = viewParent.getViewer();
    } else {
        tempViewer = new TreeViewerEx(treeArea, SWT.MULTI | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL,
                emfDocumentProvider, modelProvider);
    }
    final TreeViewer viewer = tempViewer;

    viewer.setLabelProvider(new ComponentLabelProvider(this, messages));
    ObservableListTreeContentProvider contentProvider = new ObservableListTreeContentProvider(
            new ObservableFactoryImpl(), new TreeStructureAdvisor() {
            });
    viewer.setContentProvider(contentProvider);

    final WritableSet clearedSet = new WritableSet();

    contentProvider.getKnownElements().addSetChangeListener(new ISetChangeListener() {

        @Override
        public void handleSetChange(SetChangeEvent event) {
            for (Object o : event.diff.getAdditions()) {
                if (o instanceof EObject) {
                    clearedSet.add(o);
                }
            }

            for (Object o : event.diff.getRemovals()) {
                if (o instanceof EObject) {
                    clearedSet.remove(o);
                }
            }
        }
    });

    for (FeaturePath p : labelFeaturePaths) {
        IObservableMap map = EMFProperties.value(p).observeDetail(clearedSet);
        map.addMapChangeListener(new IMapChangeListener() {

            @Override
            public void handleMapChange(MapChangeEvent event) {
                viewer.update(event.diff.getChangedKeys().toArray(), null);
            }
        });
    }

    viewer.setInput(modelProvider.getRoot());
    viewer.setAutoExpandLevel(2);
    viewer.expandToLevel(viewer.getAutoExpandLevel());
    viewer.addDoubleClickListener(new IDoubleClickListener() {

        @Override
        public void doubleClick(DoubleClickEvent event) {
            TreeViewer viewer = (TreeViewer) event.getViewer();
            IStructuredSelection thisSelection = (IStructuredSelection) event.getSelection();
            Object selectedNode = thisSelection.getFirstElement();
            if (mod1Down) {
                if (viewer.getExpandedState(selectedNode))
                    viewer.setExpandedState(selectedNode, false);
                else
                    viewer.expandToLevel(selectedNode, AbstractTreeViewer.ALL_LEVELS);
            } else {
                viewer.setExpandedState(selectedNode, !viewer.getExpandedState(selectedNode));
            }

        }
    });

    // Effect of filtered tree implementation (bug 391086)
    viewer.getTree().addTreeListener(new TreeAdapter() {
        @Override
        public void treeCollapsed(TreeEvent e) {
            viewer.expandToLevel(viewer.getAutoExpandLevel());
        }
    });

    int ops = DND.DROP_MOVE;
    viewer.addDragSupport(ops, new Transfer[] { MemoryTransfer.getInstance() }, new DragListener(viewer));
    viewer.addDropSupport(ops, new Transfer[] { MemoryTransfer.getInstance() },
            new DropListener(viewer, modelProvider.getEditingDomain()));

    return viewer;
}

From source file:org.eclipse.jubula.client.ui.controllers.TreeViewContainerGUIController.java

License:Open Source License

/**
 * collapse or expand the give TreeViewer
 * //from   w w w .j av a2 s . c om
 * @param treeCont
 *            ITreeViewerContainer
 */
public static void collapseExpandTree(ITreeViewerContainer treeCont) {
    TreeViewer tv = treeCont.getTreeViewer();
    try {
        tv.getTree().setRedraw(false);
        tv.collapseAll();
        int autoExpandLevel = tv.getAutoExpandLevel();
        tv.expandToLevel(autoExpandLevel);
    } finally {
        tv.getTree().setRedraw(true);
    }
}

From source file:org.eclipse.tcf.te.tcf.processes.ui.editor.ProcessMonitorEventListener.java

License:Open Source License

@Override
public void eventFired(EventObject event) {
    if (event instanceof ChangeEvent) {
        final ChangeEvent changeEvent = (ChangeEvent) event;
        final Object source = changeEvent.getSource();

        if (treeControl.getViewer() != null) {
            if (treeControl.getViewer().getControl() == null
                    || treeControl.getViewer().getControl().isDisposed()) {
                EventManager.getInstance().removeEventListener(this);
                return;
            }//from   w  w  w  .  j  av  a  2 s.  c  o m
            // Property changes for the runtime model refreshes the whole tree.
            if (source instanceof IRuntimeModel) {
                treeControl.getViewer().refresh();
            }

            // Property changes for individual context nodes refreshes the node only
            else if (source instanceof IProcessContextNode) {
                if ("expanded".equals(changeEvent.getEventId())) { //$NON-NLS-1$
                    // Expansion state of the node changed.
                    boolean expanded = ((Boolean) changeEvent.getNewValue()).booleanValue();
                    // Update the nodes expansion state
                    ((TreeViewer) treeControl.getViewer()).setExpandedState(source, expanded);
                } else {
                    ((TreeViewer) treeControl.getViewer()).refresh(source, true);
                }
            }

            else if (source instanceof IPeerNode && source == getPeerNode()) {
                if (IPeerNodeProperties.PROPERTY_CONNECT_STATE.equals(changeEvent.getEventId())) {
                    // Peer node connect state changed to connected
                    if (changeEvent.getNewValue().equals(Integer.valueOf(IConnectable.STATE_CONNECTED))) {
                        // Get the new runtime model
                        final IRuntimeModel model = ModelManager.getRuntimeModel(getPeerNode());
                        // Update the tree viewer input element
                        if (treeControl.getViewer().getInput() != model) {
                            treeControl.getViewer().setInput(model);
                        }
                        // Refresh the model
                        Protocol.invokeLater(new Runnable() {
                            @Override
                            public void run() {
                                model.getService(IRuntimeModelRefreshService.class).refresh(new Callback() {
                                    @Override
                                    protected void internalDone(Object caller, IStatus status) {
                                        // Apply the auto expand level to the tree
                                        final TreeViewer treeViewer = (TreeViewer) treeControl.getViewer();
                                        DisplayUtil.safeAsyncExec(new Runnable() {
                                            @Override
                                            public void run() {
                                                treeViewer.expandToLevel(treeViewer.getAutoExpandLevel());
                                            }
                                        });
                                    }
                                });
                            }
                        });
                    } else {
                        // Trigger a refresh on the whole viewer to show the "Please connect ..." text
                        treeControl.getViewer().refresh();
                    }
                }
            }
        }
    }
}