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

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

Introduction

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

Prototype

public TreeViewerColumn(TreeViewer viewer, TreeColumn column) 

Source Link

Document

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

Usage

From source file:org.eclipse.incquery.tooling.ui.wizards.NewEiqGenmodelPage.java

License:Open Source License

/**
 * Create contents of the wizard.//  w  w w  . jav  a2  s. co  m
 * 
 * @param parent
 */
public void createControl(Composite parent) {
    Composite container = new Composite(parent, SWT.NULL);

    setControl(container);
    container.setLayout(new GridLayout(1, false));

    if (displayCreateComposite) {
        Section sctnGenmodel = formToolkit.createSection(container, Section.EXPANDED | Section.TITLE_BAR);
        sctnGenmodel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
        formToolkit.paintBordersFor(sctnGenmodel);
        sctnGenmodel.setText("Genmodel");

        Composite composite = formToolkit.createComposite(sctnGenmodel, SWT.NONE);
        formToolkit.paintBordersFor(composite);
        sctnGenmodel.setClient(composite);
        composite.setLayout(new GridLayout(3, false));
        new Label(composite, SWT.NONE);
        new Label(composite, SWT.NONE);

        btnInitializeGeneratorModel = formToolkit.createButton(composite, "Initialize Generator Model",
                SWT.CHECK);
        new Label(composite, SWT.NONE);

        formToolkit.createLabel(composite, "Filename", SWT.NONE);

        formToolkit.createLabel(composite, "generator.eiqgen", SWT.NONE);
    }

    Section sctnReferencedEmfGenerator = formToolkit.createSection(container,
            Section.EXPANDED | Section.TITLE_BAR);
    sctnReferencedEmfGenerator.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
    formToolkit.paintBordersFor(sctnReferencedEmfGenerator);
    sctnReferencedEmfGenerator.setText("Referenced EMF Generator models");

    referencedGenmodels = formToolkit.createTree(sctnReferencedEmfGenerator, SWT.NONE);
    referencedGenmodels.setEnabled(false);
    formToolkit.paintBordersFor(referencedGenmodels);
    sctnReferencedEmfGenerator.setClient(referencedGenmodels);
    referencedGenmodels.setHeaderVisible(true);
    referencedGenmodels.setLinesVisible(true);

    genModelViewer = new TreeViewer(referencedGenmodels);
    genModelViewer.setContentProvider(new ITreeContentProvider() {

        List<GenModel> genmodels;

        @SuppressWarnings("unchecked")
        @Override
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
            if (newInput instanceof List<?>) {
                genmodels = (List<GenModel>) newInput;
            }
        }

        @Override
        public void dispose() {
        }

        @Override
        public boolean hasChildren(Object element) {
            return element instanceof GenModel && !((GenModel) element).getGenPackages().isEmpty();
        }

        @Override
        public Object getParent(Object element) {
            if (element instanceof GenPackage) {
                return ((GenPackage) element).getGenModel();
            }
            return null;
        }

        @Override
        public Object[] getElements(Object inputElement) {
            return genmodels.toArray(new GenModel[genmodels.size()]);
        }

        @Override
        public Object[] getChildren(Object parentElement) {
            if (parentElement instanceof GenModel) {
                List<GenPackage> packages = ((GenModel) parentElement).getGenPackages();
                return packages.toArray(new GenPackage[packages.size()]);
            }
            return null;
        }
    });
    genModelViewer.setLabelProvider(new LabelProvider() {

    });
    TreeViewerColumn resourcePathColumn = new TreeViewerColumn(genModelViewer, SWT.LEFT);
    resourcePathColumn.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object element) {
            if (element instanceof GenModel) {
                return ((GenModel) element).eResource().getURI().toPlatformString(true);
            } else if (element instanceof GenPackage) {
                return ((GenPackage) element).getNSURI();
            }
            return super.getText(element);
        }
    });
    TreeViewerColumn packageURIColumn = new TreeViewerColumn(genModelViewer, SWT.LEFT);
    packageURIColumn.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object element) {
            if (element instanceof GenModel) {
                return String.format("Plug-in dependency: %s", ((GenModel) element).getModelPluginID());
            } else if (element instanceof GenPackage) {
                return "";
            }
            return super.getText(element);
        }

    });
    TableLayout tableLayout = new TableLayout();
    tableLayout.addColumnData(new ColumnWeightData(50, true));
    tableLayout.addColumnData(new ColumnWeightData(50, true));
    referencedGenmodels.setLayout(tableLayout);

    genModelViewer.setInput(selectedGenmodels);

    Composite composite_1 = formToolkit.createComposite(sctnReferencedEmfGenerator, SWT.NONE);
    formToolkit.paintBordersFor(composite_1);
    sctnReferencedEmfGenerator.setTextClient(composite_1);
    composite_1.setLayout(new RowLayout(SWT.HORIZONTAL));

    addGenmodel = formToolkit.createButton(composite_1, "Add", SWT.NONE);
    addGenmodel.setEnabled(false);
    addGenmodel.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            selectGenmodelFromWorkspace();
        }
    });
    if (displayCreateComposite) {
        /* m_bindingContext = */initDataBindings();
    }
}

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

License:Open Source License

public Snippet026TreeViewerTabEditing(final Shell shell) {
    Button b = new Button(shell, SWT.PUSH);
    b.setText("Remove column");
    final TreeViewer v = new TreeViewer(shell, SWT.BORDER | SWT.FULL_SELECTION);
    v.getTree().setLinesVisible(true);//from w w  w  . jav a  2s  . c  o m
    v.getTree().setHeaderVisible(true);
    b.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            if (v.getTree().getColumnCount() > 1) {
                v.getTree().getColumn(1).dispose();
            }
        }

    });

    TreeViewerFocusCellManager focusCellManager = new TreeViewerFocusCellManager(v,
            new FocusCellOwnerDrawHighlighter(v));
    ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(v) {
        @Override
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL
                    || event.eventType == ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION
                    || (event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED
                            && event.keyCode == SWT.CR)
                    || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };

    int feature = ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR
            | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION;

    TreeViewerEditor.create(v, focusCellManager, actSupport, feature);
    final TextCellEditor textCellEditor = new TextCellEditor(v.getTree());

    String[] columLabels = { "Column 1", "Column 2", "Column 3" };
    String[] labelPrefix = { "Column 1 => ", "Column 2 => ", "Column 3 => " };

    for (int i = 0; i < columLabels.length; i++) {
        TreeViewerColumn column = new TreeViewerColumn(v, SWT.NONE);
        column.getColumn().setWidth(200);
        column.getColumn().setMoveable(true);
        column.getColumn().setText(columLabels[i]);
        column.setLabelProvider(createColumnLabelProvider(labelPrefix[i]));
        column.setEditingSupport(createEditingSupportFor(v, textCellEditor));
    }
    v.setContentProvider(new MyContentProvider());
    v.setInput(createModel());
}

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

License:Open Source License

public Snippet043TreeViewerKeyboardEditing(final Shell shell) {
    Button b = new Button(shell, SWT.PUSH);
    b.setText("Press Tab, or click here to edit first child element");
    final TreeViewer v = new TreeViewer(shell, SWT.BORDER | SWT.FULL_SELECTION);
    b.addSelectionListener(new SelectionAdapter() {

        @Override// w w  w .  j a  va 2s. c o m
        public void widgetSelected(SelectionEvent e) {
            MyModel root = (MyModel) v.getInput();
            TreePath path = new TreePath(
                    new Object[] { root, root.child.get(1), root.child.get(1).child.get(0) });
            v.editElement(path, 0);
        }

    });

    TreeViewerColumn viewerColumn = new TreeViewerColumn(v, SWT.NONE);
    viewerColumn.getColumn().setWidth(300);
    viewerColumn.setLabelProvider(new ColumnLabelProvider());
    viewerColumn.setEditingSupport(new EditingSupport(v) {

        @Override
        protected void setValue(Object element, Object value) {
            ((MyModel) element).counter = Integer.parseInt(value.toString());
            getViewer().update(element, null);
        }

        @Override
        protected Object getValue(Object element) {
            return ((MyModel) element).counter + "";
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            return new TextCellEditor((Composite) getViewer().getControl());
        }

        @Override
        protected boolean canEdit(Object element) {
            return true;
        }
    });

    TreeViewerFocusCellManager focusCellManager = new TreeViewerFocusCellManager(v,
            new FocusCellOwnerDrawHighlighter(v));
    ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(v) {
        @Override
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL
                    || event.eventType == ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION
                    || (event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED
                            && event.keyCode == SWT.CR)
                    || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };

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

    v.setContentProvider(new MyContentProvider());
    v.setInput(createModel());
}

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

License:Open Source License

public Snippet048TreeViewerTabWithCheckboxFor3_3(final Shell shell) {
    final TreeViewer v = new TreeViewer(shell, SWT.BORDER | SWT.FULL_SELECTION);
    v.getTree().setLinesVisible(true);//from   w  w  w. j a  va  2 s  . c  o  m
    v.getTree().setHeaderVisible(true);

    final TreeViewerFocusCellManager mgr = new TreeViewerFocusCellManager(v,
            new FocusCellOwnerDrawHighlighter(v));
    ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(v) {
        @Override
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL
                    || event.eventType == ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION
                    || (event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED
                            && (event.keyCode == SWT.CR || event.character == ' '))
                    || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };

    TreeViewerEditor.create(v, mgr, actSupport,
            ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR
                    | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION);

    final TextCellEditor textCellEditor = new TextCellEditor(v.getTree());
    final CheckboxCellEditor checkboxCellEditor = new CheckboxCellEditor(v.getTree());

    TreeViewerColumn column = new TreeViewerColumn(v, SWT.NONE);
    column.getColumn().setWidth(200);
    column.getColumn().setMoveable(true);
    column.getColumn().setText("Column 1");
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object element) {
            return "Column 1 => " + element;
        }

    });
    column.setEditingSupport(new EditingSupport(v) {
        @Override
        protected boolean canEdit(Object element) {
            return false;
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            return textCellEditor;
        }

        @Override
        protected Object getValue(Object element) {
            return ((MyModel) element).counter + "";
        }

        @Override
        protected void setValue(Object element, Object value) {
            ((MyModel) element).counter = Integer.parseInt(value.toString());
            v.update(element, null);
        }
    });

    column = new TreeViewerColumn(v, SWT.NONE);
    column.getColumn().setWidth(200);
    column.getColumn().setMoveable(true);
    column.getColumn().setText("Column 2");
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object element) {
            return "Column 2 => " + element;
        }

    });
    column.setEditingSupport(new EditingSupport(v) {
        @Override
        protected boolean canEdit(Object element) {
            return true;
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            return textCellEditor;
        }

        @Override
        protected Object getValue(Object element) {
            return ((MyModel) element).counter + "";
        }

        @Override
        protected void setValue(Object element, Object value) {
            ((MyModel) element).counter = Integer.parseInt(value.toString());
            v.update(element, null);
        }
    });

    column = new TreeViewerColumn(v, SWT.NONE);
    column.getColumn().setWidth(200);
    column.getColumn().setMoveable(true);
    column.getColumn().setText("Column 3");
    column.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object element) {
            return ((MyModel) element).bool + "";
        }

    });
    column.setEditingSupport(new EditingSupport(v) {
        @Override
        protected boolean canEdit(Object element) {
            return true;
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            return checkboxCellEditor;
        }

        @Override
        protected Object getValue(Object element) {
            return Boolean.valueOf(((MyModel) element).bool);
        }

        @Override
        protected void setValue(Object element, Object value) {
            ((MyModel) element).bool = ((Boolean) value).booleanValue();
            v.update(element, null);
        }
    });

    v.setContentProvider(new MyContentProvider());
    v.setInput(createModel());
    v.getControl().addTraverseListener(new TraverseListener() {

        @Override
        public void keyTraversed(TraverseEvent e) {
            if ((e.detail == SWT.TRAVERSE_TAB_NEXT || e.detail == SWT.TRAVERSE_TAB_PREVIOUS)
                    && mgr.getFocusCell().getColumnIndex() == 2) {
                ColumnViewerEditor editor = v.getColumnViewerEditor();
                ViewerCell cell = mgr.getFocusCell();

                try {
                    Method m = ColumnViewerEditor.class.getDeclaredMethod("processTraverseEvent",
                            new Class[] { int.class, ViewerRow.class, TraverseEvent.class });
                    m.setAccessible(true);
                    m.invoke(editor, Integer.valueOf(cell.getColumnIndex()), cell.getViewerRow(), e);
                } catch (SecurityException | NoSuchMethodException | IllegalArgumentException
                        | IllegalAccessException | InvocationTargetException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
        }

    });
}

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

License:Open Source License

private ColumnViewer createViewer(String description, Composite parent, CellLabelProvider labelProvider1,
        CellLabelProvider labelProvider2) {

    Composite composite = new Composite(parent, SWT.NONE);
    composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
    composite.setLayout(new GridLayout(1, true));

    Label label = new Label(composite, SWT.NONE);
    label.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
    label.setText(description);//from w  w w .j  a  v  a2s  .  co m

    TreeViewer treeViewer = new TreeViewer(composite, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
    treeViewer.getTree().setHeaderVisible(true);
    treeViewer.setContentProvider(new FileSystemContentProvider());

    TreeViewerColumn tvc1 = new TreeViewerColumn(treeViewer, SWT.NONE);
    tvc1.getColumn().setText("Name"); //$NON-NLS-1$
    tvc1.getColumn().setWidth(200);
    tvc1.setLabelProvider(labelProvider1);

    TreeViewerColumn tvc2 = new TreeViewerColumn(treeViewer, SWT.NONE);
    tvc2.getColumn().setText("Date Modified"); //$NON-NLS-1$
    tvc2.getColumn().setWidth(200);
    tvc2.setLabelProvider(labelProvider2);

    GridData data = new GridData(GridData.FILL, GridData.FILL, true, true);
    treeViewer.getControl().setLayoutData(data);

    treeViewer.setInput(new FileSystemRoot());

    return treeViewer;
}

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/*from   w ww .  j a va  2s .co  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.jface.snippets.viewers.Snippet055HideShowColumn.java

License:Open Source License

private TreeViewerColumn createColumnFor(final TreeViewer v, String label, TextCellEditor textCellEditor) {
    TreeViewerColumn column = new TreeViewerColumn(v, SWT.NONE);
    column.getColumn().setWidth(200);// w w w.ja  va  2s  .co m
    column.getColumn().setMoveable(true);
    column.getColumn().setText(label);
    column.setLabelProvider(new MyColumnLabelProvider(label));
    column.setEditingSupport(new MyEditingSupport(v, v, textCellEditor));
    return column;
}

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

License:Open Source License

private TreeViewerColumn createColumnFor(TreeViewer viewer, int style, String label) {
    TreeViewerColumn column = new TreeViewerColumn(viewer, style);
    column.getColumn().setWidth(200);/*w w w  .j a v  a2 s  .co  m*/
    column.getColumn().setMoveable(true);
    column.getColumn().setText(label);
    return column;
}

From source file:org.eclipse.jubula.client.ui.rcp.views.JBPropertiesPage.java

License:Open Source License

/**
 * Creates a new Tree for this View.//from   w  w  w .ja v  a 2  s .com
 * @param parent the parent composite
 */
private void buildTree(Composite parent) {
    GridData layoutData = new GridData(GridData.FILL_BOTH);
    layoutData.grabExcessHorizontalSpace = true;
    Tree tree = new Tree(parent, SWT.BORDER | SWT.HIDE_SELECTION | SWT.FULL_SELECTION);
    tree.setLayoutData(layoutData);
    tree.setHeaderVisible(true);
    tree.setLinesVisible(true);
    m_treeViewer = new TreeViewer(tree);
    // add expand/collapse column
    TreeViewerColumn expandCollapseColumn = new TreeViewerColumn(m_treeViewer, SWT.NONE);
    expandCollapseColumn.getColumn().setText(StringConstants.EMPTY);
    expandCollapseColumn.getColumn().setWidth(20);
    expandCollapseColumn.getColumn().setResizable(false);
    expandCollapseColumn.setLabelProvider(new CellLabelProvider() {
        public void update(ViewerCell cell) {
            // Nothing to display. Nothing to update.
        }
    });
    final int width = m_treeViewer.getTree().getParent().getClientArea().width;

    /* We make sure to have an initial size, just in case. */
    final int area = (width <= 100) ? 100 : width;

    // add property name column
    TreeViewerColumn propertyNameColumn = new TreeViewerColumn(m_treeViewer, SWT.NONE);
    propertyNameColumn.getColumn().setText(Messages.JubulaPropertiesViewProperty);
    propertyNameColumn.getColumn().setWidth((int) (width * 0.36));
    propertyNameColumn.setLabelProvider(new PropertyNameLabelProvider());

    // add property value column
    TreeViewerColumn propertyValueColumn = new TreeViewerColumn(m_treeViewer, SWT.NONE);
    propertyValueColumn.getColumn().setText(Messages.JubulaPropertiesViewValue);
    propertyValueColumn.getColumn().setWidth((int) (width * 0.54));
    propertyValueColumn.setLabelProvider(new PropertyValueLabelProvider());
    propertyValueColumn.setEditingSupport(new PropertiesEditingSupport(m_treeViewer));

    m_treeViewer.addSelectionChangedListener(m_helpContextListener);
    m_treeViewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
    m_treeViewer.setContentProvider(new PropertiesContentProvider());
    ColumnViewerToolTipSupport.enableFor(m_treeViewer);
    m_treeViewer.setComparer(new PropertiesElementComparer());
    m_focusCellManager = new TreeViewerFocusCellManager(m_treeViewer,
            new FocusCellOwnerDrawHighlighter(m_treeViewer));
    ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(m_treeViewer) {
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL
                    || event.eventType == ColumnViewerEditorActivationEvent.MOUSE_CLICK_SELECTION
                    || (event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED
                            && event.keyCode == SWT.CR)
                    || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };
    TreeViewerEditor.create(m_treeViewer, m_focusCellManager, actSupport, ColumnViewerEditor.TABBING_VERTICAL
            | ColumnViewerEditor.KEYBOARD_ACTIVATION | ColumnViewerEditor.KEEP_EDITOR_ON_DOUBLE_CLICK);
}

From source file:org.eclipse.jubula.client.ui.rcp.views.JBPropertiesView.java

License:Open Source License

/**
 * Creates a new Tree for this View.//from  w w w.ja v a  2s.co  m
 * @param parent the parent composite
 */
private void buildTree(Composite parent) {
    GridData layoutData = new GridData(GridData.FILL_BOTH);
    layoutData.grabExcessHorizontalSpace = true;
    Tree tree = new Tree(parent, SWT.BORDER | SWT.HIDE_SELECTION | SWT.FULL_SELECTION);
    tree.setLayoutData(layoutData);
    tree.setHeaderVisible(true);
    tree.setLinesVisible(true);
    m_treeViewer = new TreeViewer(tree);

    // add expand/collapse column
    TreeViewerColumn expandCollapseColumn = new TreeViewerColumn(m_treeViewer, SWT.NONE);
    expandCollapseColumn.getColumn().setText(StringConstants.EMPTY);
    expandCollapseColumn.getColumn().setWidth(20);
    expandCollapseColumn.getColumn().setResizable(false);
    expandCollapseColumn.setLabelProvider(new CellLabelProvider() {

        public void update(ViewerCell cell) {
            // Nothing to display. Nothing to update.
        }
    });

    // add property name column
    TreeViewerColumn propertyNameColumn = new TreeViewerColumn(m_treeViewer, SWT.NONE);
    propertyNameColumn.getColumn().setText(Messages.JubulaPropertiesViewProperty);
    propertyNameColumn.getColumn().setWidth(175);
    propertyNameColumn.setLabelProvider(new PropertyNameLabelProvider());

    // add property value column
    TreeViewerColumn propertyValueColumn = new TreeViewerColumn(m_treeViewer, SWT.NONE);
    propertyValueColumn.getColumn().setText(Messages.JubulaPropertiesViewValue);
    propertyValueColumn.getColumn().setWidth(300);
    propertyValueColumn.setLabelProvider(new PropertyValueLabelProvider());
    propertyValueColumn.setEditingSupport(new PropertiesEditingSupport(m_treeViewer));

    m_treeViewer.addSelectionChangedListener(m_helpContextListener);

    m_treeViewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
    m_treeViewer.setContentProvider(new PropertiesContentProvider());
    ColumnViewerToolTipSupport.enableFor(m_treeViewer);

    m_treeViewer.setComparer(new PropertiesElementComparer());

    m_focusCellManager = new TreeViewerFocusCellManager(m_treeViewer,
            new FocusCellOwnerDrawHighlighter(m_treeViewer));
    ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(m_treeViewer) {
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL
                    || event.eventType == ColumnViewerEditorActivationEvent.MOUSE_CLICK_SELECTION
                    || (event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED
                            && event.keyCode == SWT.CR)
                    || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };

    TreeViewerEditor.create(m_treeViewer, m_focusCellManager, actSupport, ColumnViewerEditor.TABBING_VERTICAL
            | ColumnViewerEditor.KEYBOARD_ACTIVATION | ColumnViewerEditor.KEEP_EDITOR_ON_DOUBLE_CLICK);
}