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

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

Introduction

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

Prototype

public TreeViewer(Tree tree) 

Source Link

Document

Creates a tree viewer on the given tree control.

Usage

From source file:com.aptana.ide.views.outline.UnifiedQuickOutlinePage.java

License:Open Source License

/**
 * createTreeViewer//from   w  w  w .j ava 2s.c o  m
 * 
 * @param parent
 * @return TreeViewer
 */
private TreeViewer createTreeViewer(Composite parent) {
    TreeViewer result = new TreeViewer(new Tree(parent, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL));

    //outlineProvider = UnifiedOutlineProvider.getInstance();
    outlineProvider = createProvider();

    result.setLabelProvider(outlineProvider);
    result.setContentProvider(outlineProvider);
    result.setInput(this._editor);

    // add selection changed listener
    result.addSelectionChangedListener(new ISelectionChangedListener() {
        /**
         * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
         */
        public void selectionChanged(SelectionChangedEvent event) {
            //            IStructuredSelection selection = (IStructuredSelection) event.getSelection();
            //
            //            if (selection.size() == 1)
            //            {
            //               Object item = selection.getFirstElement();
            //
            //               if (item != null && item instanceof OutlineItem)
            //               {
            //                  OutlineItem outlineItem = (OutlineItem) selection.getFirstElement();
            //
            //                  // Only select and reveal in editor if the tree viewer is focused meaning the selection
            //                  // originated from a user selection on the tree itself
            //
            //                  // move cursor to start of this item's text
            //                  if (_treeViewer != null && _treeViewer.getTree() != null && !_treeViewer.getTree().isDisposed()
            //                        && _treeViewer.getTree().isFocusControl())
            //                  {
            //                     _editor.selectAndReveal(outlineItem.getStartingOffset(), 0);
            //                  }
            //               }
            //            }
        }
    });

    result.setComparer(new IElementComparer() {
        /**
         * @see org.eclipse.jface.viewers.IElementComparer#equals(java.lang.Object, java.lang.Object)
         */
        public boolean equals(Object a, Object b) {
            boolean result = false;

            if (a instanceof OutlineItem && b instanceof OutlineItem) {
                OutlineItem item1 = (OutlineItem) a;
                OutlineItem item2 = (OutlineItem) b;

                result = item1.equals(item2);
            } else if (a instanceof IParseNode && b instanceof IParseNode) {
                if (a == b) {
                    result = true;
                } else {
                    IParseNode node1 = (IParseNode) a;
                    IParseNode node2 = (IParseNode) b;
                    String path1 = node1.getUniquePath();
                    String path2 = node2.getUniquePath();

                    result = path1.equals(path2);
                }
            } else {
                result = (a == b);
            }

            return result;
        }

        /**
         * @see org.eclipse.jface.viewers.IElementComparer#hashCode(java.lang.Object)
         */
        public int hashCode(Object element) {
            return 0;
        }
    });

    return result;
}

From source file:com.archimatetool.editor.preferences.ColoursFontsPreferencePage.java

License:Open Source License

private void createColoursTab() {
    // Reset everything
    resetColorsCache(false);//from   www. j  a v a2s. c  o  m
    fImageRegistry = new ImageRegistry();

    Composite client = new Composite(fTabfolder, SWT.NULL);
    client.setLayout(new GridLayout(2, false));

    TabItem item = new TabItem(fTabfolder, SWT.NONE);
    item.setText(Messages.ColoursFontsPreferencePage_23);
    item.setControl(client);

    Label label = new Label(client, SWT.NULL);
    label.setText(Messages.ColoursFontsPreferencePage_0);
    GridData gd = new GridData(GridData.FILL_HORIZONTAL);
    gd.horizontalSpan = 2;
    label.setLayoutData(gd);

    // Tree
    fTreeViewer = new TreeViewer(client);
    gd = new GridData(GridData.FILL_BOTH);
    gd.heightHint = 80; // need this to set a smaller height
    fTreeViewer.getTree().setLayoutData(gd);

    // Tree Double-click listener
    fTreeViewer.addDoubleClickListener(new IDoubleClickListener() {
        @Override
        public void doubleClick(DoubleClickEvent event) {
            Object[] selected = ((IStructuredSelection) fTreeViewer.getSelection()).toArray();
            if (isValidTreeSelection(selected)) {
                RGB newRGB = openColorDialog(selected[0]);
                if (newRGB != null) {
                    for (Object object : selected) {
                        setColor(object, newRGB);
                    }
                }
            }
        }
    });

    // Tree Selection Changed Listener
    fTreeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            Object[] selected = ((IStructuredSelection) event.getSelection()).toArray();
            fEditFillColorButton.setEnabled(isValidTreeSelection(selected));
            fResetFillColorButton.setEnabled(isValidTreeSelection(selected));
        }
    });

    // Tree Content Provider
    fTreeViewer.setContentProvider(new ITreeContentProvider() {

        @Override
        public void dispose() {
        }

        @Override
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }

        @Override
        public Object[] getElements(Object inputElement) {
            if (inputElement instanceof String) {
                return new Object[] {
                        new TreeGrouping(Messages.ColoursFontsPreferencePage_7,
                                ArchimateModelUtils.getBusinessClasses()),
                        new TreeGrouping(Messages.ColoursFontsPreferencePage_8,
                                ArchimateModelUtils.getApplicationClasses()),
                        new TreeGrouping(Messages.ColoursFontsPreferencePage_9,
                                ArchimateModelUtils.getTechnologyClasses()),
                        new TreeGrouping(Messages.ColoursFontsPreferencePage_10,
                                ArchimateModelUtils.getMotivationClasses()),
                        new TreeGrouping(Messages.ColoursFontsPreferencePage_11,
                                ArchimateModelUtils.getImplementationMigrationClasses()),
                        new TreeGrouping(Messages.ColoursFontsPreferencePage_17,
                                new Object[] { IArchimatePackage.eINSTANCE.getDiagramModelNote(),
                                        IArchimatePackage.eINSTANCE.getDiagramModelGroup() }),
                        DEFAULT_ELEMENT_LINE_COLOR, DEFAULT_CONNECTION_LINE_COLOR };
            }

            return null;
        }

        @Override
        public Object[] getChildren(Object parentElement) {
            if (parentElement instanceof TreeGrouping) {
                return ((TreeGrouping) parentElement).children;
            }

            return null;
        }

        @Override
        public Object getParent(Object element) {
            return null;
        }

        @Override
        public boolean hasChildren(Object element) {
            return element instanceof TreeGrouping;
        }

    });

    // Tree Label Provider
    fTreeViewer.setLabelProvider(new LabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof EClass) {
                return ArchimateLabelProvider.INSTANCE.getDefaultName((EClass) element);
            }
            if (element instanceof TreeGrouping) {
                return ((TreeGrouping) element).title;
            }
            if (element instanceof String) {
                String s = (String) element;
                if (s.equals(DEFAULT_ELEMENT_LINE_COLOR)) {
                    return Messages.ColoursFontsPreferencePage_12;
                }
                if (s.equals(DEFAULT_CONNECTION_LINE_COLOR)) {
                    return Messages.ColoursFontsPreferencePage_18;
                }
            }

            return null;
        }

        @Override
        public Image getImage(Object element) {
            if (element instanceof TreeGrouping) {
                return IArchimateImages.ImageFactory.getImage(IArchimateImages.ECLIPSE_IMAGE_FOLDER);
            }

            return getColorSwatch(element);
        }

        // Create a coloured image based on colour and add to the image registry
        private Image getColorSwatch(Object object) {
            String key = getColorKey(object);
            Image image = fImageRegistry.get(key);
            if (image == null) {
                image = new Image(Display.getCurrent(), 16, 16);
                GC gc = new GC(image);
                SWTGraphics graphics = new SWTGraphics(gc);
                graphics.setBackgroundColor(fColorsCache.get(object));
                graphics.fillRectangle(0, 0, 15, 15);
                graphics.drawRectangle(0, 0, 15, 15);
                gc.dispose();
                graphics.dispose();
                fImageRegistry.put(key, image);
            }

            return image;
        }

    });

    //fTreeViewer.setAutoExpandLevel(2);

    // Set Content in Tree
    fTreeViewer.setInput(""); //$NON-NLS-1$

    // Buttons
    Composite buttonClient = new Composite(client, SWT.NULL);
    gd = new GridData(SWT.TOP, SWT.TOP, false, false);
    buttonClient.setLayoutData(gd);
    buttonClient.setLayout(new GridLayout());

    // Edit...
    fEditFillColorButton = new Button(buttonClient, SWT.PUSH);
    fEditFillColorButton.setText(Messages.ColoursFontsPreferencePage_13);
    fEditFillColorButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    fEditFillColorButton.setEnabled(false);
    fEditFillColorButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent event) {
            Object[] selected = ((IStructuredSelection) fTreeViewer.getSelection()).toArray();
            if (isValidTreeSelection(selected)) {
                RGB newRGB = openColorDialog(selected[0]);
                if (newRGB != null) {
                    for (Object object : selected) {
                        setColor(object, newRGB);
                    }
                }
            }
        }
    });

    // Reset
    fResetFillColorButton = new Button(buttonClient, SWT.PUSH);
    fResetFillColorButton.setText(Messages.ColoursFontsPreferencePage_14);
    fResetFillColorButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    fResetFillColorButton.setEnabled(false);
    fResetFillColorButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent event) {
            Object[] selected = ((IStructuredSelection) fTreeViewer.getSelection()).toArray();
            if (isValidTreeSelection(selected)) {
                for (Object object : selected) {
                    resetColorToInbuiltDefault(object);
                }
            }
        }
    });

    // Import Scheme
    Button importButton = new Button(buttonClient, SWT.PUSH);
    importButton.setText(Messages.ColoursFontsPreferencePage_2);
    importButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    importButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            try {
                importUserColors();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    });

    // Export Scheme
    Button exportButton = new Button(buttonClient, SWT.PUSH);
    exportButton.setText(Messages.ColoursFontsPreferencePage_3);
    exportButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    exportButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            try {
                exportUserColors();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    });

    Group elementColorGroup = new Group(client, SWT.NULL);
    elementColorGroup.setLayout(new GridLayout(2, false));
    elementColorGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    elementColorGroup.setText(Messages.ColoursFontsPreferencePage_20);

    // Derive element line colours
    fDeriveElementLineColorsButton = new Button(elementColorGroup, SWT.CHECK);
    fDeriveElementLineColorsButton.setText(Messages.ColoursFontsPreferencePage_19);
    gd = new GridData(GridData.FILL_HORIZONTAL);
    gd.horizontalSpan = 2;
    fDeriveElementLineColorsButton.setLayoutData(gd);
    fDeriveElementLineColorsButton.setSelection(getPreferenceStore().getBoolean(DERIVE_ELEMENT_LINE_COLOR));
    fDeriveElementLineColorsButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            fElementLineColorContrastSpinner.setEnabled(fDeriveElementLineColorsButton.getSelection());
            fContrastFactorLabel.setEnabled(fDeriveElementLineColorsButton.getSelection());
        }
    });

    fContrastFactorLabel = new Label(elementColorGroup, SWT.NULL);
    fContrastFactorLabel.setText(Messages.ColoursFontsPreferencePage_21);

    fElementLineColorContrastSpinner = new Spinner(elementColorGroup, SWT.BORDER);
    fElementLineColorContrastSpinner.setMinimum(1);
    fElementLineColorContrastSpinner.setMaximum(10);
    fElementLineColorContrastSpinner
            .setSelection(getPreferenceStore().getInt(DERIVE_ELEMENT_LINE_COLOR_FACTOR));

    label = new Label(elementColorGroup, SWT.NULL);
    label.setText(Messages.ColoursFontsPreferencePage_22);

    gd = new GridData(GridData.FILL_HORIZONTAL);
    gd.horizontalSpan = 2;

    // Persist user default colours
    fPersistUserDefaultColors = new Button(client, SWT.CHECK);
    fPersistUserDefaultColors.setText(Messages.ColoursFontsPreferencePage_1);
    fPersistUserDefaultColors.setLayoutData(gd);
    fPersistUserDefaultColors.setSelection(getPreferenceStore().getBoolean(SAVE_USER_DEFAULT_COLOR));

    // Use colours in application
    fShowUserDefaultFillColorsInApplication = new Button(client, SWT.CHECK);
    fShowUserDefaultFillColorsInApplication.setText(Messages.ColoursFontsPreferencePage_6);
    fShowUserDefaultFillColorsInApplication.setLayoutData(gd);
    fShowUserDefaultFillColorsInApplication
            .setSelection(getPreferenceStore().getBoolean(SHOW_FILL_COLORS_IN_GUI));
}

From source file:com.architexa.org.eclipse.gef.ui.palette.customize.PaletteCustomizerDialog.java

License:Open Source License

/**
 * Creates the TreeViewer that is the outline of the model.
 * /*from ww w  .  ja  va2  s . co  m*/
 * @param   composite   The Composite to which the ToolBar is to be added
 * @return            The newly created TreeViewer
 */
protected TreeViewer createOutlineTreeViewer(Composite composite) {
    Tree treeForViewer = new Tree(composite, SWT.BORDER);
    treeForViewer.setFont(composite.getFont());
    GridData data = new GridData(GridData.FILL_VERTICAL | GridData.HORIZONTAL_ALIGN_FILL);
    data.widthHint = 185;
    // Make the tree this tall even when there is nothing in it.  This will keep the
    // dialog from shrinking to an unusually small size.
    data.heightHint = 200;
    treeForViewer.setLayoutData(data);
    TreeViewer viewer = new TreeViewer(treeForViewer) {
        protected void preservingSelection(Runnable updateCode) {
            if ((getTree().getStyle() & SWT.SINGLE) != 0)
                updateCode.run();
            else
                super.preservingSelection(updateCode);
        }
    };
    viewer.setContentProvider(new PaletteTreeProvider(viewer));
    treeViewerLabelProvider = new PaletteLabelProvider(viewer);
    viewer.setLabelProvider(treeViewerLabelProvider);
    viewer.setInput(getPaletteRoot());
    viewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            handleOutlineSelectionChanged();
        }
    });

    return viewer;
}

From source file:com.architexa.org.eclipse.gef.ui.stackview.CommandStackInspectorPage.java

License:Open Source License

/**
 * @see org.eclipse.ui.part.Page#createControl(org.eclipse.swt.widgets.Composite)
 *//*  w  ww .  j  a v  a 2s . co m*/
public void createControl(Composite composite) {
    treeViewer = new TreeViewer(composite);
    treeViewer.setContentProvider(new TreeContentProvider(input));
    treeViewer.setLabelProvider(new TreeLabelProvider(input));
    treeViewer.setInput(input);
}

From source file:com.arm.cmsis.pack.refclient.ui.ConfigView.java

License:Open Source License

/**
 * This is a callback that will allow us
 * to create the viewer and initialize it.
 *//* w ww  . jav  a 2  s  .c o  m*/
public void createPartControl(Composite parent) {
    Tree tree = new Tree(parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
    tree.setHeaderVisible(true);
    tree.setLinesVisible(true);
    viewer = new TreeViewer(tree);

    TreeColumn column0 = new TreeColumn(tree, SWT.LEFT);
    column0.setAlignment(SWT.LEFT);
    column0.setText("Tag"); //$NON-NLS-1$
    column0.setWidth(100);

    TreeColumn column1 = new TreeColumn(tree, SWT.LEFT);
    column1.setAlignment(SWT.LEFT);
    column1.setText("Attributes"); //$NON-NLS-1$
    column1.setWidth(600);

    viewer.setContentProvider(new ConfigViewContentProvider());
    viewer.setLabelProvider(new ConfigViewLabelProvider());

    // Create the help context id for the viewer's control
    PlatformUI.getWorkbench().getHelpSystem().setHelp(viewer.getControl(), ID);
    makeActions();
    hookContextMenu();
    contributeToActionBars();

    CpProjectPlugIn.getRteProjectManager().addListener(this);
    getSite().getWorkbenchWindow().getSelectionService().addSelectionListener(this);

    ISelection sel = getSite().getWorkbenchWindow().getSelectionService().getSelection();
    updateView(sel);
}

From source file:com.arm.cmsis.pack.refclient.ui.DeviceTreeView.java

License:Open Source License

/**
 * This is a callback that will allow us
 * to create the viewer and initialize it.
 *//*from   w  w  w.j a v  a 2  s  . c o  m*/
public void createPartControl(Composite parent) {

    Tree tree = new Tree(parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
    tree.setHeaderVisible(true);
    tree.setLinesVisible(true);
    viewer = new TreeViewer(tree);

    TreeColumn column0 = new TreeColumn(tree, SWT.LEFT);
    column0.setText(CpStringsUI.DeviceTreeView_Name);
    column0.setWidth(400);

    TreeColumn column1 = new TreeColumn(tree, SWT.LEFT);
    column1.setText(CpStringsUI.DeviceTreeView_Type);
    column1.setWidth(80);

    TreeColumn column2 = new TreeColumn(tree, SWT.LEFT);
    column2.setText(CpStringsUI.DeviceTreeView_Attributes);
    column2.setWidth(400);

    drillDownAdapter = new DrillDownAdapter(viewer);

    viewer.setContentProvider(new DeviceViewContentProvider());
    viewer.setLabelProvider(new ViewLabelProvider());
    refresh();

    // Create the help context id for the viewer's control
    PlatformUI.getWorkbench().getHelpSystem().setHelp(viewer.getControl(), ID);
    makeActions();
    hookContextMenu();
    hookDoubleClickAction();
    contributeToActionBars();

    CpPlugIn.addRteListener(this);
}

From source file:com.arm.cmsis.pack.refclient.ui.PackView.java

License:Open Source License

/**
 * This is a callback that will allow us
 * to create the viewer and initialize it.
 *///w  w  w  .  j  a va 2  s  .  com
public void createPartControl(Composite parent) {

    Tree tree = new Tree(parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
    tree.setHeaderVisible(true);
    tree.setLinesVisible(true);
    viewer = new TreeViewer(tree);

    TreeColumn column0 = new TreeColumn(tree, SWT.LEFT);
    tree.setLinesVisible(true);
    column0.setText(CpStringsUI.PackView_Tag);
    column0.setWidth(300);

    TreeColumn column1 = new TreeColumn(tree, SWT.LEFT);
    tree.setLinesVisible(true);
    column1.setText(CpStringsUI.PackView_Attributes);
    column1.setWidth(200);

    TreeColumn column2 = new TreeColumn(tree, SWT.LEFT);
    column2.setText(CpStringsUI.PackView_Text);
    column2.setWidth(500);

    drillDownAdapter = new DrillDownAdapter(viewer);

    viewer.setContentProvider(new TreeObjectContentProvider());//new PackViewContentProvider());
    viewer.setLabelProvider(new ViewLabelProvider());
    refresh();

    // Create the help context id for the viewer's control
    PlatformUI.getWorkbench().getHelpSystem().setHelp(viewer.getControl(), ID);
    makeActions();
    hookContextMenu();
    hookDoubleClickAction();
    contributeToActionBars();

    CpPlugIn.addRteListener(this);
}

From source file:com.arm.cmsis.pack.ui.views.DeviceTreeView.java

License:Open Source License

/**
 * This is a callback that will allow us
 * to create the viewer and initialize it.
 */// ww  w  .ja  v  a  2s  .  c  o  m
public void createPartControl(Composite parent) {

    Tree tree = new Tree(parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
    tree.setHeaderVisible(true);
    tree.setLinesVisible(true);
    viewer = new TreeViewer(tree);

    TreeColumn column0 = new TreeColumn(tree, SWT.LEFT);
    column0.setAlignment(SWT.LEFT);
    column0.setText(CpStringsUI.DeviceTreeView_Name);
    column0.setWidth(400);

    TreeColumn column1 = new TreeColumn(tree, SWT.LEFT);
    column1.setAlignment(SWT.LEFT);
    column1.setText(CpStringsUI.DeviceTreeView_Type);
    column1.setWidth(80);

    TreeColumn column2 = new TreeColumn(tree, SWT.LEFT);
    column2.setAlignment(SWT.LEFT);
    column2.setText(CpStringsUI.DeviceTreeView_Attributes);
    column2.setWidth(400);

    drillDownAdapter = new DrillDownAdapter(viewer);

    viewer.setContentProvider(new DeviceViewContentProvider());
    viewer.setLabelProvider(new ViewLabelProvider());
    refresh();

    // Create the help context id for the viewer's control
    PlatformUI.getWorkbench().getHelpSystem().setHelp(viewer.getControl(), ID);
    makeActions();
    hookContextMenu();
    hookDoubleClickAction();
    contributeToActionBars();

    CpPlugIn.addRteListener(this);
}

From source file:com.arm.cmsis.pack.ui.views.PackView.java

License:Open Source License

/**
 * This is a callback that will allow us
 * to create the viewer and initialize it.
 *//*from w ww .j  ava  2s .c o m*/
public void createPartControl(Composite parent) {

    Tree tree = new Tree(parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
    tree.setHeaderVisible(true);
    tree.setLinesVisible(true);
    viewer = new TreeViewer(tree);

    TreeColumn column0 = new TreeColumn(tree, SWT.LEFT);
    tree.setLinesVisible(true);
    column0.setAlignment(SWT.LEFT);
    column0.setText(CpStringsUI.PackView_Tag);
    column0.setWidth(300);

    TreeColumn column1 = new TreeColumn(tree, SWT.LEFT);
    tree.setLinesVisible(true);
    column1.setAlignment(SWT.LEFT);
    column1.setText(CpStringsUI.PackView_Attributes);
    column1.setWidth(200);

    TreeColumn column2 = new TreeColumn(tree, SWT.RIGHT);
    column2.setAlignment(SWT.LEFT);
    column2.setText(CpStringsUI.PackView_Text);
    column2.setWidth(500);

    drillDownAdapter = new DrillDownAdapter(viewer);

    viewer.setContentProvider(new TreeObjectContentProvider());//new PackViewContentProvider());
    viewer.setLabelProvider(new ViewLabelProvider());
    refresh();

    // Create the help context id for the viewer's control
    PlatformUI.getWorkbench().getHelpSystem().setHelp(viewer.getControl(), ID);
    makeActions();
    hookContextMenu();
    hookDoubleClickAction();
    contributeToActionBars();

    CpPlugIn.addRteListener(this);
}

From source file:com.arm.cmsis.pack.ui.widgets.RteComponentSelectorWidget.java

License:Open Source License

@Override
public Composite createControl(Composite parent) {

    Tree tree = new Tree(parent, SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
    tree.setHeaderVisible(true);/*from w ww  .  jav  a2 s .  c  om*/
    tree.setLinesVisible(true);
    viewer = new TreeViewer(tree);
    ColumnViewerToolTipSupport.enableFor(viewer);
    fColumnAdvisor = new RteComponentColumnAdvisor(viewer);

    // Tree item name
    TreeViewerColumn column0 = new TreeViewerColumn(viewer, SWT.LEFT);
    column0.getColumn().setAlignment(SWT.LEFT);
    column0.getColumn().setText(CpStringsUI.RteComponentTreeWidget_SoftwareComponents);
    column0.getColumn().setWidth(180);
    column0.setEditingSupport(new AdvisedEditingSupport(viewer, fColumnAdvisor, 0));
    AdvisedCellLabelProvider col0LabelProvider = new AdvisedCellLabelProvider(fColumnAdvisor, 0);
    // workaround jface bug: first owner-draw column is not correctly painted when column is resized
    col0LabelProvider.setOwnerDrawEnabled(false);
    column0.setLabelProvider(col0LabelProvider);

    // Check box for selection
    TreeViewerColumn column1 = new TreeViewerColumn(viewer, SWT.CENTER);
    column1.getColumn().setAlignment(SWT.CENTER);
    column1.getColumn().setText(CpStringsUI.RteComponentTreeWidget_Sel);
    column1.getColumn().setWidth(35);
    column1.setEditingSupport(new AdvisedEditingSupport(viewer, fColumnAdvisor, 1));
    column1.setLabelProvider(new AdvisedCellLabelProvider(fColumnAdvisor, 1));

    // Variant
    TreeViewerColumn column2 = new TreeViewerColumn(viewer, SWT.RIGHT);
    column2.getColumn().setAlignment(SWT.LEFT);
    column2.getColumn().setText(CpStringsUI.RteComponentTreeWidget_Variant);
    column2.getColumn().setWidth(110);
    column2.setEditingSupport(new AdvisedEditingSupport(viewer, fColumnAdvisor, 2));
    column2.setLabelProvider(new AdvisedCellLabelProvider(fColumnAdvisor, 2));

    // Vendor
    TreeViewerColumn column3 = new TreeViewerColumn(viewer, SWT.RIGHT);
    column3.getColumn().setAlignment(SWT.LEFT);
    column3.getColumn().setText(CpStringsUI.RteComponentTreeWidget_Vendor);
    column3.getColumn().setWidth(110);
    column3.setEditingSupport(new AdvisedEditingSupport(viewer, fColumnAdvisor, 3));
    column3.setLabelProvider(new AdvisedCellLabelProvider(fColumnAdvisor, 3));

    // Version
    TreeViewerColumn column4 = new TreeViewerColumn(viewer, SWT.RIGHT);
    column4.getColumn().setAlignment(SWT.LEFT);
    column4.getColumn().setText(CpStringsUI.RteComponentTreeWidget_Version);
    column4.getColumn().setWidth(70);
    column4.setEditingSupport(new AdvisedEditingSupport(viewer, fColumnAdvisor, 4));
    column4.setLabelProvider(new AdvisedCellLabelProvider(fColumnAdvisor, 4));

    // Description/URL
    TreeViewerColumn column5 = new TreeViewerColumn(viewer, SWT.RIGHT);
    column5.getColumn().setAlignment(SWT.LEFT);
    column5.getColumn().setText(CpStringsUI.RteComponentTreeWidget_Description);
    column5.getColumn().setWidth(400);
    column5.setEditingSupport(new AdvisedEditingSupport(viewer, fColumnAdvisor, 5));
    column5.setLabelProvider(new AdvisedCellLabelProvider(fColumnAdvisor, 5));

    RteComponentContentProvider rteContentProvider = new RteComponentContentProvider();
    viewer.setContentProvider(rteContentProvider);

    GridData gridData = new GridData();
    gridData.horizontalAlignment = SWT.FILL;
    gridData.verticalAlignment = SWT.FILL;
    gridData.grabExcessHorizontalSpace = true;
    gridData.grabExcessVerticalSpace = true;
    gridData.horizontalSpan = 2;
    tree.setLayoutData(gridData);

    if (getModelController() != null) {
        viewer.setInput(getModelController());
    }
    hookContextMenu();
    return tree;
}