Example usage for org.eclipse.jface.viewers TreeViewerEditor create

List of usage examples for org.eclipse.jface.viewers TreeViewerEditor create

Introduction

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

Prototype

public static void create(TreeViewer viewer, ColumnViewerEditorActivationStrategy editorActivationStrategy,
        int feature) 

Source Link

Document

Create a customized editor whose activation process is customized

Usage

From source file:au.gov.ga.earthsci.application.parts.layer.LayerTreePart.java

License:Apache License

@PostConstruct
public void init(Composite parent, EMenuService menuService) {
    LayerOpacityToolControl.setPartContext(context);

    viewer = new CheckboxTreeViewer(parent, SWT.MULTI);
    viewer.getTree().setBackgroundImage(ImageRegistry.getInstance().get(ImageRegistry.ICON_TRANSPARENT));
    context.set(TreeViewer.class, viewer);

    clipboard = new Clipboard(shell.getDisplay());
    context.set(Clipboard.class, clipboard);

    IListProperty childrenProperty = new MultiListProperty(
            new IListProperty[] { BeanProperties.list("children") }); //$NON-NLS-1$

    ObservableListTreeContentProvider contentProvider = new ObservableListTreeContentProvider(
            childrenProperty.listFactory(), null);
    viewer.setContentProvider(contentProvider);

    //TreeViewerEditor.create(viewer, new SecondClickColumnViewerEditorActivationStrategy(viewer), ColumnViewerEditor.DEFAULT);

    IObservableSet knownElements = contentProvider.getKnownElements();
    IObservableMap enabledMap = BeanProperties.value("enabled").observeDetail(knownElements); //$NON-NLS-1$
    IObservableMap opacityMap = BeanProperties.value("opacity").observeDetail(knownElements); //$NON-NLS-1$
    IObservableMap nameMap = BeanProperties.value("name").observeDetail(knownElements); //$NON-NLS-1$
    IObservableMap labelMap = BeanProperties.value("label").observeDetail(knownElements); //$NON-NLS-1$
    IObservableMap statusMap = BeanProperties.value("status").observeDetail(knownElements); //$NON-NLS-1$
    IObservableMap anyChildrenEnabledMap = BeanProperties.value("anyChildrenEnabled") //$NON-NLS-1$
            .observeDetail(knownElements);
    IObservableMap allChildrenEnabledMap = BeanProperties.value("allChildrenEnabled") //$NON-NLS-1$
            .observeDetail(knownElements);
    IObservableMap childrenMap = BeanProperties.value("children").observeDetail(knownElements); //$NON-NLS-1$
    IObservableMap expandedMap = BeanProperties.value("expanded").observeDetail(knownElements); //$NON-NLS-1$

    IObservableMap[] labelAttributeMaps = new IObservableMap[] { enabledMap, opacityMap, nameMap, labelMap,
            anyChildrenEnabledMap, allChildrenEnabledMap, statusMap };

    labelProvider = new LayerTreeLabelProvider(labelAttributeMaps);
    viewer.setLabelProvider(labelProvider);
    viewer.setCheckStateProvider(new LayerTreeCheckStateProvider());

    viewer.setInput(model.getRootNode());
    viewer.setExpandedElements(getExpandedNodes());

    IMapChangeListener childrenListener = new IMapChangeListener() {
        @Override/*from   w  ww  .j av  a2  s  .  com*/
        public void handleMapChange(MapChangeEvent event) {
            //for any children added, expand the nodes
            Set<?> addedKeys = event.diff.getAddedKeys();
            for (Object o : addedKeys) {
                if (o instanceof ILayerTreeNode) {
                    ((ILayerTreeNode) o).getParent().getValue().setExpanded(true);
                }
            }
        }
    };
    IMapChangeListener expandedListener = new IMapChangeListener() {
        @Override
        public void handleMapChange(MapChangeEvent event) {
            //ensure the expanded elements are kept in sync with the model
            viewer.getTree().getDisplay().asyncExec(new Runnable() {
                @Override
                public void run() {
                    if (!viewer.getTree().isDisposed()) {
                        viewer.setExpandedElements(getExpandedNodes());
                    }
                }
            });
        }
    };
    childrenMap.addMapChangeListener(childrenListener);
    childrenMap.addMapChangeListener(expandedListener);
    expandedMap.addMapChangeListener(expandedListener);

    viewer.addCheckStateListener(new ICheckStateListener() {
        @Override
        public void checkStateChanged(CheckStateChangedEvent event) {
            Object element = event.getElement();
            if (element instanceof ILayerTreeNode) {
                ILayerTreeNode node = (ILayerTreeNode) element;
                node.enableChildren(event.getChecked());
            }
        }
    });

    viewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
            List<?> list = selection.toList();
            ILayerTreeNode[] array = list.toArray(new ILayerTreeNode[list.size()]);
            selectionService.setSelection(array.length == 1 ? array[0] : array);
        }
    });

    viewer.addTreeListener(new ITreeViewerListener() {
        @Override
        public void treeExpanded(TreeExpansionEvent event) {
            ILayerTreeNode layerNode = (ILayerTreeNode) event.getElement();
            layerNode.setExpanded(true);
        }

        @Override
        public void treeCollapsed(TreeExpansionEvent event) {
            ILayerTreeNode layerNode = (ILayerTreeNode) event.getElement();
            layerNode.setExpanded(false);
        }
    });

    viewer.getTree().addMouseListener(new MouseAdapter() {
        @Override
        public void mouseDoubleClick(MouseEvent e) {
            ViewerCell cell = viewer.getCell(new Point(e.x, e.y));
            if (cell == null)
                return;

            ILayerTreeNode layer = (ILayerTreeNode) cell.getElement();
            selectLayer(layer);
        }

        @Override
        public void mouseDown(MouseEvent e) {
            ViewerCell cell = viewer.getCell(new Point(e.x, e.y));
            if (cell == null) {
                viewer.setSelection(StructuredSelection.EMPTY);
            }
        }
    });

    viewer.getTree().addTraverseListener(new TraverseListener() {
        @Override
        public void keyTraversed(TraverseEvent e) {
            if (e.detail == SWT.TRAVERSE_RETURN) {
                IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
                if (selection.size() == 1) {
                    ILayerTreeNode layer = (ILayerTreeNode) selection.getFirstElement();
                    selectLayer(layer);
                }
            }
        }
    });

    viewer.setCellEditors(new CellEditor[] { new TextCellEditor(viewer.getTree(), SWT.BORDER) });
    viewer.setColumnProperties(new String[] { "layer" }); //$NON-NLS-1$

    viewer.setCellModifier(new ICellModifier() {
        @Override
        public void modify(Object element, String property, Object value) {
            if (element instanceof Item) {
                element = ((Item) element).getData();
            }
            ((ILayerTreeNode) element).setLabel((String) value);
        }

        @Override
        public Object getValue(Object element, String property) {
            if (element instanceof Item) {
                element = ((Item) element).getData();
            }
            return ((ILayerTreeNode) element).getLabelOrName();
        }

        @Override
        public boolean canModify(Object element, String property) {
            return true;
        }
    });

    ColumnViewerEditorActivationStrategy activationStrategy = new ColumnViewerEditorActivationStrategy(viewer) {
        @Override
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };
    TreeViewerEditor.create(viewer, activationStrategy, ColumnViewerEditor.KEYBOARD_ACTIVATION);

    //add drag and drop support
    int ops = DND.DROP_COPY | DND.DROP_MOVE;
    viewer.addDragSupport(ops, new Transfer[] { LayerTransfer.getInstance() },
            new LayerTreeDragSourceListener(viewer));
    viewer.addDropSupport(ops, new Transfer[] { LayerTransfer.getInstance(), FileTransfer.getInstance() },
            new LayerTreeDropAdapter(viewer, model, context));

    //add context menu
    menuService.registerContextMenu(viewer.getTree(), "au.gov.ga.earthsci.application.layertree.popupmenu"); //$NON-NLS-1$
}

From source file:au.gov.ga.earthsci.layer.ui.LayerTreePart.java

License:Apache License

protected void createStructureViewer(Composite parent, EMenuService menuService, CTabItem tabItem) {
    structureViewer = new CheckboxTreeViewer(parent, SWT.MULTI);
    tabItem.setControl(structureViewer.getControl());
    structureViewer.getTree()//from   w  ww. j av a2  s  . c  o m
            .setBackgroundImage(ImageRegistry.getInstance().get(ImageRegistry.ICON_TRANSPARENT));
    context.set(TreeViewer.class, structureViewer);

    clipboard = new Clipboard(parent.getDisplay());
    context.set(Clipboard.class, clipboard);

    //create a property change listener for updating the labels whenever a property
    //changes on an ILayerTreeNode instance
    final PropertyChangeListener anyChangeListener = new PropertyChangeListener() {
        @Override
        public void propertyChange(final PropertyChangeEvent evt) {
            updateElementLabel(evt.getSource());
        }
    };
    //create a property change listener that ensures the expanded state of the tree
    //is kept in sync with the value of the expanded property for each node
    final PropertyChangeListener expandedChangeListener = new PropertyChangeListener() {
        @Override
        public void propertyChange(PropertyChangeEvent evt) {
            syncExpandedNodes();
        }
    };

    //setup the label provider
    labelProvider = new LayerTreeLabelProvider();

    //create a bean list property associated with ILayerTreeNode's children property
    IBeanListProperty<ILayerTreeNode, ILayerTreeNode> childrenProperty = BeanProperties
            .list(ILayerTreeNode.class, "children", ILayerTreeNode.class); //$NON-NLS-1$
    //setup a factory for creating observables observing ILayerTreeNodes
    IObservableFactory<ILayerTreeNode, IObservableList<ILayerTreeNode>> observableFactory = childrenProperty
            .listFactory();

    //listen for any changes (additions/removals) to any of the children in the tree
    observableListTreeSupport = new ObservableListTreeSupport<ILayerTreeNode>(observableFactory);
    observableListTreeSupport.addListener(new ITreeChangeListener<ILayerTreeNode>() {
        @Override
        public void elementAdded(ILayerTreeNode element) {
            element.addPropertyChangeListener(anyChangeListener);
            element.addPropertyChangeListener("expanded", expandedChangeListener); //$NON-NLS-1$
        }

        @Override
        public void elementRemoved(ILayerTreeNode element) {
            element.removePropertyChangeListener(anyChangeListener);
            element.removePropertyChangeListener("expanded", expandedChangeListener); //$NON-NLS-1$
        }
    });

    //create a content provider that listens for changes to any children in the tree
    ObservableListTreeContentProvider<ILayerTreeNode> contentProvider = new ObservableListTreeContentProvider<ILayerTreeNode>(
            observableFactory, null);

    //set the viewer's providers
    structureViewer.setContentProvider(contentProvider);
    structureViewer.setLabelProvider(labelProvider);
    structureViewer.setCheckStateProvider(new LayerTreeCheckStateProvider());

    //set the viewer and listener inputs
    structureViewer.setInput(model.getRootNode());
    observableListTreeSupport.setInput(model.getRootNode());

    //Listen for any additions to the tree, and expand added node's parent, so that
    //added nodes are always visible. This is done after the input is set up, so that
    //we don't expand all the nodes that are already in the tree.
    observableListTreeSupport.addListener(new TreeChangeAdapter<ILayerTreeNode>() {
        @Override
        public void elementAdded(ILayerTreeNode element) {
            //for any children added, expand the nodes
            if (!element.isRoot()) {
                element.getParent().setExpanded(true);
            }

            //if the nodes were already expanded, the expanded property change event
            //is not fired, so we need to sync the expanded state anyway
            syncExpandedNodes();

            //when a layer is added, we should activate this part and select the added element
            activateAndSelectElement(element);
        }
    });

    //expand any nodes that should be expanded after unpersisting
    syncExpandedNodes();

    //enable/disable any nodes that are checked/unchecked
    structureViewer.addCheckStateListener(new ICheckStateListener() {
        @Override
        public void checkStateChanged(CheckStateChangedEvent event) {
            Object element = event.getElement();
            if (element instanceof ILayerTreeNode) {
                ILayerTreeNode node = (ILayerTreeNode) element;
                node.enableChildren(event.getChecked());
            }
        }
    });

    //setup the selection tracking
    structureViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) structureViewer.getSelection();
            List<?> list = selection.toList();
            ILayerTreeNode[] array = list.toArray(new ILayerTreeNode[list.size()]);
            settingSelection = true;
            selectionService.setSelection(array.length == 1 ? array[0] : array);
            settingSelection = false;
        }
    });
    structureViewer.getTree().addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
            IStructuredSelection selection = (IStructuredSelection) structureViewer.getSelection();
            ILayerTreeNode firstElement = (ILayerTreeNode) selection.getFirstElement();
            if (firstElement != null) {
                selectLayer(firstElement);
            }
        }
    });

    //setup tree expansion/collapse listening
    structureViewer.addTreeListener(new ITreeViewerListener() {
        @Override
        public void treeExpanded(TreeExpansionEvent event) {
            ILayerTreeNode layerNode = (ILayerTreeNode) event.getElement();
            layerNode.setExpanded(true);
        }

        @Override
        public void treeCollapsed(TreeExpansionEvent event) {
            ILayerTreeNode layerNode = (ILayerTreeNode) event.getElement();
            layerNode.setExpanded(false);
        }
    });

    //make tree cells unselectable by selecting outside
    structureViewer.getTree().addMouseListener(new MouseAdapter() {
        @Override
        public void mouseDown(MouseEvent e) {
            ViewerCell cell = structureViewer.getCell(new Point(e.x, e.y));
            if (cell == null) {
                structureViewer.setSelection(StructuredSelection.EMPTY);
            }
        }
    });

    //setup cell editing
    structureViewer
            .setCellEditors(new CellEditor[] { new TextCellEditor(structureViewer.getTree(), SWT.BORDER) });
    structureViewer.setColumnProperties(new String[] { "layer" }); //$NON-NLS-1$
    structureViewer.setCellModifier(new ICellModifier() {
        @Override
        public void modify(Object element, String property, Object value) {
            if (element instanceof Item) {
                element = ((Item) element).getData();
            }
            ((ILayerTreeNode) element).setLabel((String) value);
        }

        @Override
        public Object getValue(Object element, String property) {
            if (element instanceof Item) {
                element = ((Item) element).getData();
            }
            return ((ILayerTreeNode) element).getLabelOrName();
        }

        @Override
        public boolean canModify(Object element, String property) {
            return true;
        }
    });

    ColumnViewerEditorActivationStrategy activationStrategy = new ColumnViewerEditorActivationStrategy(
            structureViewer) {
        @Override
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };
    TreeViewerEditor.create(structureViewer, activationStrategy, ColumnViewerEditor.KEYBOARD_ACTIVATION);

    //add drag and drop support
    int ops = DND.DROP_COPY | DND.DROP_MOVE;
    structureViewer.addDragSupport(ops,
            new Transfer[] { LocalLayerTransfer.getInstance(), LayerTransfer.getInstance() },
            new LayerTreeDragSourceListener(structureViewer));
    structureViewer
            .addDropSupport(ops,
                    new Transfer[] { LocalLayerTransfer.getInstance(), LayerTransfer.getInstance(),
                            FileTransfer.getInstance() },
                    new LayerTreeDropAdapter(structureViewer, model, context));

    //add context menu
    menuService.registerContextMenu(structureViewer.getTree(),
            "au.gov.ga.earthsci.application.layertree.popupmenu"); //$NON-NLS-1$
}

From source file:com.nokia.carbide.remoteconnections.view.ConnectionsView.java

License:Open Source License

public void createPartControl(Composite parent) {
    viewer = new TreeViewer(parent, SWT.H_SCROLL | SWT.V_SCROLL);

    TreeViewerColumn nameColumn = new TreeViewerColumn(viewer, SWT.LEFT);
    nameColumn.setLabelProvider(new TreeColumnViewerLabelProvider(new NameLabelProvider()));
    nameColumn.getColumn().setText(Messages.getString("ConnectionsView.NameColumnHeader")); //$NON-NLS-1$
    nameColumn.setEditingSupport(new NameEditingSupport(nameColumn.getViewer()));
    ColumnViewerEditorActivationStrategy activationStrategy = new ColumnViewerEditorActivationStrategy(
            nameColumn.getViewer()) {//  w w  w . j  a v a2 s  .  com
        @Override
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };
    TreeViewerEditor.create(viewer, activationStrategy, ColumnViewerEditor.DEFAULT);

    boldViewerFont = JFaceResources.getFontRegistry().getBold(JFaceResources.DEFAULT_FONT);

    TreeViewerColumn typeColumn = new TreeViewerColumn(viewer, SWT.LEFT);
    typeColumn.setLabelProvider(new TypeLabelProvider());
    typeColumn.getColumn().setText(Messages.getString("ConnectionsView.TypeColumnHeader")); //$NON-NLS-1$

    TreeViewerColumn statusColumn = new TreeViewerColumn(viewer, SWT.LEFT);
    statusColumn.setLabelProvider(new StatusLabelProvider());
    statusColumn.getColumn().setText(Messages.getString("ConnectionsView.StatusColumnHeader")); //$NON-NLS-1$

    TreeViewerColumn descriptionColumn = new TreeViewerColumn(viewer, SWT.LEFT);
    descriptionColumn.setLabelProvider(new DescriptionLabelProvider(this, descriptionColumn));
    descriptionColumn.getColumn().setText(Messages.getString("ConnectionsView.DescriptionColumnHeader")); //$NON-NLS-1$

    viewer.setContentProvider(new TreeNodeContentProvider());
    viewer.setInput(loadConnections());
    viewer.expandAll();
    viewer.getTree().setHeaderVisible(true);
    viewer.getControl().setData(UID, "viewer"); //$NON-NLS-1$
    viewer.setSorter(new ViewerSorter() {
        @Override
        public int compare(Viewer viewer, Object e1, Object e2) {
            return getNodeDisplayName(e1).compareToIgnoreCase(getNodeDisplayName(e2));
        }
    });
    viewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            enableConnectionSelectedActions(false);
            enableServiceSelectedActions(false);
            ISelection selection = event.getSelection();
            if (!selection.isEmpty()) {
                IStructuredSelection structuredSelection = (IStructuredSelection) selection;
                TreeNode treeNode = (TreeNode) structuredSelection.getFirstElement();
                Object value = treeNode.getValue();
                if (value instanceof IConnection) {
                    enableConnectionSelectedActions(true);
                } else if (value instanceof IConnectedService) {
                    enableServiceSelectedActions(true);
                }
            }
        }
    });
    viewer.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent event) {
            ISelection selection = event.getSelection();
            if (!selection.isEmpty()) {
                IStructuredSelection structuredSelection = (IStructuredSelection) selection;
                TreeNode treeNode = (TreeNode) structuredSelection.getFirstElement();
                Object value = treeNode.getValue();
                if (value instanceof IConnection) {
                    SettingsWizard wizard = new SettingsWizard((IConnection) value);
                    wizard.open(getViewSite().getShell());
                } else if (value instanceof IConnectedService) {
                    if (RemoteConnectionsActivator.getDefault().getShouldTestServices()) {
                        IConnectedService connectedService = (IConnectedService) value;
                        connectedService.setEnabled(true);
                        connectedService.testStatus();
                        ((EnableConnectedServiceAction) getAction(ENABLE_SERVICE_ACTION)).updateLabel();
                    }
                }
            }
        }
    });

    packColumns();

    makeActions();
    hookContextMenu();
    contributeToActionBars();
    hookAccelerators();

    connectionStoreChangedListener = new IConnectionsManagerListener() {
        public void connectionStoreChanged() {
            Display.getDefault().asyncExec(new Runnable() {
                public void run() {
                    viewer.setInput(loadConnections());
                    viewer.expandAll();
                    packColumns();
                    if (viewer.getSelection().isEmpty() && viewer.getTree().getItemCount() > 0) {
                        TreeItem item = viewer.getTree().getItem(0);
                        if (item != null) {
                            viewer.getTree().select(item);
                        }
                    }
                    viewer.setSelection(viewer.getSelection()); // force selection changed
                }
            });
        }

        public void displayChanged() {
            refreshViewer();
        }
    };
    Registry.instance().addConnectionStoreChangedListener(connectionStoreChangedListener);

    connectionListener = new IConnectionListener() {

        public void currentConnectionSet(IConnection connection) {
            refreshViewer();
        }

        public void connectionRemoved(IConnection connection) {
            // presumably the viewer itself handles this...
        }

        public void connectionAdded(IConnection connection) {
            // presumably the viewer itself handles this...
        }
    };
    Registry.instance().addConnectionListener(connectionListener);

    RemoteConnectionsActivator.setHelp(parent, ".connections_view"); //$NON-NLS-1$
}

From source file:eu.scasefp7.eclipse.servicecomposition.views.ServiceCompositionView.java

public void updateRightComposite(edu.uci.ics.jung.graph.Graph jungGraph) {

    final Display display = Display.getCurrent();
    final Graph graph = viewer.getGraphControl();
    if (sc != null) {
        sc.dispose();//www  . j av a  2 s . com
    }
    // Create the ScrolledComposite to scroll horizontally and vertically
    sc = new ScrolledComposite(sashForm, SWT.H_SCROLL | SWT.V_SCROLL);

    sc.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

    rightComposite.dispose();

    rightComposite = new Composite(sc, SWT.FILL);

    sc.setContent(rightComposite);
    sc.setExpandHorizontal(true);
    sc.setExpandVertical(true);
    sc.setMinSize(300, 600);

    // runWorkflowAction.setEnabled(false);

    Listener inputListener = new Listener() {

        @Override
        public void handleEvent(Event event) {
            TreeItem treeItem = (TreeItem) event.item;
            final TreeColumn[] treeColumns = treeItem.getParent().getColumns();
            // final Display display = Display.getCurrent();
            display.asyncExec(new Runnable() {

                @Override
                public void run() {
                    for (TreeColumn treeColumn : treeColumns) {
                        treeColumn.pack();
                    }
                }
            });

        }
    };
    // create inputs composite

    rightComposite.setLayout(new GridLayout());

    Composite inputsLabelComposite = new Composite(rightComposite, SWT.FILL);
    inputsLabelComposite.setLayout(new GridLayout(1, false));
    Label label1 = new Label(inputsLabelComposite, SWT.NONE);
    label1.setText("Workflow Inputs:");
    label1.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
    label1.setFont(JFaceResources.getFontRegistry().getBold(""));
    inputsComposite = new Tree(rightComposite, SWT.BORDER | SWT.FILL | SWT.MULTI);
    inputsComposite.setLayout(new GridLayout(2, false));
    inputsTreeViewer = new TreeViewer(inputsComposite);
    TreeViewerEditor.create(inputsTreeViewer, new ColumnViewerEditorActivationStrategy(inputsTreeViewer) {
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.MOUSE_CLICK_SELECTION;
        }
    }, ColumnViewerEditor.TABBING_HORIZONTAL);

    columna = new TreeViewerColumn(inputsTreeViewer, SWT.NONE);
    columna.getColumn().setWidth(200);
    columna.getColumn().setText("Columna");
    columna.getColumn().setResizable(true);

    columnb = new TreeViewerColumn(inputsTreeViewer, SWT.NONE);
    columnb.getColumn().setText("Columnb");
    columnb.getColumn().setWidth(300);
    columnb.getColumn().setResizable(true);

    Vector<Node> InputNodes = new Vector<Node>();

    // get matched io
    Object[] vertices1 = (Object[]) jungGraph.getVertices().toArray();
    ArrayList<OwlService> matchedNodes = new ArrayList<OwlService>();
    for (int i = 0; i < vertices1.length; i++) {
        final OwlService node = (OwlService) vertices1[i];

        if (node.getisMatchedIO()) {

            matchedNodes.add(node);
        }
    }

    // get all inputs

    Object[] vertices = (Object[]) jungGraph.getVertices().toArray();
    for (int i = 0; i < vertices.length; i++) {
        final OwlService node = (OwlService) vertices[i];
        if (node.getType().contains("Action")) {
            Node n = new Node(node.getName().toString(), null, node, null);
            Collection<OwlService> predecessors = (Collection<OwlService>) jungGraph.getPredecessors(node);
            for (OwlService predecessor : predecessors) {
                if (predecessor.getType().contains("Property")) {
                    showInputs(predecessor, n, InputNodes, jungGraph, matchedNodes);

                }
            }
            InputNodes.add(n);
        }
    }

    inputsComposite.setSize(300, 200);
    inputsTreeViewer.setContentProvider(new MyTreeContentProvider());

    columna.setLabelProvider(new MyLabelProvider());
    columnb.setLabelProvider(createColumnLabelProvider());

    final TextCellEditor cellEditor = new MyTextCellEditor(inputsTreeViewer.getTree());
    columnb.setEditingSupport(new EditingSupport(inputsTreeViewer) {

        @Override
        protected void setValue(Object element, Object value) {
            if (((Node) element).getOwlService().getArgument() != null
                    && ((Node) element).getOwlService().getArgument().getSubtypes().isEmpty())
                ((Node) element).setValue(value.toString());

            getViewer().update(element, null);
        }

        @Override
        protected Object getValue(Object element) {
            return ((Node) element).getValue();
        }

        @Override
        protected TextCellEditor getCellEditor(Object element) {
            return cellEditor;
        }

        @Override
        protected boolean canEdit(Object element) {
            if (((Node) element).getOwlService().getArgument() != null
                    && ((Node) element).getOwlService().getArgument().getSubtypes().isEmpty()
                    && !((Node) element).getOwlService().getisMatchedIO())
                return true;
            else
                return false;
        }
    });

    inputsTreeViewer.setInput(InputNodes);
    inputsTreeViewer.expandToLevel(2);

    final Action a = new Action("Add new element") {
        public void run() {

            try {
                int length = ((Node) ((TreeSelection) inputSelection).getFirstElement()).getSubCategories()
                        .size();
                addTreeNode(((Node) ((TreeSelection) inputSelection).getFirstElement()).getOwlService(),
                        ((Node) ((TreeSelection) inputSelection).getFirstElement()), length);
                // Updating the display in the view
                // inputsTreeViewer.setInput(InputNodes);
                inputsTreeViewer.refresh();
            } catch (Exception e) {
                Activator.log("Error while running the workflow", e);
                e.printStackTrace();
            }

        }
    };

    final Action b = new Action("Remove element") {
        public void run() {

            try {
                Node n = ((Node) ((TreeSelection) inputSelection).getFirstElement()).getParent();
                n.getSubCategories().remove(((Node) ((TreeSelection) inputSelection).getFirstElement()));

                // Updating the display in the view
                // inputsTreeViewer.setInput(InputNodes);
                inputsTreeViewer.refresh();
            } catch (Exception e) {
                Activator.log("Error while running the workflow", e);
                e.printStackTrace();
            }

        }
    };
    final MenuManager mgr = new MenuManager();
    mgr.setRemoveAllWhenShown(true);

    mgr.addMenuListener(new IMenuListener() {

        @Override
        public void menuAboutToShow(IMenuManager manager) {
            inputSelection = inputsTreeViewer.getSelection();

            Node n = ((Node) ((TreeSelection) inputSelection).getFirstElement());
            if (!inputSelection.isEmpty()) {
                if (n.getOwlService().getArgument() != null && n.getOwlService().getArgument().isArray()
                        && n.getName().toString().replaceAll("[^\\d.]", "").isEmpty()) {
                    boolean notMatched = true;
                    // check if the array of primitive or array of objects
                    // is matched
                    if (n.getSubCategories().get(0).getValue().equals("matched")
                            || (!n.getOwlService().getArgument().getSubtypes().isEmpty()
                                    && (n.getOwlService().getArgument().getSubtypes().get(0)).getOwlService()
                                            .getisMatchedIO())) {
                        notMatched = false;
                    }
                    if (notMatched) {
                        a.setText("Add new element for "
                                + ((Node) ((TreeSelection) inputSelection).getFirstElement()).getName()
                                        .toString());
                        a.setToolTipText("Right click to add new element");
                        a.setEnabled(true);

                        mgr.add(a);
                    }

                }
                if (n.getOwlService().getArgument() != null && n.getOwlService().getArgument().isArray()
                        && !n.getName().toString().replaceAll("[^\\d.]", "").isEmpty()) {

                    int nodeNum = Integer.parseInt(n.getName().toString().replaceAll("[^\\d.]", ""));
                    Node parent = ((Node) ((TreeSelection) inputSelection).getFirstElement()).getParent();

                    if (nodeNum == parent.getSubCategories().size() - 1 && nodeNum != 0) {

                        b.setText(
                                "Remove element " + ((Node) ((TreeSelection) inputSelection).getFirstElement())
                                        .getName().toString());
                        b.setToolTipText("Right click to remove element");
                        b.setEnabled(true);

                        mgr.add(b);
                    }
                }
            }
        }

    });
    inputsTreeViewer.getControl().setMenu(mgr.createContextMenu(inputsTreeViewer.getControl()));

    inputsComposite.addListener(SWT.Collapse, inputListener);
    inputsComposite.addListener(SWT.Expand, inputListener);

    inputsTreeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            if (event.getSelection() instanceof IStructuredSelection) {
                IStructuredSelection selection = (IStructuredSelection) event.getSelection();
                if (selection.getFirstElement() != null) {
                    for (int i = 0; i < graph.getNodes().size(); i++) {
                        GraphNode graphNode = (GraphNode) graph.getNodes().get(i);
                        if (((OwlService) ((MyNode) graphNode.getData()).getObject())
                                .equals(((Node) selection.getFirstElement()).getOwlService())) {
                            graphNode.highlight();
                        } else
                            graphNode.unhighlight();

                    }
                }

            }
        }
    });

    // create authentication Params composite

    rightComposite.setLayout(new GridLayout());
    Composite authenticationLabelComposite = new Composite(rightComposite, SWT.FILL);

    authenticationLabelComposite.setLayout(new GridLayout());
    Label label4 = new Label(authenticationLabelComposite, SWT.FILL);
    label4.setText("Workflow Authentication Parameters:");
    label4.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
    label4.setFont(JFaceResources.getFontRegistry().getBold(""));
    authParamsComposite = new Composite(rightComposite, SWT.FILL);
    authParamsComposite.setLayout(new GridLayout(2, false));

    // get all authParams
    ArrayList<String> baseURIs = new ArrayList<String>();
    for (int i = 0; i < vertices.length; i++) {
        final OwlService node = (OwlService) vertices[i];

        if (node.getType().contains("Action") && node.getOperation().getDomain() != null) {
            if (node.getOperation().getDomain().getSecurityScheme() != null) {
                if (node.getOperation().getDomain().getSecurityScheme().equalsIgnoreCase("Basic Authentication")
                        && !baseURIs.contains(node.getOperation().getDomain().getURI())) {
                    showBasicAuthenticationParams();
                    baseURIs.add(node.getOperation().getDomain().getURI());
                }
            }
        }
    }

    // create authentication Params composite

    rightComposite.setLayout(new GridLayout());
    Composite requestHeaderLabelComposite = new Composite(rightComposite, SWT.FILL);

    requestHeaderLabelComposite.setLayout(new GridLayout());
    Label label5 = new Label(requestHeaderLabelComposite, SWT.FILL);
    label5.setText("Workflow Request Headers:");
    label5.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
    label5.setFont(JFaceResources.getFontRegistry().getBold(""));
    requestHeadersComposite = new Composite(rightComposite, SWT.FILL);
    requestHeadersComposite.setLayout(new GridLayout(2, false));

    // get all request headers

    for (int i = 0; i < vertices.length; i++) {
        final OwlService node = (OwlService) vertices[i];

        if (node.getType().contains("Action") && node.getOperation().getRequestHeaders() != null) {
            for (RequestHeader header : node.getOperation().getRequestHeaders()) {
                showRequestHeaders(node.getName().toString(), header.getName());
            }

        }
    }

    Listener outputListener = new Listener() {

        @Override
        public void handleEvent(Event event) {
            TreeItem treeItem = (TreeItem) event.item;
            final TreeColumn[] treeColumns = treeItem.getParent().getColumns();

            display.asyncExec(new Runnable() {

                @Override
                public void run() {
                    for (TreeColumn treeColumn : treeColumns)
                        treeColumn.pack();
                }
            });
        }
    };

    // create outputs composite

    Composite outputsLabelComposite = new Composite(rightComposite, SWT.FILL);
    outputsLabelComposite.setLayout(new GridLayout(1, false));
    Label label2 = new Label(outputsLabelComposite, SWT.NONE);
    label2.setText("Workflow Outputs:");
    label2.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
    label2.setFont(JFaceResources.getFontRegistry().getBold(""));
    outputsComposite = new Tree(rightComposite, SWT.BORDER | SWT.FILL | SWT.MULTI);
    outputsComposite.setLayout(new GridLayout(2, false));
    treeViewer = new TreeViewer(outputsComposite);
    column1 = new TreeViewerColumn(treeViewer, SWT.NONE);
    column1.getColumn().setWidth(300);
    column1.getColumn().setText("Column1");
    column1.getColumn().setResizable(true);
    // column1.getColumn().pack();
    column2 = new TreeViewerColumn(treeViewer, SWT.NONE);
    column2.getColumn().setText("Column2");
    column2.getColumn().setWidth(300);
    column2.getColumn().setResizable(true);
    // column2.getColumn().pack();
    // get all outputs
    Vector<Node> nodes = new Vector<Node>();
    for (int i = 0; i < vertices.length; i++) {
        final OwlService node = (OwlService) vertices[i];

        if (node.getType().contains("Action")) {
            Collection<OwlService> successors = (Collection<OwlService>) jungGraph.getSuccessors(node);
            for (OwlService successor : successors) {
                if (successor.getType().contains("Property")) {
                    showOutputs(successor, null, nodes, jungGraph);

                }
            }
        }
    }

    treeViewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
    outputsComposite.setSize(300, 200);
    treeViewer.setContentProvider(new MyTreeContentProvider());

    // sort alphabetically based on operation name
    treeViewer.setComparator(new ViewerComparator() {
        @Override
        public int compare(Viewer viewer, Object e1, Object e2) {
            Node t1 = (Node) e1;
            Node t2 = (Node) e2;
            int order = ((t1.getOwlService().getArgument().getBelongsToOperation().getName().toString())
                    .compareTo(t2.getOwlService().getArgument().getBelongsToOperation().getName().toString()));
            return order;
        };
    });

    column1.setLabelProvider(new MyLabelProvider());
    column2.setLabelProvider(createColumnLabelProvider());
    treeViewer.setInput(nodes);
    // // outputsComposite.setSize(300, nodes.size() * 10);
    // treeViewer.expandAll();
    //

    outputsComposite.addListener(SWT.Collapse, outputListener);
    outputsComposite.addListener(SWT.Expand, outputListener);

    treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            if (event.getSelection() instanceof IStructuredSelection) {
                IStructuredSelection selection = (IStructuredSelection) event.getSelection();
                if (selection.getFirstElement() != null) {
                    for (int i = 0; i < graph.getNodes().size(); i++) {
                        GraphNode graphNode = (GraphNode) graph.getNodes().get(i);
                        if (((OwlService) ((MyNode) graphNode.getData()).getObject())
                                .equals(((Node) selection.getFirstElement()).getOwlService())) {
                            graphNode.highlight();
                        } else
                            graphNode.unhighlight();

                    }
                }

            }
        }
    });

    graph.update();
    graph.redraw();

    inputsLabelComposite.redraw();
    outputsLabelComposite.redraw();
    treeViewer.refresh();
    inputsTreeViewer.refresh();
    outputsComposite.redraw();
    inputsComposite.redraw();
    rightComposite.layout();
    rightComposite.update();
    rightComposite.redraw();
    sc.update();
    sc.redraw();

    sashForm.update();
    sashForm.redraw();
    sashForm.layout(true);
    this.showBusy(false);
}

From source file:org.eclipse.epf.authoring.ui.views.ProcessTreeViewer.java

License:Open Source License

/**
 * Changes default behavior of activating text cell editor from single mouse click to double mouse click
 *//*from ww w .  j a v a  2s.c  o m*/
@Override
protected void hookEditingSupport(Control control) {
    try {
        TreeViewerEditor.create(this, new ColumnViewerEditorActivationStrategy(this) {
            @Override
            protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
                return event.eventType == ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION
                        || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC
                        || event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL;
            }
        }, ColumnViewerEditor.DEFAULT);
    } catch (NullPointerException e) {
        // work-around for a bug in org.eclipse.jface.viewers.TreeViewerEditor.create(TreeViewer, SWTFocusCellManager, ColumnViewerEditorActivationStrategy, int)
        // that tried to call SWTFocusCellManager.init() even SWTFocusCellManager is null      
    }
    super.hookEditingSupport(control);
}

From source file:org.eclipse.jface.snippets.viewers.Snippet053StartEditorWithContextMenu.java

License:Open Source License

public Snippet053StartEditorWithContextMenu(Shell shell) {
    viewer = new TreeViewer(shell, SWT.BORDER);
    viewer.setContentProvider(new MyContentProvider());

    TreeViewerColumn viewerColumn = new TreeViewerColumn(viewer, SWT.NONE);
    viewerColumn.getColumn().setWidth(200);

    viewerColumn.setEditingSupport(new MyEditingSupport(viewer));
    viewerColumn.setLabelProvider(new ColumnLabelProvider());

    TreeViewerEditor.create(viewer, new ColumnViewerEditorActivationStrategy(viewer) {
        @Override// ww w . ja va2  s .  c o  m
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    }, ColumnViewerEditor.DEFAULT);

    Menu menu = new Menu(viewer.getControl());
    MenuItem renameItem = new MenuItem(menu, SWT.PUSH);
    renameItem.addSelectionListener(this);
    renameItem.setText("Rename");
    viewer.getTree().setMenu(menu);

    viewer.setInput(createModel());
}

From source file:org.eclipse.paho.mqtt.ui.support.tree.TreeViewerBuilder.java

License:Open Source License

/**
 * @param activationStrategy/*ww  w .  j av a2s  .  co  m*/
 * @param feature
 */
public TreeViewerBuilder makeEditable(ColumnViewerEditorActivationStrategy activationStrategy, int feature) {
    ColumnViewerEditorActivationStrategy defaultActivationStrategy = new ColumnViewerEditorActivationStrategy(
            viewer) {
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION
                    || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };
    TreeViewerEditor.create(viewer, activationStrategy == null ? defaultActivationStrategy : activationStrategy,
            feature < 0 ? ColumnViewerEditor.DEFAULT : feature);
    return this;
}

From source file:org.eclipse.rap.examples.pages.TreeViewerExample.java

License:Open Source License

private static void addCellEditor(TreeViewer viewer) {
    CellEditor[] editors = new CellEditor[] { new TextCellEditor(viewer.getTree()),
            new TextCellEditor(viewer.getTree()), new TextCellEditor(viewer.getTree()) };
    viewer.setCellEditors(editors);//  w w  w  . j  av a  2 s . com
    viewer.setCellModifier(new CellModifier(viewer));
    String[] columnProperties = new String[] { "Name", "Timezone", "Offset" };
    viewer.setColumnProperties(columnProperties);
    ColumnViewerEditorActivationStrategy activationStrategy = new CellEditorActivationStrategy(viewer);
    TreeViewerEditor.create(viewer, activationStrategy, EDITOR_ACTIVATE);
}

From source file:org.eclipse.rcptt.ctx.filesystem.ui.FilesystemContextEditor.java

License:Open Source License

private void createTree(FormToolkit toolkit, Composite client) {
    final Tree tree = new Tree(client, SWT.BORDER | SWT.MULTI);
    GridDataFactory.fillDefaults().grab(true, true).span(1, 1).hint(100, 50).applyTo(tree);

    viewer = new TreeViewer(tree);
    viewer.setLabelProvider(new FilesystemContextLabelProvider());
    viewer.setContentProvider(new FilesystemContextContentProvider());
    viewer.setInput(getContextElement());
    viewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection sel = (IStructuredSelection) viewer.getSelection();
            Object[] res = sel.toArray();
            FSResource[] resources = new FSResource[res.length];
            for (int i = 0; i < res.length; i++)
                resources[i] = (FSResource) res[i];
            setSelection(resources);//  w w w.j ava2s  . c  o m
        }
    });
    viewer.addDoubleClickListener(new IDoubleClickListener() {

        /**
         * Opens file or expands/collapses folder.
         */
        public void doubleClick(DoubleClickEvent event) {
            if (openFileAction.isEnabled()) {
                openFileAction.run();
            } else {
                TreeViewer viewer = (TreeViewer) event.getViewer();
                IStructuredSelection selection = (IStructuredSelection) event.getSelection();
                Object selectedNode = selection.getFirstElement();
                viewer.setExpandedState(selectedNode, !viewer.getExpandedState(selectedNode));
            }
        }
    });

    // Setups renaming
    TreeViewerEditor.create(viewer, new DefaultTreeViewerEditStrategy(viewer), ColumnViewerEditor.DEFAULT);
    viewer.setCellEditors(new CellEditor[] { new TextCellEditor(tree) });
    viewer.setCellModifier(new ICellModifier() {
        public void modify(Object element, String property, Object value) {
            TreeItem item = (TreeItem) element;
            FSResource res = (FSResource) item.getData();
            EObject parent = res.eContainer();
            Set<String> allNames = getAllNames(parent);
            allNames.remove(res.getName());

            String newValue = (String) value;
            if (allNames.contains(newValue)) {
                return;
            }

            if (newValue != null && !newValue.isEmpty() && !newValue.equals(res.getName())) {
                res.setName(newValue);
            }
        }

        public Object getValue(Object element, String property) {
            return ((FSResource) element).getName();
        }

        public boolean canModify(Object element, String property) {
            return true;
        }
    });
    viewer.setColumnProperties(new String[] { "" });

    viewer.getControl().addKeyListener(new KeyListener() {

        public void keyReleased(KeyEvent e) {
        }

        public void keyPressed(KeyEvent e) {
            if ((SWT.DEL == e.character) && (0 == e.stateMask)) {
                if (removeAction.isEnabled()) {
                    removeAction.run();
                    e.doit = false;
                }
            }
        }
    });

    UIContentAdapter adapter = new UIContentAdapter() {
        @Override
        protected void changed(Notification notification) {
            if (viewer.getControl().isDisposed()) {
                return;
            }
            viewer.refresh();
        }
    };
    getContextElement().eAdapters().add(adapter);
}

From source file:org.eclipse.rcptt.ui.resources.viewers.WorkspaceContextEditor.java

License:Open Source License

private Tree createTree(Composite parent, FormToolkit toolkit) {
    Tree tree = new Tree(parent, SWT.BORDER | SWT.MULTI);
    GridDataFactory.fillDefaults().grab(true, true).hint(100, 50).applyTo(tree);

    viewer = new TreeViewer(tree);
    TreeViewerEditor.create(viewer, new DefaultTreeViewerEditStrategy(viewer), ColumnViewerEditor.DEFAULT);
    viewer.setCellEditors(new CellEditor[] { new TextCellEditor(tree) });
    viewer.setCellModifier(new ICellModifier() {
        public void modify(Object element, String property, Object value) {
            TreeItem item = (TreeItem) element;
            WSResource res = (WSResource) item.getData();
            WSContainer parent = (WSContainer) res.eContainer();
            Set<String> allNames = getAllNames(parent);
            allNames.remove(res.getName());

            String newValue = (String) value;
            if (allNames.contains(newValue)) {
                return;
            }//from w w w .ja  v  a2s. c om
            if (newValue != null && !newValue.equals(res.getName())) {
                try {
                    IPersistenceModel model = getElement().getPersistenceModel();

                    if (res instanceof WSFile) {
                        String oldName = ImportUtils.getName((WSFile) res);
                        res.setName(newValue);
                        String newName = ImportUtils.getName((WSFile) res);
                        model.rename(oldName, newName);
                    } else if (res instanceof WSContainer) {
                        // Rename all stored files.
                        List<String> oldNames = new ArrayList<String>();
                        List<WSFile> allFiles = findChildFiles((WSContainer) res);
                        for (WSFile wsFile : allFiles) {
                            oldNames.add(ImportUtils.getName(wsFile));
                        }
                        res.setName(newValue);
                        for (int i = 0; i < oldNames.size(); i++) {
                            String oldName = oldNames.get(i);
                            WSFile file = allFiles.get(i);
                            String newName = ImportUtils.getName(file);
                            model.rename(oldName, newName);
                        }
                    }
                    // viewer.update(res, null);
                } catch (Exception e) {
                    Q7UIPlugin.log(e);
                }
            }
        }

        public Object getValue(Object element, String property) {
            return ((WSResource) element).getName();
        }

        public boolean canModify(Object element, String property) {
            return true;
        }
    });
    viewer.setColumnProperties(new String[] { "o" });
    viewer.setContentProvider(new WorkspaceContentProvider());
    ILabelDecorator decorator = PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator();
    viewer.setLabelProvider(
            new DecoratingStyledCellLabelProvider(new WorkspaceLabelProvider(), decorator, null));
    viewer.setInput(getContextElement());
    viewer.addSelectionChangedListener(new ISelectionChangedListener() {

        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection sel = (IStructuredSelection) viewer.getSelection();
            Object[] res = sel.toArray();
            WSResource[] resources = new WSResource[res.length];
            for (int i = 0; i < res.length; i++)
                resources[i] = (WSResource) res[i];
            setSelection(resources);
        }
    });
    viewer.addDoubleClickListener(new IDoubleClickListener() {

        /**
         * Opens file or expands/collapses folder.
         */
        public void doubleClick(DoubleClickEvent event) {
            if (openFileAction.isEnabled()) {
                openFileAction.run();
            } else {
                TreeViewer viewer = (TreeViewer) event.getViewer();
                IStructuredSelection selection = (IStructuredSelection) event.getSelection();
                Object selectedNode = selection.getFirstElement();
                viewer.setExpandedState(selectedNode, !viewer.getExpandedState(selectedNode));
            }
        }
    });
    viewer.getControl().addKeyListener(new KeyListener() {

        public void keyReleased(KeyEvent e) {
        }

        public void keyPressed(KeyEvent e) {
            if ((SWT.DEL == e.character) && (0 == e.stateMask)) {
                if (removeAction.isEnabled()) {
                    removeAction.run();
                    e.doit = false;
                }
            }
        }
    });

    adapter = new UIContentAdapter() {

        protected void changed(Notification notification) {
            if (viewer.getControl().isDisposed()) {
                return;
            }
            viewer.refresh();
        }
    };
    getContextElement().eAdapters().add(adapter);

    toolkit.adapt(tree);

    return tree;
}