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

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

Introduction

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

Prototype

ITreeViewerListener

Source Link

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//www  .j av  a 2  s . co  m
        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()/* ww  w  .  j  a va 2 s .co  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.amalto.workbench.dialogs.DataModelSelectDialog.java

License:Open Source License

private void selectDataModel() {
    Object input = domViewer.getInput();
    TreeObject[] elements = (TreeObject[]) contentProvider.getElements(input);

    selectDefaultDataModel(elements);//from   ww  w  .  j  ava2  s.  c o  m

    domViewer.addTreeListener(new ITreeViewerListener() {

        public void treeExpanded(TreeExpansionEvent event) {
            TreeParent parent = (TreeParent) event.getElement();
            TreeObject[] children = parent.getChildren();
            selectDefaultDataModel(children);
        }

        public void treeCollapsed(TreeExpansionEvent event) {//
        }
    });
}

From source file:com.android.traceview.ProfileView.java

License:Apache License

public ProfileView(Composite parent, TraceReader reader, SelectionController selectController) {
    super(parent, SWT.NONE);
    setLayout(new GridLayout(1, false));
    this.mSelectionController = selectController;
    mSelectionController.addObserver(this);

    // Add a tree viewer at the top
    mTreeViewer = new TreeViewer(this, SWT.MULTI | SWT.NONE);
    mTreeViewer.setUseHashlookup(true);/*www . j a  v  a2 s . co  m*/
    mProfileProvider = reader.getProfileProvider();
    mProfileProvider.setTreeViewer(mTreeViewer);
    SelectionAdapter listener = mProfileProvider.getColumnListener();
    final Tree tree = mTreeViewer.getTree();
    tree.setHeaderVisible(true);
    tree.setLayoutData(new GridData(GridData.FILL_BOTH));

    // Get the column names from the ProfileProvider
    String[] columnNames = mProfileProvider.getColumnNames();
    int[] columnWidths = mProfileProvider.getColumnWidths();
    int[] columnAlignments = mProfileProvider.getColumnAlignments();
    for (int ii = 0; ii < columnWidths.length; ++ii) {
        TreeColumn column = new TreeColumn(tree, SWT.LEFT);
        column.setText(columnNames[ii]);
        column.setWidth(columnWidths[ii]);
        column.setMoveable(true);
        column.addSelectionListener(listener);
        column.setAlignment(columnAlignments[ii]);
    }

    // Add a listener to the tree so that we can make the row
    // height smaller.
    tree.addListener(SWT.MeasureItem, new Listener() {
        @Override
        public void handleEvent(Event event) {
            int fontHeight = event.gc.getFontMetrics().getHeight();
            event.height = fontHeight;
        }
    });

    mTreeViewer.setContentProvider(mProfileProvider);
    mTreeViewer.setLabelProvider(mProfileProvider.getLabelProvider());
    mTreeViewer.setInput(mProfileProvider.getRoot());

    // Create another composite to hold the label and text box
    Composite composite = new Composite(this, SWT.NONE);
    composite.setLayout(new GridLayout(2, false));
    composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    // Add a label for the search box
    Label label = new Label(composite, SWT.NONE);
    label.setText("Find:");

    // Add a text box for searching for method names
    mSearchBox = new Text(composite, SWT.BORDER);
    mSearchBox.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    Display display = getDisplay();
    mColorNoMatch = new Color(display, 255, 200, 200);
    mColorMatch = mSearchBox.getBackground();

    mSearchBox.addModifyListener(new ModifyListener() {
        @Override
        public void modifyText(ModifyEvent ev) {
            String query = mSearchBox.getText();
            if (query.length() == 0)
                return;
            findName(query);
        }
    });

    // Add a key listener to the text box so that we can clear
    // the text box if the user presses <ESC>.
    mSearchBox.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent event) {
            if (event.keyCode == SWT.ESC) {
                mSearchBox.setText("");
            } else if (event.keyCode == SWT.CR) {
                String query = mSearchBox.getText();
                if (query.length() == 0)
                    return;
                findNextName(query);
            }
        }
    });

    // Also add a key listener to the tree viewer so that the
    // user can just start typing anywhere in the tree view.
    tree.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent event) {
            if (event.keyCode == SWT.ESC) {
                mSearchBox.setText("");
            } else if (event.keyCode == SWT.BS) {
                // Erase the last character from the search box
                String text = mSearchBox.getText();
                int len = text.length();
                String chopped;
                if (len <= 1)
                    chopped = "";
                else
                    chopped = text.substring(0, len - 1);
                mSearchBox.setText(chopped);
            } else if (event.keyCode == SWT.CR) {
                String query = mSearchBox.getText();
                if (query.length() == 0)
                    return;
                findNextName(query);
            } else {
                // Append the given character to the search box
                String str = String.valueOf(event.character);
                mSearchBox.append(str);
            }
            event.doit = false;
        }
    });

    // Add a selection listener to the tree so that the user can click
    // on a method that is a child or parent and jump to that method.
    mTreeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent ev) {
            ISelection sel = ev.getSelection();
            if (sel.isEmpty())
                return;
            if (sel instanceof IStructuredSelection) {
                IStructuredSelection selection = (IStructuredSelection) sel;
                Object element = selection.getFirstElement();
                if (element == null)
                    return;
                if (element instanceof MethodData) {
                    MethodData md = (MethodData) element;
                    highlightMethod(md, true);
                }
                if (element instanceof ProfileData) {
                    MethodData md = ((ProfileData) element).getMethodData();
                    highlightMethod(md, true);
                }
            }
        }
    });

    // Add a tree listener so that we can expand the parents and children
    // of a method when a method is expanded.
    mTreeViewer.addTreeListener(new ITreeViewerListener() {
        @Override
        public void treeExpanded(TreeExpansionEvent event) {
            Object element = event.getElement();
            if (element instanceof MethodData) {
                MethodData md = (MethodData) element;
                expandNode(md);
            }
        }

        @Override
        public void treeCollapsed(TreeExpansionEvent event) {
        }
    });

    tree.addListener(SWT.MouseDown, new Listener() {
        @Override
        public void handleEvent(Event event) {
            Point point = new Point(event.x, event.y);
            TreeItem treeItem = tree.getItem(point);
            MethodData md = mProfileProvider.findMatchingTreeItem(treeItem);
            if (md == null)
                return;
            ArrayList<Selection> selections = new ArrayList<Selection>();
            selections.add(Selection.highlight("MethodData", md));
            mSelectionController.change(selections, "ProfileView");

            if (mMethodHandler != null && (event.stateMask & SWT.MOD1) != 0) {
                mMethodHandler.handleMethod(md);
            }
        }
    });
}

From source file:com.aptana.ide.installer.wizard.PluginsTreeViewer.java

License:Open Source License

private void createContents(Composite parent) {
    fTreeViewer = new ContainerCheckedTreeViewer(parent,
            SWT.SINGLE | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
    Tree tree = fTreeViewer.getTree();/*from w ww .j  ava 2  s.  com*/
    tree.setHeaderVisible(true);
    fTreeViewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);

    TreeColumn column = new TreeColumn(tree, SWT.LEFT);
    column.setText("Plugin"); //$NON-NLS-1$
    column.setWidth(350);

    column = new TreeColumn(tree, SWT.LEFT);
    column.setText("Description"); //$NON-NLS-1$
    column.setWidth(350);

    fTreeViewer.setContentProvider(new ContentProvider());
    fTreeViewer.setLabelProvider(new LabelProvider());
    fTreeViewer.setComparator(new PluginsComparator());
    fTreeViewer.setInput(fModel = new PluginsTreeModel());
    fTreeViewer.addCheckStateListener(this);
    fTreeViewer.addTreeListener(new ITreeViewerListener() {

        public void treeCollapsed(TreeExpansionEvent event) {
            updateForeground();
        }

        public void treeExpanded(TreeExpansionEvent event) {
            updateForeground();
        }

    });

    updateExpansionState();
    updateForeground();
}

From source file:com.aptana.ide.server.ui.views.GenericServersView.java

License:Open Source License

/**
 * Helper method to create the table viewer.
 * /*from   w w  w  .  ja v  a2 s .  c o  m*/
 * @param parent
 */
private void createTableViewer(Composite parent) {
    serverViewer = new TreeViewer(parent, SWT.SINGLE | SWT.FULL_SELECTION);
    serverViewer.getTree().setLinesVisible(true);
    serverViewer.addTreeListener(new ITreeViewerListener() {

        public void treeExpanded(TreeExpansionEvent event) {
            Object server = event.getElement();
            if (server instanceof IServer) {
                ServerUIPlugin.getDefault().getPreferenceStore().setValue(
                        IPreferenceConstants.COLLAPSE_SERVER + "." + ((IServer) server).getId(), false); //$NON-NLS-1$
            }
            updateCollapseAllAction();
        }

        public void treeCollapsed(TreeExpansionEvent event) {
            Object server = event.getElement();
            if (server instanceof IServer) {
                ServerUIPlugin.getDefault().getPreferenceStore().setValue(
                        IPreferenceConstants.COLLAPSE_SERVER + "." + ((IServer) server).getId(), true); //$NON-NLS-1$
            }
            updateCollapseAllAction();
        }

    });
    PreferenceUtils.registerBackgroundColorPreference(serverViewer.getControl(),
            "com.aptana.ide.core.ui.background.color.serversView"); //$NON-NLS-1$
    PreferenceUtils.registerForegroundColorPreference(serverViewer.getControl(),
            "com.aptana.ide.core.ui.foreground.color.serversView"); //$NON-NLS-1$
    createTree();
}

From source file:com.atlassian.connector.eclipse.internal.crucible.ui.wizards.SelectChangesetsFromCruciblePage.java

License:Open Source License

private void createChangesViewer(Composite parent) {
    Tree tree = new Tree(parent, SWT.MULTI | SWT.BORDER);
    availableTreeViewer = new TreeViewer(tree);

    GridDataFactory.fillDefaults().grab(true, true).hint(300, 220).applyTo(tree);
    availableTreeViewer.setLabelProvider(new ChangesetLabelProvider());
    availableTreeViewer.setContentProvider(new ChangesetContentProvider());
    availableTreeViewer.setComparator(new ResourceComparator(ResourceComparator.NAME));
    availableTreeViewer.setComparator(new ViewerComparator() {
        @Override// w w w.  j a  v  a  2  s  .  c o m
        public int compare(Viewer viewer, Object e1, Object e2) {
            if (e1 instanceof Change && e2 instanceof Change) {
                return ((Change) e2).getDate().compareTo(((Change) e1).getDate());
            }
            return super.compare(viewer, e1, e2);
        }
    });

    tree.setMenu(createChangesContextMenu());

    tree.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            updateButtonEnablement();
        }
    });
    availableTreeViewer.addTreeListener(new ITreeViewerListener() {
        public void treeCollapsed(TreeExpansionEvent event) {
            // ignore
        }

        public void treeExpanded(TreeExpansionEvent event) {
            // first time of expanding: retrieve first 10 changesets
            final Object object = event.getElement();
            if (object instanceof Repository) {
                refreshRepository((Repository) object);
            }

        }
    });
    availableTreeViewer.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent event) {
            IStructuredSelection selection = (IStructuredSelection) event.getSelection();
            Object object = selection.getFirstElement();
            if (availableTreeViewer.isExpandable(object)) {
                if (!availableTreeViewer.getExpandedState(object) && object instanceof Repository) {
                    refreshRepository((Repository) object);
                    return;
                }
                availableTreeViewer.setExpandedState(object, !availableTreeViewer.getExpandedState(object));
            }
        }
    });
}

From source file:com.atlassian.connector.eclipse.internal.crucible.ui.wizards.SelectScmChangesetsPage.java

License:Open Source License

private void createLeftViewer(Composite parent) {
    Tree tree = new Tree(parent, SWT.MULTI | SWT.BORDER);
    availableTreeViewer = new TreeViewer(tree);

    GridDataFactory.fillDefaults().grab(true, true).hint(300, 220).applyTo(tree);
    availableTreeViewer.setLabelProvider(new ChangesetLabelProvider());
    availableTreeViewer.setContentProvider(new ChangesetContentProvider());
    availableTreeViewer.setComparator(new ResourceComparator(ResourceComparator.NAME));
    availableTreeViewer.setComparator(new ViewerComparator() {
        @Override//  w w w .  ja  va 2 s  .  co  m
        public int compare(Viewer viewer, Object e1, Object e2) {
            if (e1 instanceof ICustomChangesetLogEntry && e2 instanceof ICustomChangesetLogEntry) {
                return ((ICustomChangesetLogEntry) e2).getDate()
                        .compareTo(((ICustomChangesetLogEntry) e1).getDate());
            }
            return super.compare(viewer, e1, e2);
        }
    });
    availableTreeViewer.setInput(ResourcesPlugin.getWorkspace().getRoot());
    final Menu contextMenuSource = new Menu(getShell(), SWT.POP_UP);
    tree.setMenu(contextMenuSource);
    addChangesetMenuItem = new MenuItem(contextMenuSource, SWT.PUSH);
    addChangesetMenuItem.setText("Add to Review");

    new MenuItem(contextMenuSource, SWT.SEPARATOR);

    addChangesetMenuItem.setEnabled(false);
    getNextRevisionsMenuItem = new MenuItem(contextMenuSource, SWT.PUSH);
    getNextRevisionsMenuItem.setText(String.format("Get %d More Revisions", LIMIT));
    getNextRevisionsMenuItem.setEnabled(false);
    getNextRevisionsMenuItem.addSelectionListener(new SelectionAdapter() {
        @SuppressWarnings("unchecked")
        @Override
        public void widgetSelected(SelectionEvent e) {
            TreeSelection selection = getTreeSelection(availableTreeViewer);
            if (selection != null) {
                Iterator<Object> iterator = (selection).iterator();
                Set<ScmRepository> alreadyDone = new TreeSet<ScmRepository>();
                while (iterator.hasNext()) {
                    Object element = iterator.next();
                    ScmRepository repository = null;
                    if (element instanceof ICustomChangesetLogEntry) {
                        repository = ((ICustomChangesetLogEntry) element).getRepository();
                    } else if (element instanceof ScmRepository) {
                        repository = (ScmRepository) element;
                    }
                    if (repository != null && !alreadyDone.contains(repository)) {
                        SortedSet<ICustomChangesetLogEntry> logEntries = availableLogEntries.get(repository);
                        int currentNumberOfEntries = logEntries == null ? 0 : logEntries.size();
                        updateChangesets(repository, currentNumberOfEntries + LIMIT);
                        alreadyDone.add(repository);
                    }
                }
            } else {
                //update all
                for (ScmRepository repository : availableLogEntries.keySet()) {
                    SortedSet<ICustomChangesetLogEntry> logEntries = availableLogEntries.get(repository);
                    int currentNumberOfEntries = logEntries == null ? 0 : logEntries.size();
                    updateChangesets(repository, currentNumberOfEntries + LIMIT);
                }
            }
        }
    });
    addChangesetMenuItem.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            addChangesets();
            updateButtonEnablement();
        }
    });
    tree.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            updateButtonEnablement();
        }
    });
    availableTreeViewer.addTreeListener(new ITreeViewerListener() {
        public void treeCollapsed(TreeExpansionEvent event) {
            // ignore
        }

        public void treeExpanded(TreeExpansionEvent event) {
            // first time of expanding: retrieve first 10 changesets
            final Object object = event.getElement();
            if (object instanceof ScmRepository) {
                refreshRepository((ScmRepository) object);
            }

        }
    });
    availableTreeViewer.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent event) {
            IStructuredSelection selection = (IStructuredSelection) event.getSelection();
            Object object = selection.getFirstElement();
            if (availableTreeViewer.isExpandable(object)) {
                if (!availableTreeViewer.getExpandedState(object) && object instanceof ScmRepository) {
                    refreshRepository((ScmRepository) object);
                    return;
                }
                availableTreeViewer.setExpandedState(object, !availableTreeViewer.getExpandedState(object));
            }
        }
    });
}

From source file:com.cloudbees.eclipse.dev.ui.views.jobs.JobsView.java

License:Open Source License

@Override
public void createPartControl(final Composite parent) {

    initImages();//from   w  w  w .  jav  a2 s. co  m

    this.treeViewer = new TreeViewer(parent,
            SWT.H_SCROLL | SWT.V_SCROLL | SWT.SINGLE | SWT.FULL_SELECTION | SWT.VIRTUAL);
    treeViewer.getTree().setHeaderVisible(true);

    initColumns();

    this.contentProvider = new JobsContentProvider(getViewSite());

    this.treeViewer.setContentProvider(this.contentProvider);
    this.treeViewer.setSorter(new JobSorter(JobSorter.JOB));
    this.treeViewer.setInput(getViewSite());
    this.treeViewer.addOpenListener(new IOpenListener() {

        @Override
        public void open(final OpenEvent event) {
            ISelection sel = event.getSelection();

            if (sel instanceof IStructuredSelection) {
                Object el = ((IStructuredSelection) sel).getFirstElement();
                if (el instanceof JobHolder && ((JobHolder) el).job instanceof Job) {
                    Job job = (Job) ((JobHolder) el).job;

                    //assuming it's a folder..
                    if (job.isFolderOrView()) {
                        JobsView.this.toggle(el);
                        return; // do nothing
                    } else {
                        CloudBeesDevUiPlugin.getDefault().showBuildForJob(job);
                    }

                }

                if (el instanceof JobHolder && ((JobHolder) el).job instanceof View) {
                    JobsView.this.toggle(el);
                    return; // do nothing
                }

            }

        }

    });

    makeActions();
    contributeToActionBars();

    MenuManager popupMenu = new MenuManager();

    popupMenu.add(this.actionOpenLastBuildDetails);
    popupMenu.add(this.actionOpenLog);
    popupMenu.add(this.actionOpenBuildHistory);
    popupMenu.add(new Separator());
    popupMenu.add(this.actionOpenJobInBrowser);
    popupMenu.add(this.actionInvokeBuild);
    popupMenu.add(new Separator());
    popupMenu.add(this.actionDeleteJob);
    popupMenu.add(new Separator());
    popupMenu.add(this.actionReloadJobs);
    Menu menu = popupMenu.createContextMenu(treeViewer.getTree());
    treeViewer.getTree().setMenu(menu);
    treeViewer.getTree().setSortDirection(SWT.DOWN);

    treeViewer.addTreeListener(new ITreeViewerListener() {
        @Override
        public void treeExpanded(TreeExpansionEvent event) {
        }

        @Override
        public void treeCollapsed(TreeExpansionEvent event) {
            // if something was collapsed make sure it won't be expanded by deferred loaders
            contentProvider.removeDeferredExpanders(event.getElement());
        }
    });

    this.treeViewer.addPostSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(final SelectionChangedEvent event) {
            StructuredSelection sel = (StructuredSelection) event.getSelection();
            if (sel.getFirstElement() instanceof JobHolder) {
                setSelectedJob((JobHolder) sel.getFirstElement());
            }
        }
    });

    this.jenkinsChangeListener = new CBRemoteChangeAdapter() {

        public void activeAccountChanged(String email, String newAccountName) {
            // if cloud-hosted view and account changed, close this view

            boolean closeView = false;

            if (viewUrl == null || viewUrl.length() == 0) {
                closeView = true;
            }

            if (!closeView) {
                JenkinsService ss = CloudBeesUIPlugin.getDefault().getJenkinsServiceForUrl(viewUrl);

                if (ss == null || ss.isCloud()) {
                    closeView = true;
                }
            }

            if (closeView) {
                PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
                    public void run() {
                        IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
                                .getActivePage();
                        page.hideView(JobsView.this);
                    }
                });
            }
        }

        public void activeJobViewChanged(final JenkinsJobsResponse newView) {
            PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
                public void run() {
                    JobsView.this.setInput(newView);
                }
            });
        }

        public void jenkinsStatusUpdate(String viewUrl, boolean online) {
            if (!isCurrentView(viewUrl)) {
                return; // nothing to do, same view
            }

            // For now server status change is only relevant when it's offline
            if (!online) {
                final JenkinsService s = CloudBeesUIPlugin.getDefault().getJenkinsServiceForUrl(viewUrl);
                PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
                    public void run() {
                        setPartName("Build Jobs [" + s.getLabel() + "] (offline)");
                        setContentDescription(" " + s.getLabel() + " (" + s.getUrl() + ") not available ("
                                + new Date() + ")");
                    }
                });

            }

        }

    };

    CloudBeesUIPlugin.getDefault().addCBRemoteChangeListener(this.jenkinsChangeListener);
}

From source file:com.clustercontrol.repository.dialog.NodeCreateDialog.java

License:Open Source License

/**
 * ????//from  w w  w.ja  va  2 s  . c  o  m
 *
 * @param parent
 *            ?
 */
@Override
protected void customizeDialog(Composite parent) {
    Shell shell = this.getShell();
    // 
    shell.setText(Messages.getString("dialog.repository.node.create.modify"));

    // 
    GridLayout layout = new GridLayout(1, true);
    layout.marginWidth = 10;
    layout.marginHeight = 10;
    parent.setLayout(layout);
    this.comp = parent;

    GridData gridData = new GridData();
    gridData.horizontalAlignment = GridData.FILL;
    gridData.grabExcessHorizontalSpace = true;
    gridData.horizontalSpan = 1;
    this.comp.setLayoutData(gridData);

    //SNMP??(SNMP)
    groupAuto = new Group(parent, SWT.RIGHT);
    WidgetTestUtil.setTestId(this, "auto", groupAuto);
    groupAuto.setLayoutData(gridData);
    layout = new GridLayout(5, false);
    groupAuto.setLayout(layout);
    if (isModifyDialog) {
        groupAuto.setText(Messages.getString("device.search") + " "
                + Messages.getString("repository.find.by.snmp.modify"));
    } else {
        groupAuto.setText(Messages.getString("device.search"));
    }

    //IP
    this.ipAddressText = new Label(groupAuto, SWT.NONE);
    WidgetTestUtil.setTestId(this, "ipaddress", ipAddressText);
    this.ipAddressText.setText(Messages.getString("ip.address") + " : ");

    this.ipAddressBox = new Text(groupAuto, SWT.BORDER | SWT.SINGLE);
    WidgetTestUtil.setTestId(this, "ipaddress", ipAddressBox);
    GridData grid = new GridData(GridData.FILL_HORIZONTAL);
    grid.minimumWidth = 120;
    this.ipAddressBox.setLayoutData(grid);

    // ?
    if (this.isModifyDialog) {
        GetNodeProperty getNodeProperty = new GetNodeProperty(this.managerName, this.facilityId,
                PropertyDefineConstant.MODE_MODIFY);
        propertyOld = getNodeProperty.getProperty();
        nodeInfoOld = getNodeProperty.getNodeInfo();
    } else {
        GetNodeProperty getNodeProperty = new GetNodeProperty(this.managerName, this.facilityId,
                PropertyDefineConstant.MODE_ADD);
        propertyOld = getNodeProperty.getProperty();
        nodeInfoOld = getNodeProperty.getNodeInfo();
    }
    propertyChild = PropertyUtil.getProperty(propertyOld, NodeConstant.IP_ADDRESS_VERSION).get(0);
    String ipAddressVersion = propertyChild.getValue().toString();
    String ipAddress = null;
    if ("6".equals(ipAddressVersion)) {
        propertyChild = (Property) PropertyUtil.getProperty(propertyOld, NodeConstant.IP_ADDRESS_V6).get(0);
        ipAddress = propertyChild.getValue().toString();
    } else {
        propertyChild = (Property) PropertyUtil.getProperty(propertyOld, NodeConstant.IP_ADDRESS_V4).get(0);
        ipAddress = propertyChild.getValue().toString();
    }
    if ("".equals(ipAddress)) {
        this.ipAddressBox.setText(NodeSearchUtil.generateDefaultIp("192.168.0."));
    } else {
        this.ipAddressBox.setText(ipAddress);
    }

    //???
    this.portText = new Label(groupAuto, SWT.NONE);
    WidgetTestUtil.setTestId(this, "portnumber", portText);
    this.portText.setText(Messages.getString("port.number") + " : ");

    this.portBox = new Text(groupAuto, SWT.BORDER | SWT.SINGLE);
    WidgetTestUtil.setTestId(this, "port", portBox);
    grid = new GridData(GridData.FILL_HORIZONTAL);
    grid.minimumWidth = 50;
    this.portBox.setLayoutData(grid);
    propertyChild = (Property) PropertyUtil.getProperty(propertyOld, NodeConstant.SNMP_PORT).get(0);
    String snmpPort = propertyChild.getValue().toString();
    if ("".equals(snmpPort)) {
        this.portBox.setText("161");
    } else {
        this.portBox.setText(snmpPort);
    }

    // ?????
    Label label = new Label(groupAuto, SWT.NONE);
    WidgetTestUtil.setTestId(this, "dummy", label);

    //??
    this.communityText = new Label(groupAuto, SWT.NONE);
    WidgetTestUtil.setTestId(this, "communityname", communityText);
    this.communityText.setText(Messages.getString("community.name") + " : ");

    this.communityBox = new Text(groupAuto, SWT.BORDER | SWT.SINGLE);
    WidgetTestUtil.setTestId(this, "community", communityBox);
    this.communityBox.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    propertyChild = (Property) PropertyUtil.getProperty(propertyOld, NodeConstant.SNMP_COMMUNITY).get(0);
    String snmpCommunity = propertyChild.getValue().toString();
    if ("".equals(snmpCommunity)) {
        this.communityBox.setText("public");
    } else {
        this.communityBox.setText(snmpCommunity);
    }

    //?
    this.versionText = new Label(groupAuto, SWT.NONE);
    WidgetTestUtil.setTestId(this, "snmpversion", versionText);
    this.versionText.setText(Messages.getString("snmp.version") + " : ");

    this.versionBox = new Combo(groupAuto, SWT.DROP_DOWN | SWT.READ_ONLY);
    WidgetTestUtil.setTestId(this, "version", versionBox);
    this.versionBox.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    this.versionBox.add("1", INDEX_VERSION_BOX_0);
    this.versionBox.add("2c", INDEX_VERSION_BOX_1);
    this.versionBox.add("3", INDEX_VERSION_BOX_2);
    // v2c??
    propertyChild = (Property) PropertyUtil.getProperty(propertyOld, NodeConstant.SNMP_VERSION).get(0);
    String snmpVersion = propertyChild.getValue().toString();
    if ("1".equals(snmpVersion)) {
        this.versionBox.select(INDEX_VERSION_BOX_0);
    } else if ("2c".equals(snmpVersion)) {
        this.versionBox.select(INDEX_VERSION_BOX_1);
    } else {
        this.versionBox.select(INDEX_VERSION_BOX_2);
        setVersion3Item();
    }
    oldVersion = versionBox.getText();

    this.versionBox.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            String version = versionBox.getText();
            if (oldVersion.equals(version)) {
                return;
            }
            if (version.equals("3")) {
                setVersion3Item();
            } else if (oldVersion.equals("3")) {
                empty_label_version.dispose();
                empty_label_user.dispose();
                empty_label_auth.dispose();
                empty_label_security.dispose();
                securityLevelText.dispose();
                securityLevelBox.dispose();
                userText.dispose();
                userBox.dispose();
                authPassText.dispose();
                authPassBox.dispose();
                privPassText.dispose();
                privPassBox.dispose();
                authProtocolText.dispose();
                authProtocolBox.dispose();
                privProtocolText.dispose();
                privProtocolBox.dispose();
                groupAuto.layout();
                NodeCreateDialog.this.comp.layout();
            }
            oldVersion = version;
        }
    });

    if (SnmpVersionConstant.STRING_V3.equals(snmpVersion) == false) {
        setAutoButton();
    }

    /////////////////////////////////////////////////////////////

    // ?
    Label labelManager = new Label(parent, SWT.LEFT);
    WidgetTestUtil.setTestId(this, "manager", labelManager);
    gridData = new GridData();
    gridData.horizontalSpan = 1;
    gridData.horizontalAlignment = GridData.FILL;
    gridData.grabExcessHorizontalSpace = true;
    labelManager.setLayoutData(gridData);
    labelManager.setText(Messages.getString("facility.manager") + " : ");
    if (!this.isModifyDialog()) {
        this.m_managerComposite = new ManagerListComposite(parent, SWT.NONE, true);
    } else {
        this.m_managerComposite = new ManagerListComposite(parent, SWT.NONE, false);
    }
    WidgetTestUtil.setTestId(this, "managerComposite", this.m_managerComposite);
    gridData = new GridData();
    gridData.horizontalSpan = 1;
    gridData.horizontalAlignment = GridData.FILL;
    gridData.grabExcessHorizontalSpace = true;
    this.m_managerComposite.setLayoutData(gridData);

    if (this.managerName != null) {
        this.m_managerComposite.setText(this.managerName);
    }
    if (isModifyDialog == false) {
        this.m_managerComposite.getComboManagerName().addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                String managerName = m_managerComposite.getText();
                m_ownerRoleId.createRoleIdList(managerName);
            }
        });
    }

    // ID
    Label labelRoleId = new Label(parent, SWT.LEFT);
    WidgetTestUtil.setTestId(this, "roleid", labelRoleId);
    gridData = new GridData();
    gridData.horizontalSpan = 1;
    gridData.horizontalAlignment = GridData.FILL;
    gridData.grabExcessHorizontalSpace = true;
    labelRoleId.setLayoutData(gridData);
    labelRoleId.setText(Messages.getString("owner.role.id") + " : ");
    if (!this.isModifyDialog()) {
        this.m_ownerRoleId = new RoleIdListComposite(parent, SWT.NONE, this.managerName, true, Mode.OWNER_ROLE);
    } else {
        this.m_ownerRoleId = new RoleIdListComposite(parent, SWT.NONE, this.managerName, false,
                Mode.OWNER_ROLE);
    }
    WidgetTestUtil.setTestId(this, "roleidlist", m_ownerRoleId);
    if (nodeInfoOld != null && nodeInfoOld.getOwnerRoleId() != null) {
        m_ownerRoleId.setText(nodeInfoOld.getOwnerRoleId());
    }
    gridData = new GridData();
    gridData.horizontalSpan = 1;
    gridData.horizontalAlignment = GridData.FILL;
    gridData.grabExcessHorizontalSpace = true;
    m_ownerRoleId.setLayoutData(gridData);

    /*
     * 
     */

    // 
    Label labelAttribute = new Label(parent, SWT.LEFT);
    WidgetTestUtil.setTestId(this, "attribute", labelAttribute);
    gridData = new GridData();
    gridData.horizontalAlignment = GridData.FILL;
    gridData.grabExcessHorizontalSpace = true;
    gridData.horizontalSpan = 1;
    labelAttribute.setLayoutData(gridData);
    labelAttribute.setText(Messages.getString("attribute") + " : ");

    // 
    tree = new Tree(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.MULTI | SWT.BORDER);
    WidgetTestUtil.setTestId(this, null, tree);
    gridData = new GridData();
    gridData.horizontalAlignment = GridData.FILL;
    gridData.verticalAlignment = GridData.FILL;
    gridData.grabExcessHorizontalSpace = true;
    gridData.grabExcessVerticalSpace = true;
    gridData.heightHint = SWT.MIN;
    gridData.horizontalSpan = 1;
    tree.setLayoutData(gridData);
    tree.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            // ??
            update();
        }
    });

    this.propertySheet = new PropertySheet(tree);
    this.propertySheet.setSize(230, 300);

    this.propertySheet.addTreeListener(new ITreeViewerListener() {

        @Override
        public void treeExpanded(TreeExpansionEvent event) {
            // ??
            update();
        }

        @Override
        public void treeCollapsed(TreeExpansionEvent event) {
            // ??
            update();
        }
    });

    // 
    this.propertySheet.setInput(propertyOld);

    // ??
    Label line = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL);
    WidgetTestUtil.setTestId(this, "line", line);
    gridData = new GridData();
    gridData.horizontalAlignment = GridData.FILL;
    gridData.grabExcessHorizontalSpace = true;
    gridData.horizontalSpan = 1;
    line.setLayoutData(gridData);

    // ??
    Display display = shell.getDisplay();
    shell.setLocation((display.getBounds().width - shell.getSize().x) / 2,
            (display.getBounds().height - shell.getSize().y) / 2);

    //?pack:resize to be its preferred size
    shell.pack();
    shell.setSize(new Point(shell.getSize().x, sizeY));

    this.expand();
    this.update();
}