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

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

Introduction

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

Prototype

public StructuredSelection(List elements) 

Source Link

Document

Creates a structured selection from the given List.

Usage

From source file:ca.uwaterloo.gp.fmp.presentation.FmpModelWizard.java

License:Open Source License

/**
 * Do the work after everything is specified.
 * <!-- begin-user-doc -->//from   w  w  w.j ava  2s .co  m
 * <!-- end-user-doc -->
 * @generated NOT
 */
public boolean performFinish() {
    try {
        // Remember the file.
        //
        final IFile modelFile = getModelFile();

        // Do the work within an operation.
        //
        WorkspaceModifyOperation operation = new WorkspaceModifyOperation() {
            protected void execute(IProgressMonitor progressMonitor) {
                try {
                    // Create a resource set
                    //
                    ResourceSet resourceSet = new ResourceSetImpl();

                    // Get the URI of the model file.
                    //
                    URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString());

                    // Create a resource for this file.
                    //
                    Resource resource = resourceSet.createResource(fileURI);

                    // Add the initial model object to the contents.
                    //
                    EObject rootObject = createInitialModel();
                    if (rootObject != null) {
                        resource.getContents().add(rootObject);
                    }

                    // Save the contents of the resource to the file system.
                    //
                    Map options = new HashMap();
                    options.put(XMLResource.OPTION_ENCODING, "ASCII");
                    resource.save(options);
                } catch (Exception exception) {
                    fmpEditPlugin.INSTANCE.log(exception);
                } finally {
                    progressMonitor.done();
                }
            }
        };

        getContainer().run(false, false, operation);

        // Select the new file resource in the current view.
        //
        IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
        IWorkbenchPage page = workbenchWindow.getActivePage();
        final IWorkbenchPart activePart = page.getActivePart();
        if (activePart instanceof ISetSelectionTarget) {
            final ISelection targetSelection = new StructuredSelection(modelFile);
            getShell().getDisplay().asyncExec(new Runnable() {
                public void run() {
                    ((ISetSelectionTarget) activePart).selectReveal(targetSelection);
                }
            });
        }

        // Open an editor on the new file.
        //
        try {
            page.openEditor(new FileEditorInput(modelFile),
                    workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId());
        } catch (PartInitException exception) {
            MessageDialog.openError(workbenchWindow.getShell(),
                    fmpEditPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage());
            return false;
        }

        return true;
    } catch (Exception exception) {
        fmpEditPlugin.INSTANCE.log(exception);
        return false;
    }
}

From source file:ca.uwaterloo.gp.fmp.system.drillDown.FmpDrillDownAdapter.java

License:Open Source License

/**
 * Reverts the input for the tree back to the state when <code>goInto</code>
 * was last called.//w  w w .  j a  v a  2 s. c  om
 * <p>
 * A frame is removed from the drill stack.  Then that frame is used to reset the
 * input and expansion state for the child tree.
 * </p>
 */
public void goBack() {
    Object currentInput = fChildTree.getInput();
    DrillFrame oFrame = fDrillStack.goBack();
    Object input = oFrame.getElement();
    fChildTree.setInput(input);
    expand(oFrame.getExpansion());
    // if there was a selection, it should have been preserved,
    // but if not, select the element that was drilled into
    if (fChildTree.getSelection().isEmpty())
        fChildTree.setSelection(new StructuredSelection(currentInput), true);
    updateNavigationButtons();
}

From source file:ca.uwaterloo.gp.fmp.system.drillDown.FmpDrillDownAdapter.java

License:Open Source License

/**
 * Reverts the input for the tree back to the state when the adapter was
 * created./*www.j av a 2s .  co  m*/
 * <p>
 * All of the frames are removed from the drill stack.  Then the oldest frame is 
 * used to reset the input and expansion state for the child tree.
 * </p>
 */
public void goHome() {
    Object currentInput = fChildTree.getInput();
    DrillFrame oFrame = fDrillStack.goHome();
    Object input = oFrame.getElement();
    fChildTree.setInput(input);
    expand(oFrame.getExpansion());
    // if there was a selection, it should have been preserved,
    // but if not, select the element that was last drilled into
    if (fChildTree.getSelection().isEmpty())
        fChildTree.setSelection(new StructuredSelection(currentInput), true);
    updateNavigationButtons();
}

From source file:carisma.modeltype.bpmn2.extension.presentation.ExtensionEditor.java

License:Open Source License

/**
 * This sets the selection into whichever viewer is active.
 * <!-- begin-user-doc -->//from   w w  w . j a  va 2s  .c o  m
 * <!-- end-user-doc -->
 * @generated
 */
public void setSelectionToViewer(Collection<?> collection) {
    final Collection<?> theSelection = collection;
    // Make sure it's okay.
    //
    if (theSelection != null && !theSelection.isEmpty()) {
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                // Try to select the items in the current content viewer of the editor.
                //
                if (ExtensionEditor.this.currentViewer != null) {
                    ExtensionEditor.this.currentViewer
                            .setSelection(new StructuredSelection(theSelection.toArray()), true);
                }
            }
        };
        getSite().getShell().getDisplay().asyncExec(runnable);
    }
}

From source file:carisma.modeltype.bpmn2.extension.presentation.ExtensionEditor.java

License:Open Source License

/**
 * This is the method used by the framework to install your own controls.
 * <!-- begin-user-doc -->//from  w  ww.  j  a va 2s.  co  m
 * <!-- end-user-doc -->
 * @generated
 */
@Override
public void createPages() {
    // Creates the model from the editor input
    //
    createModel();

    // Only creates the other pages if there is something that can be edited
    //
    if (!getEditingDomain().getResourceSet().getResources().isEmpty()) {
        // Create a page for the selection tree view.
        //
        {
            ViewerPane viewerPane = new ViewerPane(getSite().getPage(), ExtensionEditor.this) {
                @Override
                public Viewer createViewer(Composite composite) {
                    Tree tree = new Tree(composite, SWT.MULTI);
                    TreeViewer newTreeViewer = new TreeViewer(tree);
                    return newTreeViewer;
                }

                @Override
                public void requestActivation() {
                    super.requestActivation();
                    setCurrentViewerPane(this);
                }
            };
            viewerPane.createControl(getContainer());

            this.selectionViewer = (TreeViewer) viewerPane.getViewer();
            this.selectionViewer.setContentProvider(new AdapterFactoryContentProvider(this.adapterFactory));

            this.selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(this.adapterFactory));
            this.selectionViewer.setInput(this.editingDomain.getResourceSet());
            this.selectionViewer.setSelection(
                    new StructuredSelection(this.editingDomain.getResourceSet().getResources().get(0)), true);
            viewerPane.setTitle(this.editingDomain.getResourceSet());

            new AdapterFactoryTreeEditor(this.selectionViewer.getTree(), this.adapterFactory);

            createContextMenuFor(this.selectionViewer);
            int pageIndex = addPage(viewerPane.getControl());
            setPageText(pageIndex, getString("_UI_SelectionPage_label"));
        }

        // Create a page for the parent tree view.
        //
        {
            ViewerPane viewerPane = new ViewerPane(getSite().getPage(), ExtensionEditor.this) {
                @Override
                public Viewer createViewer(Composite composite) {
                    Tree tree = new Tree(composite, SWT.MULTI);
                    TreeViewer newTreeViewer = new TreeViewer(tree);
                    return newTreeViewer;
                }

                @Override
                public void requestActivation() {
                    super.requestActivation();
                    setCurrentViewerPane(this);
                }
            };
            viewerPane.createControl(getContainer());

            this.parentViewer = (TreeViewer) viewerPane.getViewer();
            this.parentViewer.setAutoExpandLevel(30);
            this.parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(this.adapterFactory));
            this.parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(this.adapterFactory));

            createContextMenuFor(this.parentViewer);
            int pageIndex = addPage(viewerPane.getControl());
            setPageText(pageIndex, getString("_UI_ParentPage_label"));
        }

        // This is the page for the list viewer
        //
        {
            ViewerPane viewerPane = new ViewerPane(getSite().getPage(), ExtensionEditor.this) {
                @Override
                public Viewer createViewer(Composite composite) {
                    return new ListViewer(composite);
                }

                @Override
                public void requestActivation() {
                    super.requestActivation();
                    setCurrentViewerPane(this);
                }
            };
            viewerPane.createControl(getContainer());
            this.listViewer = (ListViewer) viewerPane.getViewer();
            this.listViewer.setContentProvider(new AdapterFactoryContentProvider(this.adapterFactory));
            this.listViewer.setLabelProvider(new AdapterFactoryLabelProvider(this.adapterFactory));

            createContextMenuFor(this.listViewer);
            int pageIndex = addPage(viewerPane.getControl());
            setPageText(pageIndex, getString("_UI_ListPage_label"));
        }

        // This is the page for the tree viewer
        //
        {
            ViewerPane viewerPane = new ViewerPane(getSite().getPage(), ExtensionEditor.this) {
                @Override
                public Viewer createViewer(Composite composite) {
                    return new TreeViewer(composite);
                }

                @Override
                public void requestActivation() {
                    super.requestActivation();
                    setCurrentViewerPane(this);
                }
            };
            viewerPane.createControl(getContainer());
            this.treeViewer = (TreeViewer) viewerPane.getViewer();
            this.treeViewer.setContentProvider(new AdapterFactoryContentProvider(this.adapterFactory));
            this.treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(this.adapterFactory));

            new AdapterFactoryTreeEditor(this.treeViewer.getTree(), this.adapterFactory);

            createContextMenuFor(this.treeViewer);
            int pageIndex = addPage(viewerPane.getControl());
            setPageText(pageIndex, getString("_UI_TreePage_label"));
        }

        // This is the page for the table viewer.
        //
        {
            ViewerPane viewerPane = new ViewerPane(getSite().getPage(), ExtensionEditor.this) {
                @Override
                public Viewer createViewer(Composite composite) {
                    return new TableViewer(composite);
                }

                @Override
                public void requestActivation() {
                    super.requestActivation();
                    setCurrentViewerPane(this);
                }
            };
            viewerPane.createControl(getContainer());
            this.tableViewer = (TableViewer) viewerPane.getViewer();

            Table table = this.tableViewer.getTable();
            TableLayout layout = new TableLayout();
            table.setLayout(layout);
            table.setHeaderVisible(true);
            table.setLinesVisible(true);

            TableColumn objectColumn = new TableColumn(table, SWT.NONE);
            layout.addColumnData(new ColumnWeightData(3, 100, true));
            objectColumn.setText(getString("_UI_ObjectColumn_label"));
            objectColumn.setResizable(true);

            TableColumn selfColumn = new TableColumn(table, SWT.NONE);
            layout.addColumnData(new ColumnWeightData(2, 100, true));
            selfColumn.setText(getString("_UI_SelfColumn_label"));
            selfColumn.setResizable(true);

            this.tableViewer.setColumnProperties(new String[] { "a", "b" });
            this.tableViewer.setContentProvider(new AdapterFactoryContentProvider(this.adapterFactory));
            this.tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(this.adapterFactory));

            createContextMenuFor(this.tableViewer);
            int pageIndex = addPage(viewerPane.getControl());
            setPageText(pageIndex, getString("_UI_TablePage_label"));
        }

        // This is the page for the table tree viewer.
        //
        {
            ViewerPane viewerPane = new ViewerPane(getSite().getPage(), ExtensionEditor.this) {
                @Override
                public Viewer createViewer(Composite composite) {
                    return new TreeViewer(composite);
                }

                @Override
                public void requestActivation() {
                    super.requestActivation();
                    setCurrentViewerPane(this);
                }
            };
            viewerPane.createControl(getContainer());

            this.treeViewerWithColumns = (TreeViewer) viewerPane.getViewer();

            Tree tree = this.treeViewerWithColumns.getTree();
            tree.setLayoutData(new FillLayout());
            tree.setHeaderVisible(true);
            tree.setLinesVisible(true);

            TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE);
            objectColumn.setText(getString("_UI_ObjectColumn_label"));
            objectColumn.setResizable(true);
            objectColumn.setWidth(250);

            TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE);
            selfColumn.setText(getString("_UI_SelfColumn_label"));
            selfColumn.setResizable(true);
            selfColumn.setWidth(200);

            this.treeViewerWithColumns.setColumnProperties(new String[] { "a", "b" });
            this.treeViewerWithColumns
                    .setContentProvider(new AdapterFactoryContentProvider(this.adapterFactory));
            this.treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(this.adapterFactory));

            createContextMenuFor(this.treeViewerWithColumns);
            int pageIndex = addPage(viewerPane.getControl());
            setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label"));
        }

        getSite().getShell().getDisplay().asyncExec(new Runnable() {
            @Override
            public void run() {
                setActivePage(0);
            }
        });
    }

    // Ensures that this editor will only display the page's tab
    // area if there are more than one page
    //
    getContainer().addControlListener(new ControlAdapter() {
        boolean guard = false;

        @Override
        public void controlResized(ControlEvent event) {
            if (!this.guard) {
                this.guard = true;
                hideTabs();
                this.guard = false;
            }
        }
    });

    getSite().getShell().getDisplay().asyncExec(new Runnable() {
        @Override
        public void run() {
            updateProblemIndication();
        }
    });
}

From source file:carisma.modeltype.bpmn2.extension.presentation.ExtensionEditor.java

License:Open Source License

/**
 * This accesses a cached version of the content outliner.
 * <!-- begin-user-doc -->//from w  ww.ja v a 2s .co m
 * <!-- end-user-doc -->
 * @generated
 */
public IContentOutlinePage getContentOutlinePage() {
    if (this.contentOutlinePage == null) {
        // The content outline is just a tree.
        //
        class MyContentOutlinePage extends ContentOutlinePage {
            @Override
            public void createControl(Composite parent) {
                super.createControl(parent);
                ExtensionEditor.this.contentOutlineViewer = getTreeViewer();
                ExtensionEditor.this.contentOutlineViewer.addSelectionChangedListener(this);

                // Set up the tree viewer.
                //
                ExtensionEditor.this.contentOutlineViewer.setContentProvider(
                        new AdapterFactoryContentProvider(ExtensionEditor.this.adapterFactory));
                ExtensionEditor.this.contentOutlineViewer
                        .setLabelProvider(new AdapterFactoryLabelProvider(ExtensionEditor.this.adapterFactory));
                ExtensionEditor.this.contentOutlineViewer
                        .setInput(ExtensionEditor.this.editingDomain.getResourceSet());

                // Make sure our popups work.
                //
                createContextMenuFor(ExtensionEditor.this.contentOutlineViewer);

                if (!ExtensionEditor.this.editingDomain.getResourceSet().getResources().isEmpty()) {
                    // Select the root object in the view.
                    //
                    ExtensionEditor.this.contentOutlineViewer.setSelection(
                            new StructuredSelection(
                                    ExtensionEditor.this.editingDomain.getResourceSet().getResources().get(0)),
                            true);
                }
            }

            @Override
            public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager,
                    IStatusLineManager statusLineManager) {
                super.makeContributions(menuManager, toolBarManager, statusLineManager);
                ExtensionEditor.this.contentOutlineStatusLineManager = statusLineManager;
            }

            @Override
            public void setActionBars(IActionBars actionBars) {
                super.setActionBars(actionBars);
                getActionBarContributor().shareGlobalActions(this, actionBars);
            }
        }

        this.contentOutlinePage = new MyContentOutlinePage();

        // Listen to selection so that we can handle it is a special way.
        //
        this.contentOutlinePage.addSelectionChangedListener(new ISelectionChangedListener() {
            // This ensures that we handle selections correctly.
            //
            @Override
            public void selectionChanged(SelectionChangedEvent event) {
                handleContentOutlineSelection(event.getSelection());
            }
        });
    }

    return this.contentOutlinePage;
}

From source file:carisma.modeltype.bpmn2.extension.presentation.ExtensionEditor.java

License:Open Source License

/**
 * This deals with how we want selection in the outliner to affect the other views.
 * <!-- begin-user-doc -->// w ww  . j a  v  a2s. co m
 * <!-- end-user-doc -->
 * @generated
 */
public void handleContentOutlineSelection(ISelection selection) {
    if (this.currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) {
        Iterator<?> selectedElements = ((IStructuredSelection) selection).iterator();
        if (selectedElements.hasNext()) {
            // Get the first selected element.
            //
            Object selectedElement = selectedElements.next();

            // If it's the selection viewer, then we want it to select the same selection as this selection.
            //
            if (this.currentViewerPane.getViewer() == this.selectionViewer) {
                ArrayList<Object> selectionList = new ArrayList<Object>();
                selectionList.add(selectedElement);
                while (selectedElements.hasNext()) {
                    selectionList.add(selectedElements.next());
                }

                // Set the selection to the widget.
                //
                this.selectionViewer.setSelection(new StructuredSelection(selectionList));
            } else {
                // Set the input to the widget.
                //
                if (this.currentViewerPane.getViewer().getInput() != selectedElement) {
                    this.currentViewerPane.getViewer().setInput(selectedElement);
                    this.currentViewerPane.setTitle(selectedElement);
                }
            }
        }
    }
}

From source file:carisma.modeltype.bpmn2.extension.presentation.ExtensionModelWizard.java

License:Open Source License

/**
 * Do the work after everything is specified.
 * <!-- begin-user-doc -->/*  ww  w.  j av  a  2 s  . c  o  m*/
 * <!-- end-user-doc -->
 * @generated
 */
@Override
public boolean performFinish() {
    try {
        // Remember the file.
        //
        final IFile modelFile = getModelFile();

        // Do the work within an operation.
        //
        WorkspaceModifyOperation operation = new WorkspaceModifyOperation() {
            @Override
            protected void execute(IProgressMonitor progressMonitor) {
                try {
                    // Create a resource set
                    //
                    ResourceSet resourceSet = new ResourceSetImpl();

                    // Get the URI of the model file.
                    //
                    URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true);

                    // Create a resource for this file.
                    //
                    Resource resource = resourceSet.createResource(fileURI);

                    // Add the initial model object to the contents.
                    //
                    EObject rootObject = createInitialModel();
                    if (rootObject != null) {
                        resource.getContents().add(rootObject);

                        if (ExtensionModelWizard.this.detailsPage.sourceFile != null) {
                            ExtensionModelWizardHelper.addExtensibleObjectsToModel(rootObject,
                                    ExtensionModelWizard.this.detailsPage.sourceFile.getLocation().toFile());
                        }
                    }

                    // Save the contents of the resource to the file system.
                    //
                    Map<Object, Object> options = new HashMap<>();

                    /** Define Encoding manually */
                    //options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding());
                    options.put(XMLResource.OPTION_ENCODING, "UTF-8");

                    resource.save(options);
                } catch (Exception exception) {
                    ExtensionEditorPlugin.INSTANCE.log(exception);
                } finally {
                    progressMonitor.done();
                }
            }
        };

        getContainer().run(false, false, operation);

        // Select the new file resource in the current view.
        //
        IWorkbenchWindow workbenchWindow = this.workbench.getActiveWorkbenchWindow();
        IWorkbenchPage page = workbenchWindow.getActivePage();
        final IWorkbenchPart activePart = page.getActivePart();
        if (activePart instanceof ISetSelectionTarget) {
            final ISelection targetSelection = new StructuredSelection(modelFile);
            getShell().getDisplay().asyncExec(new Runnable() {
                @Override
                public void run() {
                    ((ISetSelectionTarget) activePart).selectReveal(targetSelection);
                }
            });
        }

        // Open an editor on the new file.
        //
        try {
            page.openEditor(new FileEditorInput(modelFile), this.workbench.getEditorRegistry()
                    .getDefaultEditor(modelFile.getFullPath().toString()).getId());
        } catch (PartInitException exception) {
            MessageDialog.openError(workbenchWindow.getShell(),
                    ExtensionEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"),
                    exception.getMessage());
            return false;
        }

        return true;
    } catch (Exception exception) {
        ExtensionEditorPlugin.INSTANCE.log(exception);
        return false;
    }
}

From source file:carisma.ocl.library.presentation.LibraryEditor.java

License:Open Source License

/**
 * This sets the selection into whichever viewer is active.
 * <!-- begin-user-doc -->/*from   w w  w  .j  a v a 2 s .  c o m*/
 * <!-- end-user-doc -->
 * @generated
 */
public void setSelectionToViewer(Collection<?> collection) {
    final Collection<?> theSelection = collection;
    // Make sure it's okay.
    //
    if (theSelection != null && !theSelection.isEmpty()) {
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                // Try to select the items in the current content viewer of the editor.
                //
                if (LibraryEditor.this.currentViewer != null) {
                    LibraryEditor.this.currentViewer
                            .setSelection(new StructuredSelection(theSelection.toArray()), true);
                }
            }
        };
        getSite().getShell().getDisplay().asyncExec(runnable);
    }
}

From source file:carisma.ocl.library.presentation.LibraryEditor.java

License:Open Source License

/**
 * This is the method used by the framework to install your own controls.
 * <!-- begin-user-doc -->//from  w  ww .  java 2 s. c  o  m
 * <!-- end-user-doc -->
 * @generated
 */
@Override
public void createPages() {
    // Creates the model from the editor input
    //
    createModel();

    // Only creates the other pages if there is something that can be edited
    //
    if (!getEditingDomain().getResourceSet().getResources().isEmpty()) {
        // Create a page for the selection tree view.
        //
        {
            ViewerPane viewerPane = new ViewerPane(getSite().getPage(), LibraryEditor.this) {
                @Override
                public Viewer createViewer(Composite composite) {
                    Tree tree = new Tree(composite, SWT.MULTI);
                    TreeViewer newTreeViewer = new TreeViewer(tree);
                    return newTreeViewer;
                }

                @Override
                public void requestActivation() {
                    super.requestActivation();
                    setCurrentViewerPane(this);
                }
            };
            viewerPane.createControl(getContainer());

            this.selectionViewer = (TreeViewer) viewerPane.getViewer();
            this.selectionViewer.setContentProvider(new AdapterFactoryContentProvider(this.adapterFactory));

            this.selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(this.adapterFactory));
            this.selectionViewer.setInput(this.editingDomain.getResourceSet());
            this.selectionViewer.setSelection(
                    new StructuredSelection(this.editingDomain.getResourceSet().getResources().get(0)), true);
            viewerPane.setTitle(this.editingDomain.getResourceSet());

            new AdapterFactoryTreeEditor(this.selectionViewer.getTree(), this.adapterFactory);

            createContextMenuFor(this.selectionViewer);
            int pageIndex = addPage(viewerPane.getControl());
            setPageText(pageIndex, getString("_UI_SelectionPage_label"));
        }

        // Create a page for the parent tree view.
        //
        {
            ViewerPane viewerPane = new ViewerPane(getSite().getPage(), LibraryEditor.this) {
                @Override
                public Viewer createViewer(Composite composite) {
                    Tree tree = new Tree(composite, SWT.MULTI);
                    TreeViewer newTreeViewer = new TreeViewer(tree);
                    return newTreeViewer;
                }

                @Override
                public void requestActivation() {
                    super.requestActivation();
                    setCurrentViewerPane(this);
                }
            };
            viewerPane.createControl(getContainer());

            this.parentViewer = (TreeViewer) viewerPane.getViewer();
            this.parentViewer.setAutoExpandLevel(30);
            this.parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(this.adapterFactory));
            this.parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(this.adapterFactory));

            createContextMenuFor(this.parentViewer);
            int pageIndex = addPage(viewerPane.getControl());
            setPageText(pageIndex, getString("_UI_ParentPage_label"));
        }

        // This is the page for the list viewer
        //
        {
            ViewerPane viewerPane = new ViewerPane(getSite().getPage(), LibraryEditor.this) {
                @Override
                public Viewer createViewer(Composite composite) {
                    return new ListViewer(composite);
                }

                @Override
                public void requestActivation() {
                    super.requestActivation();
                    setCurrentViewerPane(this);
                }
            };
            viewerPane.createControl(getContainer());
            this.listViewer = (ListViewer) viewerPane.getViewer();
            this.listViewer.setContentProvider(new AdapterFactoryContentProvider(this.adapterFactory));
            this.listViewer.setLabelProvider(new AdapterFactoryLabelProvider(this.adapterFactory));

            createContextMenuFor(this.listViewer);
            int pageIndex = addPage(viewerPane.getControl());
            setPageText(pageIndex, getString("_UI_ListPage_label"));
        }

        // This is the page for the tree viewer
        //
        {
            ViewerPane viewerPane = new ViewerPane(getSite().getPage(), LibraryEditor.this) {
                @Override
                public Viewer createViewer(Composite composite) {
                    return new TreeViewer(composite);
                }

                @Override
                public void requestActivation() {
                    super.requestActivation();
                    setCurrentViewerPane(this);
                }
            };
            viewerPane.createControl(getContainer());
            this.treeViewer = (TreeViewer) viewerPane.getViewer();
            this.treeViewer.setContentProvider(new AdapterFactoryContentProvider(this.adapterFactory));
            this.treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(this.adapterFactory));

            new AdapterFactoryTreeEditor(this.treeViewer.getTree(), this.adapterFactory);

            createContextMenuFor(this.treeViewer);
            int pageIndex = addPage(viewerPane.getControl());
            setPageText(pageIndex, getString("_UI_TreePage_label"));
        }

        // This is the page for the table viewer.
        //
        {
            ViewerPane viewerPane = new ViewerPane(getSite().getPage(), LibraryEditor.this) {
                @Override
                public Viewer createViewer(Composite composite) {
                    return new TableViewer(composite);
                }

                @Override
                public void requestActivation() {
                    super.requestActivation();
                    setCurrentViewerPane(this);
                }
            };
            viewerPane.createControl(getContainer());
            this.tableViewer = (TableViewer) viewerPane.getViewer();

            Table table = this.tableViewer.getTable();
            TableLayout layout = new TableLayout();
            table.setLayout(layout);
            table.setHeaderVisible(true);
            table.setLinesVisible(true);

            TableColumn objectColumn = new TableColumn(table, SWT.NONE);
            layout.addColumnData(new ColumnWeightData(3, 100, true));
            objectColumn.setText(getString("_UI_ObjectColumn_label"));
            objectColumn.setResizable(true);

            TableColumn selfColumn = new TableColumn(table, SWT.NONE);
            layout.addColumnData(new ColumnWeightData(2, 100, true));
            selfColumn.setText(getString("_UI_SelfColumn_label"));
            selfColumn.setResizable(true);

            this.tableViewer.setColumnProperties(new String[] { "a", "b" });
            this.tableViewer.setContentProvider(new AdapterFactoryContentProvider(this.adapterFactory));
            this.tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(this.adapterFactory));

            createContextMenuFor(this.tableViewer);
            int pageIndex = addPage(viewerPane.getControl());
            setPageText(pageIndex, getString("_UI_TablePage_label"));
        }

        // This is the page for the table tree viewer.
        //
        {
            ViewerPane viewerPane = new ViewerPane(getSite().getPage(), LibraryEditor.this) {
                @Override
                public Viewer createViewer(Composite composite) {
                    return new TreeViewer(composite);
                }

                @Override
                public void requestActivation() {
                    super.requestActivation();
                    setCurrentViewerPane(this);
                }
            };
            viewerPane.createControl(getContainer());

            this.treeViewerWithColumns = (TreeViewer) viewerPane.getViewer();

            Tree tree = this.treeViewerWithColumns.getTree();
            tree.setLayoutData(new FillLayout());
            tree.setHeaderVisible(true);
            tree.setLinesVisible(true);

            TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE);
            objectColumn.setText(getString("_UI_ObjectColumn_label"));
            objectColumn.setResizable(true);
            objectColumn.setWidth(250);

            TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE);
            selfColumn.setText(getString("_UI_SelfColumn_label"));
            selfColumn.setResizable(true);
            selfColumn.setWidth(200);

            this.treeViewerWithColumns.setColumnProperties(new String[] { "a", "b" });
            this.treeViewerWithColumns
                    .setContentProvider(new AdapterFactoryContentProvider(this.adapterFactory));
            this.treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(this.adapterFactory));

            createContextMenuFor(this.treeViewerWithColumns);
            int pageIndex = addPage(viewerPane.getControl());
            setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label"));
        }

        getSite().getShell().getDisplay().asyncExec(new Runnable() {
            @Override
            public void run() {
                setActivePage(0);
            }
        });
    }

    // Ensures that this editor will only display the page's tab
    // area if there are more than one page
    //
    getContainer().addControlListener(new ControlAdapter() {
        boolean guard = false;

        @Override
        public void controlResized(ControlEvent event) {
            if (!this.guard) {
                this.guard = true;
                hideTabs();
                this.guard = false;
            }
        }
    });

    getSite().getShell().getDisplay().asyncExec(new Runnable() {
        @Override
        public void run() {
            updateProblemIndication();
        }
    });
}