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

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

Introduction

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

Prototype

public Tree getTree() 

Source Link

Document

Returns this tree viewer's tree control.

Usage

From source file:net.rim.ejde.internal.ui.editors.model.BlackBerryProjectOutlinePage.java

License:Open Source License

public void updateTreeSelection(Control control) {
    TreeViewer viewer = getTreeViewer();
    Tree tree = viewer.getTree();
    TreeItem item = null;/*w  w  w .  jav a  2s. c om*/

    if (tree.getSelection() == null) {
        return;
    }

    if (control instanceof Table) {
        Table table = (Table) control;
        TableItem selections[] = table.getSelection();

        if (selections.length > 0) {
            item = getTableItem(tree, selections[0].getText(2));
        }
    } else {
        item = getControlItem(tree,
                control.getData(BlackBerryProjectPropertiesPage.CONTROL_TITLE_KEY).toString());
    }

    if (item != null) {
        TreeItem selectedItem[] = tree.getSelection();

        if ((selectedItem.length > 0) && selectedItem[0].equals(item)) {
            return;
        }

        tree.deselectAll();
        tree.select(item);
    }
}

From source file:net.rim.ejde.internal.ui.editors.model.BlackBerryProjectOutlinePage.java

License:Open Source License

public void updateTreeSelection(BlackBerryProjectPropertiesPage page) {
    TreeViewer viewer = getTreeViewer();
    Tree tree = viewer.getTree();
    TreeItem item = getPageItem(tree, page.getTitle());

    if (item != null) {
        TreeItem selectedItem[] = tree.getSelection();

        if ((selectedItem.length > 0) && selectedItem[0].equals(item)) {
            return;
        }/*w  w w  .j  a  v  a  2s  . c om*/

        tree.deselectAll();
        tree.select(item);
    }
}

From source file:net.sf.eclipsensis.help.NSISHTMLHelp.java

License:Open Source License

private Composite createContentsTab(Composite parent) {
    Composite contentsComposite = new Composite(parent, SWT.NONE);
    GridLayout layout = new GridLayout(1, false);
    contentsComposite.setLayout(layout);
    Tree tree = new Tree(contentsComposite, SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL);
    tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    mContentsViewer = new TreeViewer(tree);
    final ITreeContentProvider contentProvider = new EmptyContentProvider() {
        @Override/*  w  w w  . j  a va 2 s .com*/
        public Object[] getChildren(Object parentElement) {
            if (parentElement instanceof NSISHelpTOC) {
                return ((NSISHelpTOC) parentElement).getChildren().toArray();
            } else if (parentElement instanceof NSISHelpTOCNode) {
                return ((NSISHelpTOCNode) parentElement).getChildren().toArray();
            }
            return null;
        }

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

        @Override
        public boolean hasChildren(Object element) {
            if (element instanceof NSISHelpTOC) {
                return !Common.isEmptyCollection(((NSISHelpTOC) element).getChildren());
            } else if (element instanceof NSISHelpTOCNode) {
                return !Common.isEmptyCollection(((NSISHelpTOCNode) element).getChildren());
            }
            return false;
        }

        @Override
        public Object[] getElements(Object inputElement) {
            if (inputElement instanceof NSISHelpTOC) {
                return getChildren(inputElement);
            }
            return null;
        }
    };
    mContentsViewer.setContentProvider(contentProvider);
    ImageManager imageManager = EclipseNSISPlugin.getImageManager();
    final Image helpClosed = imageManager.getImage(EclipseNSISPlugin.getResourceString("help.closed.icon")); //$NON-NLS-1$
    final Image helpOpen = imageManager.getImage(EclipseNSISPlugin.getResourceString("help.open.icon")); //$NON-NLS-1$
    final Image helpPage = imageManager.getImage(EclipseNSISPlugin.getResourceString("help.page.icon")); //$NON-NLS-1$
    mContentsViewer.setLabelProvider(new LabelProvider() {
        @Override
        public Image getImage(Object element) {
            if (element instanceof NSISHelpTOCNode) {
                NSISHelpTOCNode node = (NSISHelpTOCNode) element;
                if (Common.isEmptyCollection(node.getChildren())) {
                    return helpPage;
                } else {
                    if (mContentsViewer.getExpandedState(element)) {
                        return helpOpen;
                    } else {
                        return helpClosed;
                    }
                }
            }
            return super.getImage(element);
        }

        @Override
        public String getText(Object element) {
            if (element instanceof NSISHelpTOCNode) {
                return ((NSISHelpTOCNode) element).getName();
            }
            return super.getText(element);
        }
    });
    mContentsViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            if (!event.getSelection().isEmpty()) {
                Object element = ((IStructuredSelection) event.getSelection()).getFirstElement();
                if (element instanceof NSISHelpTOCNode) {
                    String url = ((NSISHelpTOCNode) element).getURL();
                    if (!Common.stringsAreEqual(url, mBrowser.getUrl(), true)) {
                        mBrowser.setUrl(url);
                    }
                }
            }
        }
    });
    mContentsViewer.addTreeListener(new ITreeViewerListener() {
        public void treeCollapsed(TreeExpansionEvent event) {
            updateLabels(mContentsViewer, event);
        }

        /**
         * @param treeViewer
         * @param event
         */
        private void updateLabels(final TreeViewer treeViewer, TreeExpansionEvent event) {
            final Object element = event.getElement();
            if (element instanceof NSISHelpTOCNode) {
                treeViewer.getTree().getDisplay().asyncExec(new Runnable() {
                    public void run() {
                        treeViewer.update(element, null);
                    }
                });
            }
        }

        public void treeExpanded(TreeExpansionEvent event) {
            updateLabels(mContentsViewer, event);
        }
    });
    return contentsComposite;
}

From source file:net.sf.eclipsensis.wizard.NSISWizardContentsPage.java

License:Open Source License

private void configureDND(final TreeViewer tv) {
    Transfer[] types = new Transfer[] { ContentsTransfer.INSTANCE };
    int operations = DND.DROP_MOVE | DND.DROP_COPY;
    tv.addDragSupport(operations, types, new DragSourceListener() {
        public void dragFinished(DragSourceEvent event) {
        }// w ww.  jav  a2  s  .  co  m

        public void dragSetData(DragSourceEvent event) {
            List<INSISInstallElement> selection = getSelectionList(tv);
            INSISInstallElement parent = getSelectionParent(selection);
            if (parent == null) {
                event.data = null;
            } else {
                event.data = new ContentsTransferData(parent, selection);
            }
        }

        public void dragStart(DragSourceEvent event) {
            List<INSISInstallElement> selection = getSelectionList(tv);
            INSISInstallElement parent = getSelectionParent(selection);
            if (parent == null) {
                event.doit = false;
            }
        }
    });
    tv.addDropSupport(operations, new Transfer[] { ContentsTransfer.INSTANCE, FileTransfer.getInstance() },
            new DropTargetAdapter() {
                private int determineOperation(String[] files, String[] types, INSISInstallElement target,
                        DropTargetEvent event, int defaultFeedback) {
                    if (target == null) {
                        return DND.DROP_NONE;
                    }
                    int operation = DND.DROP_COPY;
                    boolean filesOnly = true;
                    for (int i = 0; i < files.length; i++) {
                        if (IOUtility.isValidFile(files[i])) {
                            if (files[i].regionMatches(true, files[i].length() - REG_FILE_EXTENSION.length(),
                                    REG_FILE_EXTENSION, 0, REG_FILE_EXTENSION.length())) {
                                types[i] = NSISInstallRegistryValue.TYPE;
                            } else {
                                types[i] = NSISInstallFile.TYPE;
                            }
                        } else {
                            //Directory
                            filesOnly = false;
                            types[i] = NSISInstallDirectory.TYPE;
                        }
                    }
                    NSISInstallFiles.FileItem fileItem = null;
                    if (filesOnly) {
                        fileItem = new NSISInstallFiles.FileItem();
                    }
                    for (int i = 0; i < types.length; i++) {
                        if (!target.acceptsChildType(types[i])) {
                            if (types[i].equals(NSISInstallRegistryValue.TYPE)) {
                                types[i] = NSISInstallFile.TYPE;
                                if (target.acceptsChildType(types[i])) {
                                    continue;
                                }
                            }
                            if (fileItem != null && types[i].equals(NSISInstallFile.TYPE) && filesOnly) {
                                fileItem.setName(files[i]);
                                if (target.canAddChild(fileItem)) {
                                    types[i] = NSISInstallFiles.FileItem.FILEITEM_TYPE;
                                    continue;
                                }
                            }
                            operation = DND.DROP_NONE;
                            break;
                        }
                    }
                    return operation;
                }

                private int determineOperation(List<INSISInstallElement> selection,
                        INSISInstallElement oldParent, INSISInstallElement newParent, DropTargetEvent event,
                        int defaultFeedback) {
                    int operation = DND.DROP_NONE;
                    if (newParent != null) {
                        boolean shift = WinAPI.INSTANCE.getKeyState(WinAPI.VK_SHIFT) < 0;
                        boolean ctrl = WinAPI.INSTANCE.getKeyState(WinAPI.VK_CTRL) < 0;
                        if (ctrl && shift) {
                            operation = DND.DROP_NONE;
                        } else {
                            if (ctrl) {
                                operation = DND.DROP_COPY;
                            } else if (shift) {
                                operation = DND.DROP_MOVE;
                            } else {
                                operation = DND.DROP_DEFAULT;
                            }
                        }
                        if (newParent != oldParent || operation == DND.DROP_COPY) {
                            for (Iterator<INSISInstallElement> iter = selection.iterator(); iter.hasNext();) {
                                if (!newParent.canAddChild(iter.next())) {
                                    operation = DND.DROP_NONE;
                                    break;
                                }
                            }
                        }
                        if (operation != DND.DROP_NONE && event != null) {
                            event.feedback |= defaultFeedback;
                        }
                    }
                    return operation;
                }

                @Override
                public void dragOver(DropTargetEvent event) {
                    event.feedback = DND.FEEDBACK_EXPAND | DND.FEEDBACK_SCROLL;
                    int detail = DND.DROP_NONE;
                    if (event.item instanceof TreeItem) {
                        Tree tree = tv.getTree();
                        TreeItem item = (TreeItem) event.item;
                        Object data = item.getData();
                        if (data instanceof INSISInstallElement) {
                            INSISInstallElement element = (INSISInstallElement) data;
                            if (ContentsTransfer.INSTANCE.isSupportedType(event.currentDataType)) {
                                ContentsTransferData transferData = (ContentsTransferData) ContentsTransfer.INSTANCE
                                        .nativeToJava(event.currentDataType);
                                if (transferData.parent != null) {
                                    Point pt = tree.getDisplay().map(null, tree, event.x, event.y);
                                    Rectangle bounds = item.getBounds();
                                    if (pt.y < bounds.y + bounds.height / 3) {
                                        detail = determineOperation(transferData.selection, transferData.parent,
                                                element.getParent(), event, DND.FEEDBACK_INSERT_BEFORE);
                                    } else if (pt.y > bounds.y + 2 * bounds.height / 3) {
                                        detail = determineOperation(transferData.selection, transferData.parent,
                                                element.getParent(), event, DND.FEEDBACK_INSERT_AFTER);
                                    } else {
                                        detail = determineOperation(transferData.selection, transferData.parent,
                                                element, event, DND.FEEDBACK_SELECT);
                                    }
                                }
                            } else if (FileTransfer.getInstance().isSupportedType(event.currentDataType)) {
                                Object transferData = FileTransfer.getInstance()
                                        .nativeToJava(event.currentDataType);
                                if (transferData instanceof String[]) {
                                    String[] files = (String[]) transferData;
                                    String[] types = new String[files.length];
                                    Point pt = tree.getDisplay().map(null, tree, event.x, event.y);
                                    Rectangle bounds = item.getBounds();
                                    if (pt.y < bounds.y + bounds.height / 3) {
                                        detail = determineOperation(files, types, element.getParent(), event,
                                                DND.FEEDBACK_INSERT_BEFORE);
                                    } else if (pt.y > bounds.y + 2 * bounds.height / 3) {
                                        detail = determineOperation(files, types, element.getParent(), event,
                                                DND.FEEDBACK_INSERT_AFTER);
                                    } else {
                                        detail = determineOperation(files, types, element, event,
                                                DND.FEEDBACK_SELECT);
                                    }
                                }
                            }
                        }
                    }
                    event.detail = detail;
                }

                private void doDrop(List<INSISInstallElement> selection, int detail,
                        INSISInstallElement oldParent, INSISInstallElement newParent, int index) {
                    int index2 = index;
                    try {
                        for (Iterator<INSISInstallElement> iter = selection.iterator(); iter.hasNext();) {
                            INSISInstallElement el = iter.next();
                            switch (detail) {
                            case DND.DROP_COPY:
                                el = (INSISInstallElement) el.clone();
                                //$FALL-THROUGH$
                            case DND.DROP_DEFAULT:
                            case DND.DROP_MOVE:
                                if (oldParent == newParent) {
                                    int n = oldParent.indexOf(el);
                                    if (n < index2) {
                                        index2--;
                                    }
                                    oldParent.removeChild(el);
                                }
                                newParent.addChild(index2++, el);
                            }
                        }
                        setPageComplete(validatePage(VALIDATE_ALL));
                    } catch (Exception ex) {
                        delayedValidateAfterError(ex.getLocalizedMessage(), 2000);
                    } finally {
                        tv.refresh(true);
                        if (newParent instanceof AbstractNSISInstallGroup) {
                            ((AbstractNSISInstallGroup) newParent).setExpanded(true);
                            expandGroup(tv, (AbstractNSISInstallGroup) newParent);
                        }
                    }
                }

                private void doDrop(String[] files, String[] types, INSISInstallElement target, int index) {
                    int index2 = index;
                    try {
                        RegistryImporter importer = null;
                        RegistryImportStrategy strategy = null;

                        for (int i = 0; i < files.length; i++) {
                            INSISInstallElement el = null;
                            if (types[i].equals(NSISInstallFile.TYPE)) {
                                el = new NSISInstallFile();
                                ((NSISInstallFile) el).setName(files[i]);
                            } else if (types[i].equals(NSISInstallDirectory.TYPE)) {
                                el = new NSISInstallDirectory();
                                ((NSISInstallDirectory) el).setName(files[i]);
                            } else if (types[i].equals(NSISInstallFiles.FileItem.FILEITEM_TYPE)) {
                                el = new NSISInstallFiles.FileItem();
                                ((NSISInstallFiles.FileItem) el).setName(files[i]);
                            } else if (types[i].equals(NSISInstallRegistryValue.TYPE)) {
                                try {
                                    if (importer == null || strategy == null) {
                                        importer = new RegistryImporter();
                                        strategy = new RegistryImportStrategy();
                                    } else {
                                        strategy.reset();
                                    }
                                    importer.importRegFile(getShell(), files[i], strategy);
                                    List<NSISInstallRegistryItem> list = strategy.getRegistryItems();
                                    if (!Common.isEmptyCollection(list)) {
                                        for (Iterator<NSISInstallRegistryItem> iter = list.iterator(); iter
                                                .hasNext();) {
                                            NSISInstallRegistryItem element = iter.next();
                                            target.addChild(index2++, element);
                                        }
                                    }
                                    continue;
                                } catch (Exception ex) {
                                }
                                el = new NSISInstallFile();
                                ((NSISInstallFile) el).setName(files[i]);
                            }
                            if (el != null) {
                                target.addChild(index2++, el);
                            }
                        }
                        setPageComplete(validatePage(VALIDATE_ALL));
                    } catch (Exception ex) {
                        delayedValidateAfterError(ex.getLocalizedMessage(), 2000);
                    } finally {
                        tv.refresh(true);
                        if (target instanceof AbstractNSISInstallGroup) {
                            ((AbstractNSISInstallGroup) target).setExpanded(true);
                            expandGroup(tv, (AbstractNSISInstallGroup) target);
                        }
                    }
                }

                @Override
                public void drop(DropTargetEvent event) {
                    int detail = DND.DROP_NONE;

                    if (event.item instanceof TreeItem) {
                        Tree tree = tv.getTree();
                        TreeItem item = (TreeItem) event.item;
                        Object data = item.getData();
                        if (data instanceof INSISInstallElement) {
                            INSISInstallElement element = (INSISInstallElement) data;
                            if (ContentsTransfer.INSTANCE.isSupportedType(event.currentDataType)) {
                                if (event.data instanceof ContentsTransferData) {
                                    ContentsTransferData transferData = (ContentsTransferData) event.data;
                                    if (transferData.parent != null) {
                                        Point pt = tree.getDisplay().map(null, tree, event.x, event.y);
                                        Rectangle bounds = item.getBounds();
                                        if (pt.y < bounds.y + bounds.height / 3) {
                                            detail = determineOperation(transferData.selection,
                                                    transferData.parent, element.getParent(), null, 0);
                                            if (detail != DND.DROP_NONE) {
                                                doDrop(transferData.selection, detail, transferData.parent,
                                                        element.getParent(),
                                                        element.getParent().indexOf(element));
                                            }
                                        } else if (pt.y > bounds.y + 2 * bounds.height / 3) {
                                            detail = determineOperation(transferData.selection,
                                                    transferData.parent, element.getParent(), null, 0);
                                            if (detail != DND.DROP_NONE) {
                                                doDrop(transferData.selection, detail, transferData.parent,
                                                        element.getParent(),
                                                        element.getParent().indexOf(element) + 1);
                                            }
                                        } else {
                                            detail = determineOperation(transferData.selection,
                                                    transferData.parent, element, null, 0);
                                            if (detail != DND.DROP_NONE) {
                                                doDrop(transferData.selection, detail, transferData.parent,
                                                        element, element.getChildCount());
                                            }
                                        }
                                    }
                                }
                            } else if (FileTransfer.getInstance().isSupportedType(event.currentDataType)) {
                                if (event.data instanceof String[]) {
                                    String[] files = (String[]) event.data;
                                    String[] types = new String[files.length];
                                    Point pt = tree.getDisplay().map(null, tree, event.x, event.y);
                                    Rectangle bounds = item.getBounds();
                                    if (pt.y < bounds.y + bounds.height / 3) {
                                        detail = determineOperation(files, types, element.getParent(), event,
                                                DND.FEEDBACK_INSERT_BEFORE);
                                        if (detail != DND.DROP_NONE) {
                                            doDrop(files, types, element.getParent(),
                                                    element.getParent().indexOf(element));
                                        }
                                    } else if (pt.y > bounds.y + 2 * bounds.height / 3) {
                                        detail = determineOperation(files, types, element.getParent(), event,
                                                DND.FEEDBACK_INSERT_AFTER);
                                        if (detail != DND.DROP_NONE) {
                                            doDrop(files, types, element.getParent(),
                                                    element.getParent().indexOf(element) + 1);
                                        }
                                    } else {
                                        detail = determineOperation(files, types, element, event,
                                                DND.FEEDBACK_SELECT);
                                        if (detail != DND.DROP_NONE) {
                                            doDrop(files, types, element, element.getChildCount());
                                        }
                                    }
                                }
                            }
                        }
                    }
                    event.detail = detail;
                }
            });
}

From source file:net.sourceforge.sqlexplorer.oracle.actions.explain.ExplainExecution.java

License:Open Source License

private void displayResults(final ExplainNode node, final Query query) {

    getEditor().getSite().getShell().getDisplay().asyncExec(new Runnable() {

        public void run() {

            CTabItem resultsTab = allocateResultsTab(query);

            try {
                Composite composite = resultsTab.getParent();

                GridLayout gLayout = new GridLayout();
                gLayout.numColumns = 2;// w ww  . ja va  2  s  . co  m
                gLayout.marginLeft = 0;
                gLayout.horizontalSpacing = 0;
                gLayout.verticalSpacing = 0;
                gLayout.marginWidth = 0;
                gLayout.marginHeight = 0;
                composite.setLayout(gLayout);

                composite.setData("parenttab", resultsTab.getParent());

                Composite pp = new Composite(composite, SWT.NULL);
                pp.setLayout(new FillLayout());
                pp.setLayoutData(new GridData(GridData.FILL_BOTH));
                TreeViewer tv = new TreeViewer(pp, SWT.BORDER | SWT.FULL_SELECTION);
                Tree table = tv.getTree();
                table.setLinesVisible(true);
                table.setHeaderVisible(true);
                TreeColumn tc = new TreeColumn(table, SWT.NULL);
                tc.setText("");
                tc = new TreeColumn(table, SWT.NULL);
                tc.setText("Cost");
                tc = new TreeColumn(table, SWT.NULL);
                tc.setText("Cardinality");
                TableLayout tableLayout = new TableLayout();
                tableLayout.addColumnData(new ColumnWeightData(6, 150, true));
                tableLayout.addColumnData(new ColumnWeightData(1, 50, true));
                tableLayout.addColumnData(new ColumnWeightData(1, 50, true));
                table.setLayout(tableLayout);

                tv.setContentProvider(new ITreeContentProvider() {

                    public void dispose() {

                    }

                    public Object[] getChildren(Object parentElement) {

                        return ((ExplainNode) parentElement).getChildren();
                    }

                    public Object[] getElements(Object inputElement) {

                        ExplainNode nd = ((ExplainNode) inputElement);

                        return nd.getChildren();
                    }

                    public Object getParent(Object element) {

                        return ((ExplainNode) element).getParent();
                    }

                    public boolean hasChildren(Object element) {

                        if (((ExplainNode) element).getChildren().length > 0)
                            return true;
                        return false;
                    }

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

                    }
                });
                tv.setLabelProvider(new TreeLabelProvider() {
                });
                tv.setInput(node);
                tv.refresh();
                tv.expandAll();

                // make columns full size
                for (int i = 0; i < table.getColumnCount(); i++) {
                    table.getColumn(i).pack();
                }

                /*
                final Composite parent = composite;
                table.addKeyListener(new KeyAdapter() {
                        
                public void keyReleased(KeyEvent e) {
                        
                    switch (e.keyCode) {
                        
                        case SWT.F5:
                        
                            // refresh SQL Results
                            try {
                                Object o = parent.getData("parenttab");
                                if (o != null) {
                                    AbstractSQLExecution sqlExec = (AbstractSQLExecution) ((TabItem) o).getData();
                                    if (sqlExec != null) {
                                        sqlExec.startExecution();
                                    }
                                }
                            } catch (Exception e1) {
                                SQLExplorerPlugin.error("Error refreshing", e1);
                            }
                        
                            break;
                        
                    }
                        
                }
                        
                });*/

                // add context menu to table & cursor
                final ExplainPlanActionGroup actionGroup = new ExplainPlanActionGroup(tv,
                        node.getChildren()[0]);
                MenuManager menuManager = new MenuManager("ExplainPlanContextMenu");
                menuManager.setRemoveAllWhenShown(true);
                Menu contextMenu = menuManager.createContextMenu(table);

                tv.getControl().setMenu(contextMenu);

                menuManager.addMenuListener(new IMenuListener() {

                    public void menuAboutToShow(IMenuManager manager) {
                        actionGroup.fillContextMenu(manager);
                    }
                });

                composite.layout();
                composite.redraw();

            } catch (Exception e) {

                // add message
                if (resultsTab != null) {
                    Composite composite = resultsTab.getParent();
                    String message = e.getMessage();
                    Label errorLabel = new Label(composite, SWT.FILL);
                    errorLabel.setText(message);
                    errorLabel.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
                }

                SQLExplorerPlugin.error("Error creating explain tab", e);
            }

        };
    });
}

From source file:net.sourceforge.sqlexplorer.plugin.views.DatabaseStructureView.java

License:Open Source License

/**
 * Add a new session to the database structure view. This will create a new tab for the session.
 * /*w w  w  .j  a  va  2s .c o  m*/
 * @param session
 */
private void addSession(final MetaDataSession session) throws SQLCannotConnectException {
    if (_allSessions.contains(session)) {
        return;
    }
    try {
        session.getMetaData();
        session.setAutoCommit(true);
    } catch (SQLCannotConnectException e) {
        SQLExplorerPlugin.error(e);
        throw e;
    } catch (SQLException e) {
        SQLExplorerPlugin.error(e);
        MessageDialog.openError(getSite().getShell(), "Cannot connect", e.getMessage());
    }
    DatabaseNode rootNode = session.getRoot();
    if (rootNode == null) {
        return;
    }
    _allSessions.add(session);

    if (_filterAction != null) {
        _filterAction.setEnabled(true);
    }

    if (_tabFolder == null || _tabFolder.isDisposed()) {

        clearParent();

        // create tab folder for different sessions
        _tabFolder = new CTabFolder(_parent, SWT.TOP | SWT.CLOSE);

        // add listener to keep both views on the same active tab
        _tabFolder.addSelectionListener(new SelectionAdapter() {

            @Override
            public void widgetSelected(SelectionEvent e) {

                // set the selected node in the detail view.
                DatabaseDetailView detailView = (DatabaseDetailView) getSite().getPage()
                        .findView(SqlexplorerViewConstants.SQLEXPLORER_DBDETAIL);
                synchronizeDetailView(detailView);
            }

        });

        // Set up a gradient background for the selected tab
        Display display = getSite().getShell().getDisplay();
        _tabFolder.setSelectionBackground(
                new Color[] { display.getSystemColor(SWT.COLOR_WHITE), new Color(null, 211, 225, 250),
                        new Color(null, 175, 201, 246), IConstants.TAB_BORDER_COLOR },
                new int[] { 25, 50, 75 }, true);

        // Add a listener to handle the close button on each tab
        _tabFolder.addCTabFolder2Listener(new CTabFolder2Adapter() {

            @Override
            public void close(CTabFolderEvent event) {
                CTabItem tabItem = (CTabItem) event.item;
                TabData tabData = (TabData) tabItem.getData();
                _allSessions.remove(tabData.session);
                event.doit = true;
            }
        });

        _parent.layout();
        _parent.redraw();

    }

    // create tab
    final CTabItem tabItem = new CTabItem(_tabFolder, SWT.NULL);
    TabData tabData = new TabData();
    tabItem.setData(tabData);
    tabData.session = session;

    // set tab text
    String labelText = session.getUser().getDescription();
    tabItem.setText(labelText);

    // create composite for our outline
    Composite composite = new Composite(_tabFolder, SWT.NULL);
    composite.setLayout(new FillLayout());
    tabItem.setControl(composite);

    // create outline
    final TreeViewer treeViewer = new TreeViewer(composite,
            SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI | SWT.BORDER);
    tabData.treeViewer = treeViewer;

    // add drag support
    // TODO improve drag support options
    Transfer[] transfers = new Transfer[] { TableNodeTransfer.getInstance() };
    treeViewer.addDragSupport(DND.DROP_COPY, transfers, new DragSourceListener() {

        public void dragFinished(DragSourceEvent event) {

            System.out.println("$drag finished");
            TableNodeTransfer.getInstance().setSelection(null);
        }

        public void dragSetData(DragSourceEvent event) {

            Object sel = ((IStructuredSelection) treeViewer.getSelection()).getFirstElement();
            event.data = sel;
        }

        public void dragStart(DragSourceEvent event) {

            event.doit = !treeViewer.getSelection().isEmpty();
            if (event.doit) {
                Object sel = ((IStructuredSelection) treeViewer.getSelection()).getFirstElement();
                if (!(sel instanceof TableNode)) {
                    event.doit = false;
                } else {
                    TableNode tn = (TableNode) sel;
                    TableNodeTransfer.getInstance().setSelection(tn);
                    if (!tn.isTable()) {
                        event.doit = false;
                    }
                }
            }
        }
    });

    // use hash lookup to improve performance
    treeViewer.setUseHashlookup(true);

    // add content and label provider
    treeViewer.setContentProvider(new DBTreeContentProvider());
    treeViewer.setLabelProvider(new DBTreeLabelProvider());

    // set input session
    treeViewer.setInput(rootNode);

    // add selection change listener, so we can update detail view as
    // required.
    treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        public void selectionChanged(SelectionChangedEvent ev) {

            // set the selected node in the detail view.
            DatabaseDetailView detailView = (DatabaseDetailView) getSite().getPage()
                    .findView(SqlexplorerViewConstants.SQLEXPLORER_DBDETAIL);
            synchronizeDetailView(detailView);
        }
    });

    // bring detail to front on doubleclick of node
    treeViewer.addDoubleClickListener(new IDoubleClickListener() {

        public void doubleClick(DoubleClickEvent event) {

            try {
                // find view
                DatabaseDetailView detailView = (DatabaseDetailView) getSite().getPage()
                        .findView(SqlexplorerViewConstants.SQLEXPLORER_DBDETAIL);
                if (detailView == null) {
                    getSite().getPage().showView(SqlexplorerViewConstants.SQLEXPLORER_DBDETAIL);
                }
                getSite().getPage().bringToTop(detailView);
                synchronizeDetailView(detailView);
            } catch (Exception e) {
                // fail silent
            }
        }

    });

    // add expand/collapse listener
    treeViewer.addTreeListener(new ITreeViewerListener() {

        public void treeCollapsed(TreeExpansionEvent event) {

            // refresh the node to change image
            INode node = (INode) event.getElement();
            node.setExpanded(false);
            TreeViewer viewer = (TreeViewer) event.getSource();
            viewer.update(node, null);
        }

        public void treeExpanded(TreeExpansionEvent event) {

            // refresh the node to change image
            INode node = (INode) event.getElement();
            node.setExpanded(true);
            TreeViewer viewer = (TreeViewer) event.getSource();
            viewer.update(node, null);
        }

    });

    // set new tab as the active one
    _tabFolder.setSelection(_tabFolder.getItemCount() - 1);

    // update detail view
    DatabaseDetailView detailView = (DatabaseDetailView) getSite().getPage()
            .findView(SqlexplorerViewConstants.SQLEXPLORER_DBDETAIL);

    if (detailView != null) {

        // synchronze detail view with new session
        synchronizeDetailView(detailView);

        // bring detail to top of the view stack
        getSite().getPage().bringToTop(detailView);
    }

    // refresh view
    composite.layout();
    _tabFolder.layout();
    _tabFolder.redraw();

    // bring this view to top of the view stack, above detail if needed..
    getSite().getPage().bringToTop(this);

    // add context menu
    final DBTreeActionGroup actionGroup = new DBTreeActionGroup(treeViewer);
    MenuManager menuManager = new MenuManager("DBTreeContextMenu");
    menuManager.setRemoveAllWhenShown(true);
    Menu contextMenu = menuManager.createContextMenu(treeViewer.getTree());
    treeViewer.getTree().setMenu(contextMenu);

    menuManager.addMenuListener(new IMenuListener() {

        public void menuAboutToShow(IMenuManager manager) {

            actionGroup.fillContextMenu(manager);
        }
    });

    // if (sessionSelectionMap.containsKey(tabData.session)) {
    // tabData.treeViewer.setSelection(sessionSelectionMap.get(tabData.session));
    // sessionSelectionMap.remove(tabData.session);
    // _allSessions.remove(tabData.session);
    // }
}

From source file:net.sourceforge.tagsea.core.ui.internal.actions.TagRenameAction.java

License:Open Source License

public TagRenameAction(TreeViewer treeViewer, ICellModifier modifier, String[] columnProperties) {
    this.tree = treeViewer.getTree();
    this.modifier = modifier;
    this.columnProperties = columnProperties;
    this.editor = new TextCellEditor(tree, SWT.BORDER);
    this.editor.getControl().addKeyListener(new KeyListener() {
        public void keyPressed(KeyEvent e) {

        }//from  ww w. java 2 s.c om

        public void keyReleased(KeyEvent e) {
            if (e.character == SWT.ESC) {
                TagRenameAction.this.editor.deactivate();
                TagRenameAction.this.treeEditor.setEditor(null);
            }
        }
    });
    this.treeEditor = new TreeEditor(tree);
    this.editor.addListener(new CellListener());
    tree.addDisposeListener(new DisposeListener() {
        public void widgetDisposed(DisposeEvent e) {
            treeEditor.dispose();
            editor.dispose();
        }
    });
}

From source file:net.sourceforge.tagsea.resources.synchronize.ui.WaypointSynchronizePage.java

License:Open Source License

@Override
public void createControl(Composite parent) {
    Composite page = new Composite(parent, SWT.NONE);
    page.setLayout(new GridLayout());
    page.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    TreeViewer viewer = new TreeViewer(page, SWT.SINGLE);
    viewer.setContentProvider(new ProjectWaypointContentProvider());
    viewer.setLabelProvider(new WaypointSynchronizeLabelProvider());
    viewer.setInput(ResourcesPlugin.getWorkspace().getRoot());
    viewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    viewer.getTree().addMouseListener(new MouseAdapter() {
        @Override/*ww w.  jav  a 2 s  . c o  m*/
        public void mouseDoubleClick(MouseEvent e) {
            openEditor();
        }
    });
    viewer.getTree().addSelectionListener(new SelectionAdapter() {
        /* (non-Javadoc)
         * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
         */
        @Override
        public void widgetSelected(SelectionEvent e) {
            refreshEditor();
        }
    });
    this.control = page;
    this.viewer = viewer;
    TagSEAPlugin.addWaypointChangeListener(this);
    WaypointSynchronizerHelp.INSTANCE.addSynchronizeListener(this);
}

From source file:net.sourceforge.texlipse.outline.TexOutlinePage.java

License:Open Source License

/**
 * Updates the outline with new content. Called by TexDocumentModel
 * through the editor. Saves the visible state of the outline,
 * sets the new content and restores the state.
 *
 * @param input the new outline input//from   w w w  . j a v a2 s . c  o  m
 */
public void update(TexOutlineInput input) {
    this.input = input;

    TreeViewer viewer = getTreeViewer();
    if (viewer != null) {

        Control control = viewer.getControl();
        if (control != null && !control.isDisposed()) {
            control.setRedraw(false);

            //First try smart update
            boolean succUpdate = ((TexContentProvider) viewer.getContentProvider()).updateElements(viewer,
                    input.getRootNodes());
            if (!succUpdate) {
                viewer.getTree().deselectAll();
                // save viewer state
                Object[] expandedElements = viewer.getExpandedElements();
                // set new input
                viewer.setInput(input.getRootNodes());
                /*viewer.getContentProvider().inputChanged(viewer, null, input.getRootNodes());
                viewer.refresh(true);*/
                // restore viewer state
                viewer.setExpandedElements(expandedElements);
            }
            control.setRedraw(true);

            // disable the refresh button, enable context stuff
            outlineActions.get(ACTION_UPDATE).setEnabled(false);
            outlineActions.get(ACTION_COPY).setEnabled(true);
            outlineActions.get(ACTION_CUT).setEnabled(true);
            outlineActions.get(ACTION_PASTE).setEnabled(true);
            outlineActions.get(ACTION_DELETE).setEnabled(true);
        }
    }
}

From source file:net.sourceforge.veditor.editor.HdlContentOutlinePage.java

License:Open Source License

public void createControl(Composite parent) {
    super.createControl(parent);

    TreeViewer viewer = getTreeViewer();
    viewer.setContentProvider(new HdlContentOutlineProvider());
    viewer.setLabelProvider(editor.getOutlineLabelProvider());
    viewer.addSelectionChangedListener(this);
    viewer.addDoubleClickListener(this);
    viewer.addFilter(new SignalFilter());
    viewer.addFilter(new PortFilter());
    if (enableSort) {
        viewer.setSorter(new Sorter());
    }/* w w w. j  av a  2  s  .c om*/
    createToolbar();
    createContextMenu(viewer.getTree());

    IDocument doc = editor.getDocument();
    if (doc != null) {
        viewer.setInput(doc);
    }

}