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

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

Introduction

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

Prototype

public LabelProvider() 

Source Link

Document

Creates a new label provider.

Usage

From source file:edu.harvard.i2b2.eclipse.plugins.ontology.views.edit.ModifierComposite.java

License:Open Source License

private void createTreeViewer() {
    MenuManager modItemPopupMenu = createModItemPopupMenu();
    modItemMenu = modItemPopupMenu.createContextMenu(tree);
    modItemMenu.setVisible(false);//from   ww w  .j  av  a2 s  . c o m

    MenuManager allPopupMenu = createModAllPopupMenu();
    modAllMenu = allPopupMenu.createContextMenu(tree);
    modAllMenu.setVisible(false);

    MenuManager modOnlyPopupMenu = createModOnlyPopupMenu();
    modOnlyMenu = modOnlyPopupMenu.createContextMenu(tree);
    modOnlyMenu.setVisible(false);

    IAction lockedAction = new LockedAction();
    MenuManager lockedPopupMenu = new MenuManager();
    lockedPopupMenu.add(lockedAction);
    lockedMenu = lockedPopupMenu.createContextMenu(tree);
    lockedMenu.setVisible(false);

    //     table = new Table(composite, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
    this.viewer = new TreeViewer(tree);

    this.viewer.setLabelProvider(new LabelProvider() {
        @Override

        public String getText(Object element) {
            // Set the tooltip data
            //  (cant be done in the lookup thread)
            //   maps TreeViewer node to Tree item and sets item.data
            TreeItem item = (TreeItem) (viewer.testFindItem(element));
            Color defaultColor = Display.getCurrent().getSystemColor(SWT.COLOR_BLACK);
            item.setForeground(defaultColor);
            String tooltip = ((TreeNode) element).getData().getTooltip();

            if (((TreeNode) element).getData().getModifier() != null) {
                tooltip = ((TreeNode) element).getData().getModifier().getTooltip();
                //                  if(System.getProperty("shortToolTip").equals("true"))
                //                     tooltip = ((TreeNode)element).getData().getModifier().getName();
            }
            if ((tooltip == null) || (tooltip.equals(""))) {
                tooltip = ((TreeNode) element).toString();
            }

            if (!(tooltip.contains("\n"))) {
                String formattedTooltip = "";
                String[] tooltips = tooltip.split(" ");
                int length = tooltips.length;

                for (int i = 0; i < length; i++) {
                    formattedTooltip += " " + tooltips[i];
                    if (i > 1 && i % 10 == 0)
                        formattedTooltip += "\n";
                }
                tooltip = formattedTooltip;

            }

            tooltip = " " + tooltip + " ";

            /*              if(System.getProperty("showConceptCodes").equals("true")){
                 if(    ((TreeNode)element).getData().getModifier() != null ){
            if ((((TreeNode)element).getData().getModifier().getBasecode() != null) && (!((TreeNode)element).getData().getModifier().getBasecode().equals("null")) ) {
               tooltip = tooltip + "(" + ((TreeNode)element).getData().getBasecode() + ")";
            }
                 }
                 else if ((((TreeNode)element).getData().getBasecode() != null) && (!((TreeNode)element).getData().getBasecode().equals("null")) ) {
                   tooltip = tooltip + "(" + ((TreeNode)element).getData().getBasecode() + ")";
                }
              }
             */
            item.setData("TOOLTIP", tooltip);

            // if element is Inactive; print label in gray
            if (((TreeNode) element).getData().getModifier() != null) {

                if (((TreeNode) element).getData().getModifier().getVisualattributes().substring(1, 2)
                        .equals("I")) {
                    Color color = Display.getCurrent().getSystemColor(SWT.COLOR_DARK_GRAY);
                    item.setForeground(color);
                }

                //            if element is Hidden; print label in red
                else if (((TreeNode) element).getData().getModifier().getVisualattributes().substring(1, 2)
                        .equals("H")) {
                    Color color = Display.getCurrent().getSystemColor(SWT.COLOR_RED);
                    item.setForeground(color);
                }

                //           if element is undefined; print label in red
                else if (((TreeNode) element).getData().getModifier().getVisualattributes().equals("C-ERROR")) {
                    Color color = Display.getCurrent().getSystemColor(SWT.COLOR_RED);
                    item.setForeground(color);
                }

                //           if element is synonym; print label in dark blue
                if (((TreeNode) element).getData().getModifier().getSynonymCd() != null) {
                    if (((TreeNode) element).getData().getModifier().getSynonymCd().equals("Y")) {
                        Color color = Display.getCurrent().getSystemColor(SWT.COLOR_DARK_BLUE);
                        item.setForeground(color);
                    }
                }
                return ((TreeNode) element).getData().getModifier().getName();
            }

            else {
                if (((TreeNode) element).getData().getVisualattributes().substring(1, 2).equals("I")) {
                    Color color = Display.getCurrent().getSystemColor(SWT.COLOR_DARK_GRAY);
                    item.setForeground(color);
                }
                //    if element is Hidden; print label in red
                else if (((TreeNode) element).getData().getVisualattributes().substring(1, 2).equals("H")) {
                    Color color = Display.getCurrent().getSystemColor(SWT.COLOR_RED);
                    item.setForeground(color);
                }

                //                   if element is undefined; print label in red
                else if (((TreeNode) element).getData().getVisualattributes().equals("C-ERROR")) {
                    Color color = Display.getCurrent().getSystemColor(SWT.COLOR_RED);
                    item.setForeground(color);
                }
            }

            //           if element is synonym; print label in dark blue
            if (((TreeNode) element).getData().getSynonymCd() != null) {
                if (((TreeNode) element).getData().getSynonymCd().equals("Y")) {
                    Color color = Display.getCurrent().getSystemColor(SWT.COLOR_DARK_BLUE);
                    item.setForeground(color);
                }
            }
            return ((TreeNode) element).toString();

            //            return ((TreeNode)element).toString();
        }

        @Override
        public Image getImage(Object element) {
            return imageRegistry.get(((TreeNode) element).getIconKey());
        }
    });

    this.viewer.setContentProvider(new ITreeContentProvider() {
        public Object[] getChildren(Object parentElement) {
            return ((TreeNode) parentElement).getChildren().toArray();
        }

        public Object getParent(Object element) {
            return ((TreeNode) element).getParent();
        }

        public boolean hasChildren(Object element) {
            return ((TreeNode) element).getChildren().size() > 0;
        }

        public Object[] getElements(Object inputElement) {
            return ((TreeNode) inputElement).getChildren().toArray();
        }

        public void dispose() {
        }

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

    rootNode = new TreeNode(0, "Standard Modifier Items", "Standard Modifier Items", "CA");
    this.viewer.setInput(rootNode);

    this.viewer.addTreeListener(new ITreeViewerListener() {
        public void treeExpanded(TreeExpansionEvent event) {
            final TreeNode node = (TreeNode) event.getElement();
            node.setOpen(true);

            // check to see if child is a placeholder ('working...')
            //   if so, make Web Service call to update children of node
            //   leaves that are placeholders have open==true
            if (node.getChildren().size() == 1) {
                TreeNode child = (TreeNode) (node.getChildren().get(0));
                if ((child.getData().getModifier().getVisualattributes().startsWith("R")) && child.isOpen()) {
                    // child is a placeholder, so remove from list 
                    //   update list with real children  
                    node.getModXMLData(viewer, null).start();
                }
                //            }
            }

            viewer.refresh();
            viewer.expandToLevel(node, 1);
        }

        public void treeCollapsed(TreeExpansionEvent event) {
            final TreeNode node = (TreeNode) event.getElement();
            node.setOpen(false);
            viewer.collapseToLevel(node, 1);
            viewer.refresh();
        }
    });

    this.viewer.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent event) {
            TreeNode node = null;
            // if the selection is empty clear the label
            if (event.getSelection().isEmpty()) {
                setCurrentNode(null);
                return;
            }
            if (event.getSelection() instanceof IStructuredSelection) {
                IStructuredSelection selection = (IStructuredSelection) event.getSelection();
                node = (TreeNode) selection.getFirstElement();
                setCurrentNode(node);
            }

            // Case where we are expanding the node
            boolean expand = false;
            String visualAttribute = null;
            if (node.getData().getModifier() == null)
                visualAttribute = node.getData().getVisualattributes();
            else
                visualAttribute = node.getData().getModifier().getVisualattributes();
            if ((visualAttribute.startsWith("F")) || (visualAttribute.startsWith("D"))
                    || (visualAttribute.startsWith("O")))
                if (node.isOpen()) {
                    // collapsing node
                    node.setOpen(false);
                    viewer.collapseToLevel(node, 1);
                    viewer.refresh();
                } else // expanding node
                {
                    node.setOpen(true);
                    viewer.expandToLevel(node, 1);
                    viewer.refresh(node);

                    // check to see if this node's child is a placeholder ('working...')
                    //   if so, make Web Service call to update children of node

                    if (node.getChildren().size() == 1) {
                        TreeNode child = (TreeNode) (node.getChildren().get(0));
                        if ((child.getData().getModifier().getVisualattributes().startsWith("R"))
                                && (child.isOpen())) {
                            // child is a placeholder, so remove from list 
                            //   update list with real children  
                            node.getModXMLData(viewer, null).start();
                        }
                    }
                    viewer.refresh();
                }
        }

    });

    //    Implement a "fake" tooltip
    final Listener labelListener = new Listener() {
        public void handleEvent(Event event) {
            Label label = (Label) event.widget;
            Shell shell = label.getShell();
            switch (event.type) {
            case SWT.MouseDown:
                Event e = new Event();
                e.item = (TreeItem) label.getData("_TREEITEM");
                //cdh@20060314 have to fix this for multi select in treeview

                // Assuming table is single select, set the selection as if
                // the mouse down event went through to the table
                (viewer.getTree()).setSelection(new TreeItem[] { (TreeItem) e.item });
                (viewer.getTree()).notifyListeners(SWT.Selection, e);
                //table.setSelection (new TableItem [] {(TableItem) e.item});
                //table.notifyListeners (SWT.Selection, e);
                // fall through
            case SWT.MouseExit:
                shell.dispose();
                break;
            }
        }
    };

    Listener viewerListener = new Listener() {
        Shell tip = null;
        Label label = null;

        public void handleEvent(Event event) {
            switch (event.type) {
            case SWT.Dispose:
            case SWT.KeyDown:
            case SWT.MouseMove:
            case SWT.MouseExit: {
                if (tip == null)
                    break;
                tip.dispose();
                tip = null;
                label = null;
                break;
            }
            case SWT.MouseDown:
                if (event.button == 3) // right click
                {
                    IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
                    if (selection.size() != 1)
                        return;

                    TreeNode node = (TreeNode) selection.getFirstElement();
                    setCurrentNode(node);
                    if (node.getData().getModifier() == null) {
                        if (node.getData().getVisualattributes().substring(2).equals("E")) {
                            lockedMenu.setVisible(false);
                            modAllMenu.setVisible(false);
                            modItemMenu.setVisible(false);
                            modOnlyMenu.setVisible(true);
                        }
                    } else if (node.getData().getModifier().getVisualattributes().substring(2).equals("E")) {

                        if ((node.getData().getModifier().getVisualattributes().startsWith("O"))
                                || (node.getData().getModifier().getVisualattributes().startsWith("D"))) {
                            lockedMenu.setVisible(false);
                            modAllMenu.setVisible(true);
                            modItemMenu.setVisible(false);
                            modOnlyMenu.setVisible(false);
                        } else if ((node.getData().getModifier().getVisualattributes().startsWith("R"))) {
                            modAllMenu.setVisible(false);
                            modItemMenu.setVisible(true);
                            lockedMenu.setVisible(false);
                            modOnlyMenu.setVisible(false);
                        }

                        else {
                            lockedMenu.setVisible(false);
                            modAllMenu.setVisible(false);
                            modItemMenu.setVisible(false);
                            modOnlyMenu.setVisible(false);
                        }

                    } else {
                        modAllMenu.setVisible(false);
                        modItemMenu.setVisible(false);
                        lockedMenu.setVisible(true);
                        modOnlyMenu.setVisible(false);
                    }
                }

            case SWT.MouseHover: {
                TreeItem item = (viewer.getTree()).getItem(new Point(event.x, event.y));
                if (item != null) {
                    if (tip != null && !tip.isDisposed())
                        tip.dispose();
                    tip = new Shell(Display.getCurrent().getActiveShell(), SWT.ON_TOP | SWT.TOOL);
                    tip.setLayout(new FillLayout());
                    label = new Label(tip, SWT.NONE);
                    label.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_INFO_FOREGROUND));
                    label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_INFO_BACKGROUND));
                    label.setData("_TREEITEM", item);
                    label.setText((String) item.getData("TOOLTIP"));
                    //                  label.setText("Tooltip test");
                    label.addListener(SWT.MouseExit, labelListener);
                    label.addListener(SWT.MouseDown, labelListener);
                    Point size = tip.computeSize(SWT.DEFAULT, SWT.DEFAULT);
                    Rectangle rect = item.getBounds(0);
                    Point pt = viewer.getTree().toDisplay(event.x, event.y);
                    tip.setBounds(pt.x + 10, pt.y + 20, size.x, size.y);
                    tip.setVisible(true);
                }
            }
            }
        }
    };
    viewer.getTree().addListener(SWT.MouseDown, viewerListener);
    viewer.getTree().addListener(SWT.Dispose, viewerListener);
    viewer.getTree().addListener(SWT.KeyDown, viewerListener);
    viewer.getTree().addListener(SWT.MouseMove, viewerListener);
    viewer.getTree().addListener(SWT.MouseHover, viewerListener);
    viewer.getTree().addListener(SWT.MouseExit, viewerListener);

    MetadataRecord.getInstance().registerModifierViewer(viewer);
}

From source file:edu.harvard.i2b2.eclipse.plugins.ontology.views.edit.NodeBrowser.java

License:Open Source License

private void createTreeViewer(Composite parent, int style, int inputFlag) {
    this.browser = this;
    Tree tree = new Tree(parent, style);

    GridData gridData = new GridData(GridData.FILL_BOTH);
    //      gridData.verticalSpan = 50;
    gridData.horizontalSpan = 2;//from w w  w. ja v  a  2 s .  c  o  m
    gridData.widthHint = 150;
    gridData.grabExcessHorizontalSpace = true;
    gridData.grabExcessVerticalSpace = true;
    tree.setLayoutData(gridData);

    // create popup menus

    MenuManager modItemPopupMenu = createModItemPopupMenu();
    modItemMenu = modItemPopupMenu.createContextMenu(tree);
    modItemMenu.setVisible(false);

    MenuManager itemPopupMenu = createItemPopupMenu();
    itemMenu = itemPopupMenu.createContextMenu(tree);
    itemMenu.setVisible(false);

    MenuManager rootPopupMenu = createRootPopupMenu();
    rootMenu = rootPopupMenu.createContextMenu(tree);
    rootMenu.setVisible(false);

    MenuManager allPopupMenu = createAllPopupMenu();
    allMenu = allPopupMenu.createContextMenu(tree);
    allMenu.setVisible(false);

    IAction lockedAction = new LockedAction();
    MenuManager lockedPopupMenu = new MenuManager();
    lockedPopupMenu.add(lockedAction);
    lockedMenu = lockedPopupMenu.createContextMenu(tree);
    lockedMenu.setVisible(false);

    MenuManager viewPopupMenu = createViewPopupMenu();
    viewMenu = viewPopupMenu.createContextMenu(tree);
    viewMenu.setVisible(false);

    this.viewer = new TreeViewer(tree);
    this.viewer.setLabelProvider(new LabelProvider() {
        @Override

        public String getText(Object element) {
            // Set the tooltip data
            //  (cant be done in the lookup thread)
            //   maps TreeViewer node to Tree item and sets item.data
            TreeItem item = (TreeItem) (viewer.testFindItem(element));
            Color defaultColor = Display.getCurrent().getSystemColor(SWT.COLOR_BLACK);
            item.setForeground(defaultColor);

            String tooltip = ((TreeNode) element).getData().getTooltip();

            if ((tooltip == null) || (tooltip.equals(""))) {
                tooltip = ((TreeNode) element).toString();
            }

            else {
                if (tooltip.contains("\n"))
                    ;
                else {
                    String formattedTooltip = "";
                    String[] tooltips = tooltip.split(" ");
                    int length = tooltips.length;

                    for (int i = 0; i < length; i++) {
                        formattedTooltip += " " + tooltips[i];
                        if (i > 1 && i % 10 == 0)
                            formattedTooltip += "\n";
                    }
                    tooltip = formattedTooltip;

                }
            }

            tooltip = " " + tooltip + " ";

            item.setData("TOOLTIP", tooltip);

            // if element is Inactive; print label in gray
            if (((TreeNode) element).getData().getVisualattributes().substring(1, 2).equals("I")) {
                Color color = Display.getCurrent().getSystemColor(SWT.COLOR_DARK_GRAY);
                item.setForeground(color);
            }

            //            if element is Hidden; print label in red
            else if (((TreeNode) element).getData().getVisualattributes().substring(1, 2).equals("H")) {
                Color color = Display.getCurrent().getSystemColor(SWT.COLOR_RED);
                item.setForeground(color);
            }

            //           if element is undefined; print label in red
            else if (((TreeNode) element).getData().getVisualattributes().equals("C-ERROR")) {
                Color color = Display.getCurrent().getSystemColor(SWT.COLOR_RED);
                item.setForeground(color);
            }

            //           if element is synonym; print label in dark blue
            if (((TreeNode) element).getData().getSynonymCd() != null) {
                if (((TreeNode) element).getData().getSynonymCd().equals("Y")) {
                    Color color = Display.getCurrent().getSystemColor(SWT.COLOR_DARK_BLUE);
                    item.setForeground(color);
                }
            }
            return ((TreeNode) element).toString();
        }

        @Override
        public Image getImage(Object element) {
            return imageRegistry.get(((TreeNode) element).getIconKey());
        }
    });
    this.viewer.setContentProvider(new ITreeContentProvider() {
        public Object[] getChildren(Object parentElement) {
            return ((TreeNode) parentElement).getChildren().toArray();
        }

        public Object getParent(Object element) {
            return ((TreeNode) element).getParent();
        }

        public boolean hasChildren(Object element) {
            return ((TreeNode) element).getChildren().size() > 0;
        }

        public Object[] getElements(Object inputElement) {
            return ((TreeNode) inputElement).getChildren().toArray();
        }

        public void dispose() {
        }

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

    this.viewer.setInput(populateRootNode());

    String status = System.getProperty("errorMessage");
    if (status != null) {
        TreeNode placeholder = new TreeNode(1, "placeholder", status, "C-ERROR");
        browser.rootNode.addChild(placeholder);
        browser.refresh();

    }

    this.viewer.addTreeListener(new ITreeViewerListener() {
        public void treeExpanded(TreeExpansionEvent event) {
            final TreeNode node = (TreeNode) event.getElement();
            node.setOpen(true);

            // check to see if child is a placeholder ('working...')
            //   if so, make Web Service call to update children of node
            //   leaves that are placeholders have open==true
            if (node.getChildren().size() == 1) {
                TreeNode child = (TreeNode) (node.getChildren().get(0));
                if ((child.getData().getVisualattributes().startsWith("L")) && child.isOpen()) {
                    // child is a placeholder, so remove from list 
                    //   update list with real children  
                    node.getXMLData(viewer, browser).start();
                }
                //            }
            }

            viewer.refresh();
            viewer.expandToLevel(node, 1);
        }

        public void treeCollapsed(TreeExpansionEvent event) {
            final TreeNode node = (TreeNode) event.getElement();
            node.setOpen(false);
            viewer.collapseToLevel(node, 1);
            viewer.refresh();
        }
    });

    this.viewer.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent event) {
            TreeNode node = null;
            // if the selection is empty clear the label
            if (event.getSelection().isEmpty()) {
                setCurrentNode(null);
                return;
            }
            if (event.getSelection() instanceof IStructuredSelection) {
                IStructuredSelection selection = (IStructuredSelection) event.getSelection();
                node = (TreeNode) selection.getFirstElement();
                setCurrentNode(node);
            }

            // Case where we are expanding the node
            boolean expand = false;
            String visualAttribute = node.getData().getVisualattributes();
            if ((visualAttribute.startsWith("F")) || (visualAttribute.startsWith("C")))
                if (node.isOpen()) {
                    // collapsing node
                    node.setOpen(false);
                    viewer.collapseToLevel(node, 1);
                    viewer.refresh();
                } else // expanding node
                {
                    node.setOpen(true);
                    viewer.expandToLevel(node, 1);
                    viewer.refresh(node);

                    // check to see if this node's child is a placeholder ('working...')
                    //   if so, make Web Service call to update children of node

                    if (node.getChildren().size() == 1) {
                        TreeNode child = (TreeNode) (node.getChildren().get(0));
                        if ((child.getData().getVisualattributes().startsWith("L")) && (child.isOpen())) {
                            // child is a placeholder, so remove from list 
                            //   update list with real children  
                            node.getXMLData(viewer, browser).start();
                        }
                    }
                    viewer.refresh();
                }
        }

    });
    this.viewer.addSelectionChangedListener(new ISelectionChangedListener() {

        public void selectionChanged(SelectionChangedEvent event) {

            TreeNode node = null;
            // if the selection is empty clear the label
            if (event.getSelection().isEmpty()) {
                //          setCurrentNode(null);
                return;
            }
            if (event.getSelection() instanceof IStructuredSelection) {
                IStructuredSelection selection = (IStructuredSelection) event.getSelection();
                node = (TreeNode) selection.getFirstElement();
                if (!Boolean.parseBoolean(System.getProperty("OntDisableModifiers"))) {
                    ModifierComposite.getInstance().enableComposite(node);
                    if (node.getData().getVisualattributes().endsWith("E"))
                        ModifierComposite.getInstance().addModifiers(node.getData());
                    else
                        ModifierComposite.getInstance().clearTree();
                } else {
                    ModifierComposite.getInstance().disableComposite();
                }
                setCurrentNode(node);
            }
        }

    });
    //    Implement a "fake" tooltip
    final Listener labelListener = new Listener() {
        public void handleEvent(Event event) {
            Label label = (Label) event.widget;
            Shell shell = label.getShell();
            switch (event.type) {
            case SWT.MouseDown:
                Event e = new Event();
                e.item = (TreeItem) label.getData("_TREEITEM");
                //cdh@20060314 have to fix this for multi select in treeview

                // Assuming table is single select, set the selection as if
                // the mouse down event went through to the table
                (viewer.getTree()).setSelection(new TreeItem[] { (TreeItem) e.item });
                (viewer.getTree()).notifyListeners(SWT.Selection, e);
                //table.setSelection (new TableItem [] {(TableItem) e.item});
                //table.notifyListeners (SWT.Selection, e);
                // fall through
            case SWT.MouseExit:
                shell.dispose();
                break;
            }
        }
    };

    Listener viewerListener = new Listener() {
        Shell tip = null;
        Label label = null;

        public void handleEvent(Event event) {
            switch (event.type) {
            case SWT.Dispose:
            case SWT.KeyDown:
            case SWT.MouseMove:
            case SWT.MouseExit: {
                if (tip == null)
                    break;
                tip.dispose();
                tip = null;
                label = null;
                break;
            }
            case SWT.MouseDown:
                if (event.button == 3) // right click
                {
                    IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
                    if (selection.size() != 1)
                        return;

                    TreeNode node = (TreeNode) selection.getFirstElement();
                    if (node.getData().getVisualattributes().substring(2).equals("E")) {
                        if (node.getData().getLevel() == 0) {
                            lockedMenu.setVisible(false);
                            itemMenu.setVisible(false);
                            allMenu.setVisible(false);
                            rootMenu.setVisible(true);
                            modItemMenu.setVisible(false);
                            viewMenu.setVisible(false);

                        } else if ((node.getData().getVisualattributes().startsWith("F"))
                                || (node.getData().getVisualattributes().startsWith("C"))) {
                            lockedMenu.setVisible(false);
                            rootMenu.setVisible(false);
                            itemMenu.setVisible(false);
                            allMenu.setVisible(true);
                            modItemMenu.setVisible(false);
                            viewMenu.setVisible(false);

                        } else if ((node.getData().getVisualattributes().startsWith("L"))
                                || (node.getData().getVisualattributes().startsWith("O"))
                                || (node.getData().getVisualattributes().startsWith("D"))) {
                            lockedMenu.setVisible(false);
                            rootMenu.setVisible(false);
                            allMenu.setVisible(false);
                            itemMenu.setVisible(true);
                            modItemMenu.setVisible(false);
                            viewMenu.setVisible(false);

                        } else if ((node.getData().getVisualattributes().startsWith("R"))) {
                            rootMenu.setVisible(false);
                            allMenu.setVisible(false);
                            itemMenu.setVisible(false);
                            modItemMenu.setVisible(true);
                            lockedMenu.setVisible(false);
                            viewMenu.setVisible(false);
                        }

                        else {
                            lockedMenu.setVisible(false);
                            rootMenu.setVisible(false);
                            allMenu.setVisible(false);
                            itemMenu.setVisible(false);
                            modItemMenu.setVisible(false);
                            viewMenu.setVisible(false);
                        }

                    } else if ((System.getProperty("OntEdit_ViewOnly") != null)
                            && (System.getProperty("OntEdit_ViewOnly").equals("true"))) {

                        //         else if(UserInfoBean.getInstance().getCellDataParam("ont", "OntEditView") != null){
                        //            if(UserInfoBean.getInstance().getCellDataParam("ont", "OntEditView").equals("true"));
                        viewMenu.setVisible(true);
                        lockedMenu.setVisible(false);
                        rootMenu.setVisible(false);
                        allMenu.setVisible(false);
                        itemMenu.setVisible(false);
                        modItemMenu.setVisible(false);
                    }

                    else {
                        rootMenu.setVisible(false);
                        allMenu.setVisible(false);
                        itemMenu.setVisible(false);
                        modItemMenu.setVisible(false);
                        viewMenu.setVisible(false);
                        lockedMenu.setVisible(true);
                    }
                }

            case SWT.MouseHover: {
                TreeItem item = (viewer.getTree()).getItem(new Point(event.x, event.y));
                if (item != null) {
                    if (tip != null && !tip.isDisposed())
                        tip.dispose();
                    tip = new Shell(Display.getCurrent().getActiveShell(), SWT.ON_TOP | SWT.TOOL);
                    tip.setLayout(new FillLayout());
                    label = new Label(tip, SWT.NONE);
                    label.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_INFO_FOREGROUND));
                    label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_INFO_BACKGROUND));
                    label.setData("_TREEITEM", item);
                    label.setText((String) item.getData("TOOLTIP"));
                    //                  label.setText("Tooltip test");
                    label.addListener(SWT.MouseExit, labelListener);
                    label.addListener(SWT.MouseDown, labelListener);
                    Point size = tip.computeSize(SWT.DEFAULT, SWT.DEFAULT);
                    Rectangle rect = item.getBounds(0);
                    Point pt = viewer.getTree().toDisplay(event.x, event.y);
                    tip.setBounds(pt.x + 10, pt.y + 20, size.x, size.y);
                    tip.setVisible(true);
                }
            }
            }
        }
    };
    viewer.getTree().addListener(SWT.MouseDown, viewerListener);
    viewer.getTree().addListener(SWT.Dispose, viewerListener);
    viewer.getTree().addListener(SWT.KeyDown, viewerListener);
    viewer.getTree().addListener(SWT.MouseMove, viewerListener);
    viewer.getTree().addListener(SWT.MouseHover, viewerListener);
    viewer.getTree().addListener(SWT.MouseExit, viewerListener);
}

From source file:edu.harvard.i2b2.eclipse.plugins.ontology.views.find.ModifierComposite.java

License:Open Source License

private void createTreeViewer() {

    //     table = new Table(composite, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
    this.viewer = new TreeViewer(tree);

    this.viewer.setLabelProvider(new LabelProvider() {
        @Override//w ww . j  a  v  a  2 s  .c  om

        public String getText(Object element) {
            // Set the tooltip data
            //  (cant be done in the lookup thread)
            //   maps TreeViewer node to Tree item and sets item.data
            TreeItem item = (TreeItem) (viewer.testFindItem(element));
            Color defaultColor = Display.getCurrent().getSystemColor(SWT.COLOR_BLACK);
            item.setForeground(defaultColor);
            String tooltip = ((TreeNode) element).getData().getTooltip();

            if (((TreeNode) element).getData().getModifier() != null) {
                tooltip = ((TreeNode) element).getData().getModifier().getTooltip();
                //                  if(System.getProperty("shortToolTip").equals("true"))
                //                     tooltip = ((TreeNode)element).getData().getModifier().getName();
            }
            if ((tooltip == null) || (tooltip.equals(""))) {
                tooltip = ((TreeNode) element).toString();
            }
            tooltip = " " + tooltip + " ";

            /*              if(System.getProperty("showConceptCodes").equals("true")){
                 if(    ((TreeNode)element).getData().getModifier() != null ){
            if ((((TreeNode)element).getData().getModifier().getBasecode() != null) && (!((TreeNode)element).getData().getModifier().getBasecode().equals("null")) ) {
               tooltip = tooltip + "(" + ((TreeNode)element).getData().getBasecode() + ")";
            }
                 }
                 else if ((((TreeNode)element).getData().getBasecode() != null) && (!((TreeNode)element).getData().getBasecode().equals("null")) ) {
                   tooltip = tooltip + "(" + ((TreeNode)element).getData().getBasecode() + ")";
                }
              }
             */
            item.setData("TOOLTIP", tooltip);

            // if element is Inactive; print label in gray
            if (((TreeNode) element).getData().getModifier() != null) {

                if (((TreeNode) element).getData().getModifier().getVisualattributes().substring(1, 2)
                        .equals("I")) {
                    Color color = Display.getCurrent().getSystemColor(SWT.COLOR_DARK_GRAY);
                    item.setForeground(color);
                }

                //            if element is Hidden; print label in red
                else if (((TreeNode) element).getData().getModifier().getVisualattributes().substring(1, 2)
                        .equals("H")) {
                    Color color = Display.getCurrent().getSystemColor(SWT.COLOR_RED);
                    item.setForeground(color);
                }

                //           if element is undefined; print label in red
                else if (((TreeNode) element).getData().getModifier().getVisualattributes().equals("C-ERROR")) {
                    Color color = Display.getCurrent().getSystemColor(SWT.COLOR_RED);
                    item.setForeground(color);
                }

                //           if element is synonym; print label in dark blue
                if (((TreeNode) element).getData().getModifier().getSynonymCd() != null) {
                    if (((TreeNode) element).getData().getModifier().getSynonymCd().equals("Y")) {
                        Color color = Display.getCurrent().getSystemColor(SWT.COLOR_DARK_BLUE);
                        item.setForeground(color);
                    }
                }

            }
            return ((TreeNode) element).getData().getModifier().getName();
            //            return ((TreeNode)element).toString();
        }

        @Override
        public Image getImage(Object element) {
            return imageRegistry.get(((TreeNode) element).getIconKey());
        }
    });

    this.viewer.setContentProvider(new ITreeContentProvider() {
        public Object[] getChildren(Object parentElement) {
            return ((TreeNode) parentElement).getChildren().toArray();
        }

        public Object getParent(Object element) {
            return ((TreeNode) element).getParent();
        }

        public boolean hasChildren(Object element) {
            return ((TreeNode) element).getChildren().size() > 0;
        }

        public Object[] getElements(Object inputElement) {
            return ((TreeNode) inputElement).getChildren().toArray();
        }

        public void dispose() {
        }

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

    rootNode = new TreeNode(0, "Standard Modifier Items", "Standard Modifier Items", "CA");
    this.viewer.setInput(rootNode);

    this.viewer.addTreeListener(new ITreeViewerListener() {
        public void treeExpanded(TreeExpansionEvent event) {
            final TreeNode node = (TreeNode) event.getElement();
            node.setOpen(true);

            // check to see if child is a placeholder ('working...')
            //   if so, make Web Service call to update children of node
            //   leaves that are placeholders have open==true
            if (node.getChildren().size() == 1) {
                TreeNode child = (TreeNode) (node.getChildren().get(0));
                if ((child.getData().getModifier().getVisualattributes().startsWith("R")) && child.isOpen()) {
                    // child is a placeholder, so remove from list 
                    //   update list with real children  
                    node.getModXMLData(viewer, null).start();
                }
                //            }
            }

            viewer.refresh();
            viewer.expandToLevel(node, 1);
        }

        public void treeCollapsed(TreeExpansionEvent event) {
            final TreeNode node = (TreeNode) event.getElement();
            node.setOpen(false);
            viewer.collapseToLevel(node, 1);
            viewer.refresh();
        }
    });

    this.viewer.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent event) {
            TreeNode node = null;
            // if the selection is empty clear the label
            if (event.getSelection().isEmpty()) {
                setCurrentNode(null);
                return;
            }
            if (event.getSelection() instanceof IStructuredSelection) {
                IStructuredSelection selection = (IStructuredSelection) event.getSelection();
                node = (TreeNode) selection.getFirstElement();
                setCurrentNode(node);
            }

            // Case where we are expanding the node
            boolean expand = false;
            String visualAttribute = node.getData().getModifier().getVisualattributes();
            if ((visualAttribute.startsWith("D")) || (visualAttribute.startsWith("O")))
                if (node.isOpen()) {
                    // collapsing node
                    node.setOpen(false);
                    viewer.collapseToLevel(node, 1);
                    viewer.refresh();
                } else // expanding node
                {
                    node.setOpen(true);
                    viewer.expandToLevel(node, 1);
                    viewer.refresh(node);

                    // check to see if this node's child is a placeholder ('working...')
                    //   if so, make Web Service call to update children of node

                    if (node.getChildren().size() == 1) {
                        TreeNode child = (TreeNode) (node.getChildren().get(0));
                        if ((child.getData().getModifier().getVisualattributes().startsWith("R"))
                                && (child.isOpen())) {
                            // child is a placeholder, so remove from list 
                            //   update list with real children  
                            node.getModXMLData(viewer, null).start();
                        }
                    }
                    viewer.refresh();
                }
        }

    });

    //    Implement a "fake" tooltip
    final Listener labelListener = new Listener() {
        public void handleEvent(Event event) {
            Label label = (Label) event.widget;
            Shell shell = label.getShell();
            switch (event.type) {
            case SWT.MouseDown:
                Event e = new Event();
                e.item = (TreeItem) label.getData("_TREEITEM");
                //cdh@20060314 have to fix this for multi select in treeview

                // Assuming table is single select, set the selection as if
                // the mouse down event went through to the table
                (viewer.getTree()).setSelection(new TreeItem[] { (TreeItem) e.item });
                (viewer.getTree()).notifyListeners(SWT.Selection, e);
                //table.setSelection (new TableItem [] {(TableItem) e.item});
                //table.notifyListeners (SWT.Selection, e);
                // fall through
            case SWT.MouseExit:
                shell.dispose();
                break;
            }
        }
    };

    Listener viewerListener = new Listener() {
        Shell tip = null;
        Label label = null;

        public void handleEvent(Event event) {
            switch (event.type) {
            case SWT.Dispose:
            case SWT.KeyDown:
            case SWT.MouseMove:
            case SWT.MouseExit: {
                if (tip == null)
                    break;
                tip.dispose();
                tip = null;
                label = null;
                break;
            }
            case SWT.MouseDown:
                /*            if(event.button == 3) // right click
                {
                   IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
                   if (selection.size() != 1)
                      return;
                        
                   TreeNode node =  (TreeNode) selection.getFirstElement();
                   setCurrentNode(node);
                   if(node.getData().getModifier().getVisualattributes().substring(2).equals("E")){                     
                        
                      if   ((node.getData().getModifier().getVisualattributes().startsWith("O"))
                   || (node.getData().getModifier().getVisualattributes().startsWith("D"))){
                lockedMenu.setVisible(false);
                modAllMenu.setVisible(true);
                modItemMenu.setVisible(false);
                        
                      }
                      else if   ((node.getData().getModifier().getVisualattributes().startsWith("R"))){
                modAllMenu.setVisible(false);
                modItemMenu.setVisible(true);
                lockedMenu.setVisible(false);
                      }
                        
                      else{
                lockedMenu.setVisible(false);
                modAllMenu.setVisible(false);
                modItemMenu.setVisible(false);
                      }
                        
                   }
                   else{
                      modAllMenu.setVisible(false);
                      modItemMenu.setVisible(false);
                      lockedMenu.setVisible(true);
                   }
                } */

            case SWT.MouseHover: {
                TreeItem item = (viewer.getTree()).getItem(new Point(event.x, event.y));
                if (item != null) {
                    if (tip != null && !tip.isDisposed())
                        tip.dispose();
                    tip = new Shell(Display.getCurrent().getActiveShell(), SWT.ON_TOP | SWT.TOOL);
                    tip.setLayout(new FillLayout());
                    label = new Label(tip, SWT.NONE);
                    label.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_INFO_FOREGROUND));
                    label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_INFO_BACKGROUND));
                    label.setData("_TREEITEM", item);
                    label.setText((String) item.getData("TOOLTIP"));
                    //                  label.setText("Tooltip test");
                    label.addListener(SWT.MouseExit, labelListener);
                    label.addListener(SWT.MouseDown, labelListener);
                    Point size = tip.computeSize(SWT.DEFAULT, SWT.DEFAULT);
                    Rectangle rect = item.getBounds(0);
                    Point pt = viewer.getTree().toDisplay(event.x, event.y);
                    tip.setBounds(pt.x + 10, pt.y + 20, size.x, size.y);
                    tip.setVisible(true);
                }
            }
            }
        }
    };
    viewer.getTree().addListener(SWT.MouseDown, viewerListener);
    viewer.getTree().addListener(SWT.Dispose, viewerListener);
    viewer.getTree().addListener(SWT.KeyDown, viewerListener);
    viewer.getTree().addListener(SWT.MouseMove, viewerListener);
    viewer.getTree().addListener(SWT.MouseHover, viewerListener);
    viewer.getTree().addListener(SWT.MouseExit, viewerListener);

    //      MetadataRecord.getInstance().registerModifierViewer(viewer);
}

From source file:edu.harvard.i2b2.eclipse.plugins.ontology.views.find.NodeBrowser.java

License:Open Source License

private void createTreeViewer(Composite parent, int style, int inputFlag) {
    Tree tree = new Tree(parent, style);

    MenuManager modItemPopupMenu = createModifierPopupMenu(parent);
    modifierMenu = modItemPopupMenu.createContextMenu(tree);
    modifierMenu.setVisible(false);/*from   w w  w  .j ava2s.  c o m*/

    GridData gridData = new GridData(GridData.FILL_BOTH);
    gridData.horizontalSpan = 2;
    gridData.heightHint = 100;
    gridData.grabExcessHorizontalSpace = true;
    tree.setLayoutData(gridData);

    this.viewer = new TreeViewer(tree);
    this.viewer.setLabelProvider(new LabelProvider() {
        public String getText(Object element) {
            // Set the tooltip data
            //  (cant be done in the lookup thread)
            //   maps TreeViewer node to Tree item and sets item.data
            TreeItem item = (TreeItem) (viewer.testFindItem((TreeNode) element));
            Color defaultColor = Display.getCurrent().getSystemColor(SWT.COLOR_BLACK);
            item.setForeground(defaultColor);

            String tooltip = ((TreeNode) element).getData().getTooltip();
            if ((tooltip == null) || (tooltip.equals(""))) {
                tooltip = ((TreeNode) element).toString();
            }
            tooltip = " " + tooltip + " ";
            if ((((TreeNode) element).getData().getBasecode() != null)
                    && (!((TreeNode) element).getData().getBasecode().equals("null"))) {
                tooltip = tooltip + "  (" + ((TreeNode) element).getData().getBasecode() + ")";
            }

            if (!(tooltip.contains("\n"))) {

                String formattedTooltip = "";
                String[] tooltips = tooltip.split(" ");
                int length = tooltips.length;

                for (int i = 0; i < length; i++) {
                    formattedTooltip += " " + tooltips[i];
                    if (i > 1 && i % 10 == 0)
                        formattedTooltip += "\n";
                }
                tooltip = formattedTooltip;

            }

            item.setData("TOOLTIP", tooltip);

            // if element is inactive; display label in gray
            if (((TreeNode) element).getData().getVisualattributes().substring(1, 2).equals("I")) {
                Color gray = Display.getCurrent().getSystemColor(SWT.COLOR_DARK_GRAY);
                item.setForeground(gray);
            }
            //           if element is Hidden; print label in red
            else if (((TreeNode) element).getData().getVisualattributes().substring(1, 2).equals("H")) {
                Color color = Display.getCurrent().getSystemColor(SWT.COLOR_RED);
                item.setForeground(color);
            }

            //          if element is error; print label in red
            else if (((TreeNode) element).getData().getVisualattributes().equals("C-ERROR")) {
                Color color = Display.getCurrent().getSystemColor(SWT.COLOR_RED);
                item.setForeground(color);
            }

            //           if element is synonym; print label in dark blue
            if (((TreeNode) element).getData().getSynonymCd() != null) {
                if (((TreeNode) element).getData().getSynonymCd().equals("Y")) {
                    Color color = Display.getCurrent().getSystemColor(SWT.COLOR_DARK_BLUE);
                    item.setForeground(color);
                }
            }

            return ((TreeNode) element).toString();
        }

        public Image getImage(Object element) {
            return imageRegistry.get(((TreeNode) element).getIconKey());
        }
    });
    this.viewer.setContentProvider(new ITreeContentProvider() {
        public Object[] getChildren(Object parentElement) {
            return ((TreeNode) parentElement).getChildren().toArray();
        }

        public Object getParent(Object element) {
            return ((TreeNode) element).getParent();
        }

        public boolean hasChildren(Object element) {
            return ((TreeNode) element).getChildren().size() > 0;
        }

        public Object[] getElements(Object inputElement) {
            return ((TreeNode) inputElement).getChildren().toArray();
        }

        public void dispose() {
        }

        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }
    });
    this.viewer.setInput(getRootNode());

    String status = System.getProperty("errorMessage");
    if (status != null) {
        TreeNode placeholder = new TreeNode(1, "placeholder", status, "C-ERROR");
        browser.rootNode.addChild(placeholder);
        browser.refresh();
        System.setProperty("errorMessage", "");
    }

    this.viewer.addSelectionChangedListener(new ISelectionChangedListener() {

        public void selectionChanged(SelectionChangedEvent event) {

            TreeNode node = null;
            // if the selection is empty clear the label
            if (event.getSelection().isEmpty()) {
                //          setCurrentNode(null);
                return;
            }
            if (event.getSelection() instanceof IStructuredSelection) {
                IStructuredSelection selection = (IStructuredSelection) event.getSelection();
                node = (TreeNode) selection.getFirstElement();

                setCurrentNode(node);
                ModifierComposite.getInstance().disableComposite();
            }
        }

    });

    this.viewer.addTreeListener(new ITreeViewerListener() {
        public void treeExpanded(TreeExpansionEvent event) {
            final TreeNode node = (TreeNode) event.getElement();
            node.setOpen(true);

            // check to see if child is a placeholder ('working...')
            //   if so, make Web Service call to update children of node

            if (node.getChildren().size() == 1)
            //   && !(((TreeNode)node.getChildren().get(0)).getData().getName().
            //      equalsIgnoreCase("Over maximum number of child nodes")))    
            {
                TreeNode child = (TreeNode) (node.getChildren().get(0));
                if ((child.getData().getVisualattributes().startsWith("L")) && child.isOpen()) {
                    // child is a placeholder, so remove from list 
                    //   update list with real children   
                    slm.setMessage("Calling WebService");
                    slm.update(true);
                    node.getXMLData(viewer, browser).start();
                }
            }

            viewer.refresh();
            viewer.expandToLevel(node, 1);
        }

        public void treeCollapsed(TreeExpansionEvent event) {
            final TreeNode node = (TreeNode) event.getElement();
            node.setOpen(false);
            viewer.collapseToLevel(node, 1);
            viewer.refresh(node);
        }
    });
    this.viewer.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent event) {
            TreeNode node = null;
            // if the selection is empty clear the label
            if (event.getSelection().isEmpty()) {
                setCurrentNode(null);
                return;
            }
            if (event.getSelection() instanceof IStructuredSelection) {
                IStructuredSelection selection = (IStructuredSelection) event.getSelection();
                node = (TreeNode) selection.getFirstElement();
                setCurrentNode(node);
            }

            // Case where we are expanding the node
            boolean expand = false;
            String visualAttribute = node.getData().getVisualattributes();
            if ((visualAttribute.startsWith("F")) || (visualAttribute.startsWith("C")))
                if (node.isOpen()) {
                    // collapsing node
                    node.setOpen(false);
                    viewer.collapseToLevel(node, 1);
                    viewer.refresh();
                } else // expanding node
                {
                    node.setOpen(true);
                    viewer.expandToLevel(node, 1);
                    viewer.refresh(node);

                    // check to see if this node's child is a placeholder ('working...')
                    //   if so, make Web Service call to update children of node

                    if (node.getChildren().size() == 1) {
                        TreeNode child = (TreeNode) (node.getChildren().get(0));
                        if ((child.getData().getVisualattributes().startsWith("L")) && (child.isOpen())) {
                            // child is a placeholder, so remove from list 
                            //   update list with real children  
                            node.getXMLData(viewer, browser).start();
                        }
                    }
                    viewer.refresh();
                }
        }

    });

    Listener viewerListener = new Listener() {
        Shell tip = null;
        Label label = null;

        public void handleEvent(Event event) {
            switch (event.type) {
            case SWT.Dispose:
            case SWT.KeyDown:
            case SWT.MouseExit:
            case SWT.MouseMove: {
                if (tip == null)
                    break;
                tip.dispose();
                tip = null;
                label = null;
                break;
            }
            case SWT.MouseDown:
                if (event.button == 3) // right click
                {
                    IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
                    if (selection.size() != 1)
                        return;

                    TreeNode node = (TreeNode) selection.getFirstElement();
                    setCurrentNode(node);
                    if (!Boolean.parseBoolean(System.getProperty("OntDisableModifiers"))) {

                        modifierMenu.setVisible(true);
                    }
                }

            case SWT.MouseHover: {
                TreeItem item = (viewer.getTree()).getItem(new Point(event.x, event.y));
                if (item != null) {
                    if (tip != null && !tip.isDisposed())
                        tip.dispose();
                    tip = new Shell(Display.getCurrent().getActiveShell(), SWT.ON_TOP | SWT.TOOL);
                    tip.setLayout(new FillLayout());
                    label = new Label(tip, SWT.NONE);
                    label.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_INFO_FOREGROUND));
                    label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_INFO_BACKGROUND));
                    //      label.setData("_TREEITEM", item);
                    label.setText((String) item.getData("TOOLTIP"));
                    //                  label.setText("Tooltip test");
                    // label.addListener(SWT.MouseExit, labelListener);
                    // label.addListener(SWT.MouseDown, labelListener);
                    Point size = tip.computeSize(SWT.DEFAULT, SWT.DEFAULT);
                    Rectangle rect = item.getBounds(0);
                    Point pt = viewer.getTree().toDisplay(event.x, event.y);
                    tip.setBounds(pt.x + 10, pt.y + 20, size.x, size.y);
                    tip.setVisible(true);
                }
            }
            }
        }
    };
    viewer.getTree().addListener(SWT.MouseDown, viewerListener);
    viewer.getTree().addListener(SWT.Dispose, viewerListener);
    viewer.getTree().addListener(SWT.KeyDown, viewerListener);
    viewer.getTree().addListener(SWT.MouseMove, viewerListener);
    viewer.getTree().addListener(SWT.MouseHover, viewerListener);
    viewer.getTree().addListener(SWT.MouseExit, viewerListener);

}

From source file:edu.harvard.i2b2.eclipse.plugins.ontology.views.NodeBrowser.java

License:Open Source License

private void createTreeViewer(Composite parent, int style, int inputFlag) {
    this.browser = this;
    Tree tree = new Tree(parent, style);

    GridData gridData = new GridData(GridData.FILL_BOTH);
    gridData.verticalSpan = 50;//from ww w.j  a v a  2  s . co m
    gridData.horizontalSpan = 2;
    gridData.widthHint = 150;
    gridData.grabExcessHorizontalSpace = true;
    gridData.grabExcessVerticalSpace = true;
    tree.setLayoutData(gridData);

    MenuManager popupMenu = new MenuManager();

    IAction countAction = new CountAction();
    countAction.setChecked(false);
    //   System.setProperty("getPatientCount", "false");
    //System.setProperty("getPatientCount", "false");

    boolean answer = Boolean.valueOf(System.getProperty("patientCountVisible"));
    countAction.setEnabled(answer);

    IAction shortTooltipAction = new ShortTooltipAction();
    shortTooltipAction.setChecked(false);
    System.setProperty("shortToolTip", "false");
    IAction conceptCodeAction = new ConceptCodeAction();
    conceptCodeAction.setChecked(false);
    System.setProperty("showConceptCodes", "false");
    IAction refreshAction = new RefreshAction();
    IAction refreshAllAction = new RefreshAllAction();
    //    popupMenu.add(countAction);
    //   popupMenu.add(shortTooltipAction);
    //  popupMenu.add(conceptCodeAction);
    //  popupMenu.add(new Separator());
    popupMenu.add(refreshAction);
    popupMenu.add(refreshAllAction);

    menu = popupMenu.createContextMenu(tree);

    this.viewer = new TreeViewer(tree);

    this.viewer.setLabelProvider(new LabelProvider() {
        @Override

        public String getText(Object element) {
            // Set the tooltip data
            //  (cant be done in the lookup thread)
            //   maps TreeViewer node to Tree item and sets item.data
            TreeItem item = (TreeItem) (viewer.testFindItem(element));
            Color defaultColor = Display.getCurrent().getSystemColor(SWT.COLOR_BLACK);
            item.setForeground(defaultColor);

            String tooltip = ((TreeNode) element).getData().getTooltip();

            if (System.getProperty("shortToolTip").equals("true"))
                tooltip = ((TreeNode) element).getData().getName();

            else if (((TreeNode) element).getData().getModifier() != null) {
                tooltip = ((TreeNode) element).getData().getModifier().getTooltip();
                if (System.getProperty("shortToolTip").equals("true"))
                    tooltip = ((TreeNode) element).getData().getModifier().getName();
            }

            else if ((tooltip == null) || (tooltip.equals(""))) {
                tooltip = ((TreeNode) element).toString();
            }

            if (!(tooltip.contains("\n"))) {
                String formattedTooltip = "";
                String[] tooltips = tooltip.split(" ");
                int length = tooltips.length;

                for (int i = 0; i < length; i++) {
                    formattedTooltip += " " + tooltips[i];
                    if (i > 1 && i % 10 == 0)
                        formattedTooltip += "\n";
                }
                tooltip = formattedTooltip;

            }

            tooltip = " " + tooltip + " ";

            if (System.getProperty("showConceptCodes").equals("true")) {
                if (((TreeNode) element).getData().getModifier() != null) {
                    if ((((TreeNode) element).getData().getModifier().getBasecode() != null)
                            && (!((TreeNode) element).getData().getModifier().getBasecode().equals("null"))) {
                        tooltip = tooltip + "(" + ((TreeNode) element).getData().getBasecode() + ")";
                    }
                } else if ((((TreeNode) element).getData().getBasecode() != null)
                        && (!((TreeNode) element).getData().getBasecode().equals("null"))) {
                    tooltip = tooltip + "(" + ((TreeNode) element).getData().getBasecode() + ")";
                }
            }
            item.setData("TOOLTIP", tooltip);

            // if element is Inactive; print label in gray
            if (((TreeNode) element).getData().getModifier() != null) {
                if (((TreeNode) element).getData().getModifier().getVisualattributes().substring(1, 2)
                        .equals("I")) {
                    Color color = Display.getCurrent().getSystemColor(SWT.COLOR_DARK_GRAY);
                    item.setForeground(color);
                }
                //    if element is Hidden; print label in red
                else if (((TreeNode) element).getData().getModifier().getVisualattributes().substring(1, 2)
                        .equals("H")) {
                    Color color = Display.getCurrent().getSystemColor(SWT.COLOR_RED);
                    item.setForeground(color);
                }

                //                if element is undefined; print label in red
                else if (((TreeNode) element).getData().getModifier().getVisualattributes().equals("C-ERROR")) {
                    Color color = Display.getCurrent().getSystemColor(SWT.COLOR_RED);
                    item.setForeground(color);
                }
                //               if element is synonym; print label in blue
                else if (((TreeNode) element).getData().getModifier().getSynonymCd() != null) {
                    if (((TreeNode) element).getData().getModifier().getSynonymCd().equals("Y")) {
                        Color color = Display.getCurrent().getSystemColor(SWT.COLOR_DARK_BLUE);
                        item.setForeground(color);
                    }
                }
            } else {
                if (((TreeNode) element).getData().getVisualattributes().substring(1, 2).equals("I")) {
                    Color color = Display.getCurrent().getSystemColor(SWT.COLOR_DARK_GRAY);
                    item.setForeground(color);
                }
                //    if element is Hidden; print label in red
                else if (((TreeNode) element).getData().getVisualattributes().substring(1, 2).equals("H")) {
                    Color color = Display.getCurrent().getSystemColor(SWT.COLOR_RED);
                    item.setForeground(color);
                }

                //                if element is undefined; print label in red
                else if (((TreeNode) element).getData().getVisualattributes().equals("C-ERROR")) {
                    Color color = Display.getCurrent().getSystemColor(SWT.COLOR_RED);
                    item.setForeground(color);
                }

                //           if element is synonym; print label in dark blue
                else if (((TreeNode) element).getData().getSynonymCd() != null) {
                    if (((TreeNode) element).getData().getSynonymCd().equals("Y")) {
                        Color color = Display.getCurrent().getSystemColor(SWT.COLOR_DARK_BLUE);
                        item.setForeground(color);
                    }
                }
            }

            return ((TreeNode) element).toString();
        }

        @Override
        public Image getImage(Object element) {
            return imageRegistry.get(((TreeNode) element).getIconKey());
        }
    });
    this.viewer.setContentProvider(new ITreeContentProvider() {
        public Object[] getChildren(Object parentElement) {
            return ((TreeNode) parentElement).getChildren().toArray();
        }

        public Object getParent(Object element) {
            return ((TreeNode) element).getParent();
        }

        public boolean hasChildren(Object element) {
            return ((TreeNode) element).getChildren().size() > 0;
        }

        public Object[] getElements(Object inputElement) {
            return ((TreeNode) inputElement).getChildren().toArray();
        }

        public void dispose() {
        }

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

    this.viewer.setInput(populateRootNode());

    String status = System.getProperty("errorMessage");
    if (status != null) {
        TreeNode placeholder = new TreeNode(1, "placeholder", status, "C-ERROR");
        browser.rootNode.addChild(placeholder);
        browser.refresh();
        System.setProperty("errorMessage", "");
    }

    this.viewer.addTreeListener(new ITreeViewerListener() {
        public void treeExpanded(TreeExpansionEvent event) {
            final TreeNode node = (TreeNode) event.getElement();
            node.setOpen(true);

            // check to see if child is a placeholder ('working...')
            //   if so, make Web Service call to update children of node
            //   leaves that are placeholders have open==true
            if (node.getChildren().size() == 1) {
                TreeNode child = (TreeNode) (node.getChildren().get(0));
                if ((child.getData().getVisualattributes().startsWith("L")) && child.isOpen()) {
                    // child is a placeholder, so remove from list 
                    //   update list with real children  
                    node.getXMLData(viewer, browser).start();
                }
                if ((child.getData().getVisualattributes().startsWith("R")) && child.isOpen()) {
                    // child is a placeholder, so remove from list 
                    //   update list with real children  
                    node.getModXMLData(viewer, browser).start();
                }
            }

            viewer.refresh();
            viewer.expandToLevel(node, 1);
        }

        public void treeCollapsed(TreeExpansionEvent event) {
            final TreeNode node = (TreeNode) event.getElement();
            node.setOpen(false);
            viewer.collapseToLevel(node, 1);
            viewer.refresh();
        }
    });

    this.viewer.addSelectionChangedListener(new ISelectionChangedListener() {

        public void selectionChanged(SelectionChangedEvent event) {

            TreeNode node = null;
            // if the selection is empty clear the label
            if (event.getSelection().isEmpty()) {
                //          setCurrentNode(null);
                return;
            }
            if (event.getSelection() instanceof IStructuredSelection) {
                IStructuredSelection selection = (IStructuredSelection) event.getSelection();
                node = (TreeNode) selection.getFirstElement();

                //          TableComposite.getInstance().addModifiers(node);
                setCurrentNode(node);
            }
        }

    });

    this.viewer.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent event) {
            TreeNode node = null;
            // if the selection is empty clear the label
            if (event.getSelection().isEmpty()) {
                setCurrentNode(null);
                return;
            }
            if (event.getSelection() instanceof IStructuredSelection) {
                IStructuredSelection selection = (IStructuredSelection) event.getSelection();
                node = (TreeNode) selection.getFirstElement();
                setCurrentNode(node);
            }

            // Case where we are expanding the node
            boolean expand = false;
            String visualAttribute = node.getData().getVisualattributes();
            if ((visualAttribute.startsWith("F")) || (visualAttribute.startsWith("C"))
                    || (visualAttribute.startsWith("D")) || (visualAttribute.startsWith("O")))
                if (node.isOpen()) {
                    // collapsing node
                    node.setOpen(false);
                    viewer.collapseToLevel(node, 1);
                    viewer.refresh();
                } else // expanding node
                {
                    viewer.expandToLevel(node, 1);
                    viewer.refresh(node);
                    node.setOpen(true);
                    // check to see if this node's child is a placeholder ('working...')
                    //   if so, make Web Service call to update children of node

                    if (node.getChildren().size() == 1) {
                        TreeNode child = (TreeNode) (node.getChildren().get(0));
                        if ((child.getData().getVisualattributes().startsWith("L")) && child.isOpen()) {
                            // child is a placeholder, so remove from list 
                            //   update list with real children  
                            node.getXMLData(viewer, browser).start();
                        }
                        if ((child.getData().getVisualattributes().startsWith("R")) && child.isOpen()) {
                            // child is a placeholder, so remove from list 
                            //   update list with real children  
                            node.getModXMLData(viewer, browser).start();
                        }
                    }
                    viewer.refresh();
                }
        }

    });

    //    Implement a "fake" tooltip
    final Listener labelListener = new Listener() {
        public void handleEvent(Event event) {
            Label label = (Label) event.widget;
            Shell shell = label.getShell();
            switch (event.type) {
            case SWT.MouseDown:
                Event e = new Event();
                e.item = (TreeItem) label.getData("_TREEITEM");
                //cdh@20060314 have to fix this for multi select in treeview

                // Assuming table is single select, set the selection as if
                // the mouse down event went through to the table
                (viewer.getTree()).setSelection(new TreeItem[] { (TreeItem) e.item });
                (viewer.getTree()).notifyListeners(SWT.Selection, e);
                //table.setSelection (new TableItem [] {(TableItem) e.item});
                //table.notifyListeners (SWT.Selection, e);
                // fall through
            case SWT.MouseExit:
                shell.dispose();
                break;
            }
        }
    };

    Listener viewerListener = new Listener() {
        Shell tip = null;
        Label label = null;

        public void handleEvent(Event event) {
            switch (event.type) {
            case SWT.Dispose:
            case SWT.KeyDown:
            case SWT.MouseMove:
            case SWT.MouseExit: {
                if (tip == null)
                    break;
                tip.dispose();
                tip = null;
                label = null;
                break;
            }
            case SWT.MouseDown:
                if (event.button == 3) // right click
                {
                    IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
                    if (selection.size() != 1)
                        return;

                    //         TreeNode node =  (TreeNode) selection.getFirstElement();
                    //         if( node.getData().getModifier() == null)
                    menu.setVisible(true);
                    //                  else if(node.getData().getVisualAttributes().startsWith("ZA"))
                    //                     menu.setVisible(true);
                    //   else if(node.getData().getVisualAttributes().startsWith("F"))
                    //      folderMenu.setVisible(true);
                    //   else if(node.getData().getVisualAttributes().startsWith("C"))
                    //      caseMenu.setVisible(true);
                }
            case SWT.MouseHover: {
                TreeItem item = (viewer.getTree()).getItem(new Point(event.x, event.y));
                if (item != null) {
                    if (tip != null && !tip.isDisposed())
                        tip.dispose();
                    tip = new Shell(Display.getCurrent().getActiveShell(), SWT.ON_TOP | SWT.TOOL);
                    tip.setLayout(new FillLayout());
                    label = new Label(tip, SWT.NONE);
                    label.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_INFO_FOREGROUND));
                    label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_INFO_BACKGROUND));
                    label.setData("_TREEITEM", item);
                    label.setText((String) item.getData("TOOLTIP"));
                    //                  label.setText("Tooltip test");
                    label.addListener(SWT.MouseExit, labelListener);
                    label.addListener(SWT.MouseDown, labelListener);
                    Point size = tip.computeSize(SWT.DEFAULT, SWT.DEFAULT);
                    Rectangle rect = item.getBounds(0);
                    Point pt = viewer.getTree().toDisplay(event.x, event.y);
                    tip.setBounds(pt.x + 10, pt.y + 20, size.x, size.y);
                    tip.setVisible(true);
                }
            }
            }
        }
    };
    viewer.getTree().addListener(SWT.MouseDown, viewerListener);
    viewer.getTree().addListener(SWT.Dispose, viewerListener);
    viewer.getTree().addListener(SWT.KeyDown, viewerListener);
    viewer.getTree().addListener(SWT.MouseMove, viewerListener);
    viewer.getTree().addListener(SWT.MouseHover, viewerListener);
    viewer.getTree().addListener(SWT.MouseExit, viewerListener);

    ISelectionChangedListener findListener = new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            if (event.getSelection() instanceof IStructuredSelection) {
                IStructuredSelection selection = (IStructuredSelection) event.getSelection();
                edu.harvard.i2b2.eclipse.plugins.ontology.views.find.TreeNode node = (edu.harvard.i2b2.eclipse.plugins.ontology.views.find.TreeNode) selection
                        .getFirstElement();

                TreeNode node1 = new TreeNode(node);
                String foundKey = node1.getData().getKey();

                String parent = "\\\\" + StringUtil.getTableCd(foundKey) + "\\";
                String fullName = StringUtil.getPath(foundKey);

                String[] parts = fullName.split("\\\\");

                if (rootNode.getChildren().isEmpty())
                    log.debug("rootNode is empty");
                else {
                    viewer.getTree().setEnabled(false);
                    rootNode.expandFindTree(viewer, parts, parent).start();
                }
            }
        }
    };

    TermSelectionProvider.getInstance().addSelectionChangedListener(findListener);

}

From source file:edu.harvard.i2b2.eclipse.plugins.workplace.views.find.FindViewNodeBrowser.java

License:Open Source License

private void createTreeViewer(Composite parent, int style, int inputFlag) {
    Tree tree = new Tree(parent, style);

    GridData gridData = new GridData(GridData.FILL_BOTH);
    //gridData.verticalSpan = 50;
    gridData.horizontalSpan = 2;//  w  w  w .  j av  a2  s . co m
    //gridData.widthHint = 150;
    gridData.grabExcessHorizontalSpace = true;
    gridData.heightHint = 100;
    //gridData.grabExcessVerticalSpace = true;
    tree.setLayoutData(gridData);

    MenuManager popupMenu = new MenuManager();
    IAction renameAction = new RenameAction();
    IAction annotateAction = new AnnotateAction();
    IAction deleteAction = new DeleteAction();
    IAction exportAction = new ExportAction();
    popupMenu.add(renameAction);
    popupMenu.add(annotateAction);
    popupMenu.add(deleteAction);
    popupMenu.add(exportAction);
    menu = popupMenu.createContextMenu(tree);

    MenuManager casePopupMenu = new MenuManager();
    IAction makeFolderAction = new NewFolderAction();
    casePopupMenu.add(makeFolderAction);
    caseMenu = casePopupMenu.createContextMenu(tree);

    MenuManager folderPopupMenu = new MenuManager();
    folderPopupMenu.add(renameAction);
    folderPopupMenu.add(annotateAction);
    folderPopupMenu.add(deleteAction);
    folderPopupMenu.add(makeFolderAction);
    folderMenu = folderPopupMenu.createContextMenu(tree);

    //       tree.setMenu(menu);

    this.viewer = new TreeViewer(tree);
    this.viewer.setLabelProvider(new LabelProvider() {
        public String getText(Object element) {
            // Set the tooltip data
            //  (cant be done in the lookup thread)
            //   maps TreeViewer node to Tree item and sets item.data
            TreeItem item = (TreeItem) (viewer.testFindItem((TreeNode) element));
            String tooltip = ((TreeNode) element).getData().getTooltip();
            if ((tooltip == null) || (tooltip.equals(""))) {
                tooltip = ((TreeNode) element).toString();
            }
            tooltip = " " + tooltip + " ";
            item.setData("TOOLTIP", tooltip);

            // if element is Inactive; print label in gray
            if (((TreeNode) element).getData().getVisualAttributes().substring(1, 2).equals("I")) {
                Color color = Display.getCurrent().getSystemColor(SWT.COLOR_DARK_GRAY);
                item.setForeground(color);
            }

            //               if element is Hidden; print label in red
            else if (((TreeNode) element).getData().getVisualAttributes().substring(1, 2).equals("H")) {
                Color color = Display.getCurrent().getSystemColor(SWT.COLOR_RED);
                item.setForeground(color);
            }

            //              if element is undefined; print label in red
            else if (((TreeNode) element).getData().getVisualAttributes().equals("C-ERROR")) {
                Color color = Display.getCurrent().getSystemColor(SWT.COLOR_RED);
                item.setForeground(color);
            }

            //              if element is synonym; print label in dark blue
            //              if (((TreeNode)element).getData().getSynonymCd() != null) {
            //                 if (((TreeNode)element).getData().getSynonymCd().equals("Y"))
            //                 {
            //                    Color color = Display.getCurrent().getSystemColor(SWT.COLOR_DARK_BLUE);
            //                    item.setForeground(color);
            //                 }
            //              }   
            return ((TreeNode) element).toString();
        }

        public Image getImage(Object element) {
            return imageRegistry.get(((TreeNode) element).getIconKey());
        }
    });
    this.viewer.setContentProvider(new ITreeContentProvider() {
        public Object[] getChildren(Object parentElement) {
            return ((TreeNode) parentElement).getChildren().toArray();
        }

        public Object getParent(Object element) {
            return ((TreeNode) element).getParent();
        }

        public boolean hasChildren(Object element) {
            return ((TreeNode) element).getChildren().size() > 0;
        }

        public Object[] getElements(Object inputElement) {
            return ((TreeNode) inputElement).getChildren().toArray();
        }

        public void dispose() {
        }

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

    this.viewer.setInput(populateRootNode());

    String status = System.getProperty("errorMessage");
    if (status != null) {
        TreeNode placeholder = new TreeNode("placeholder", status, "C-ERROR");
        this.rootNode.addChild(placeholder);
        this.refresh();
        System.setProperty("errorMessage", "");
    }

    this.viewer.addTreeListener(new ITreeViewerListener() {
        public void treeExpanded(TreeExpansionEvent event) {
            final TreeNode node = (TreeNode) event.getElement();
            if (node.getData().getVisualAttributes().equals("FA"))
                node.getData().setVisualAttributes("FAO");
            else if (node.getData().getVisualAttributes().equals("CA"))
                node.getData().setVisualAttributes("CAO");
            else if (node.getData().getVisualAttributes().equals("FH"))
                node.getData().setVisualAttributes("FHO");
            else if (node.getData().getVisualAttributes().equals("CH"))
                node.getData().setVisualAttributes("CHO");
            //viewer.refresh();

            // check to see if child is a placeholder ('working...')
            //   if so, make Web Service call to update children of node

            if (node.getChildren().size() > 0) {
                TreeNode firstChild = (TreeNode) (node.getChildren().get(0));
                if ((firstChild.getData().getVisualAttributes().equals("LAO"))
                        || (firstChild.getData().getVisualAttributes().equals("LHO"))) {
                    // child is a placeholder, so remove from list 
                    //   update list with real children  
                    //                  node.getXMLData(viewer, browser).start();      
                    node.getXMLData(viewer).start();
                }

                else {
                    for (int i = 0; i < node.getChildren().size(); i++) {
                        TreeNode child = (TreeNode) (node.getChildren().get(i));
                        if (child.getData().getVisualAttributes().equals("FAO")) {
                            child.getData().setVisualAttributes("FA");
                        } else if (child.getData().getVisualAttributes().equals("CAO")) {
                            child.getData().setVisualAttributes("CA");
                        } else if (child.getData().getVisualAttributes().equals("FHO")) {
                            child.getData().setVisualAttributes("FH");
                        } else if (child.getData().getVisualAttributes().equals("CHO")) {
                            child.getData().setVisualAttributes("CH");
                        }
                    }
                }
            }
            viewer.refresh();
            viewer.expandToLevel(node, 1);
        }

        public void treeCollapsed(TreeExpansionEvent event) {
            final TreeNode node = (TreeNode) event.getElement();
            if (node.getData().getVisualAttributes().equals("FAO"))
                node.getData().setVisualAttributes("FA");
            else if (node.getData().getVisualAttributes().equals("CAO"))
                node.getData().setVisualAttributes("CA");
            else if (node.getData().getVisualAttributes().equals("FHO"))
                node.getData().setVisualAttributes("FH");
            else if (node.getData().getVisualAttributes().equals("CHO"))
                node.getData().setVisualAttributes("CH");
            viewer.collapseToLevel(node, 1);
            viewer.refresh();
        }
    });

    this.viewer.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent event) {
            TreeNode node = null;
            // if the selection is empty clear the label
            if (event.getSelection().isEmpty()) {
                setCurrentNode(null);
                return;
            }
            if (event.getSelection() instanceof IStructuredSelection) {
                IStructuredSelection selection = (IStructuredSelection) event.getSelection();
                node = (TreeNode) selection.getFirstElement();
                setCurrentNode(node);
            }

            // Case where we are expanding the node
            boolean expand = false;
            if ((node.getData().getVisualAttributes()).equals("FA")) {
                node.getData().setVisualAttributes("FAO");
                expand = true;
            } else if ((node.getData().getVisualAttributes()).equals("CA")) {
                node.getData().setVisualAttributes("CAO");
                expand = true;
            }

            else if (node.getData().getVisualAttributes().equals("FH")) {
                node.getData().setVisualAttributes("FHO");
                expand = true;
            } else if (node.getData().getVisualAttributes().equals("CH")) {
                node.getData().setVisualAttributes("CHO");
                expand = true;
            }

            if (expand == true) {
                viewer.expandToLevel(node, 1);
                viewer.refresh(node);

                // check to see if this node's child is a placeholder ('working...')
                //   if so, make Web Service call to update children of node

                if (node.getChildren().size() > 0) {
                    TreeNode firstChild = (TreeNode) (node.getChildren().get(0));
                    if ((firstChild.getData().getVisualAttributes().equals("LAO"))
                            || (firstChild.getData().getVisualAttributes().equals("LHO"))) {
                        // child is a placeholder, so remove from list 
                        //   update list with real children  
                        ////            node.getXMLData(viewer, browser).start();
                        node.getXMLData(viewer).start();
                    }

                    else {
                        for (int i = 0; i < node.getChildren().size(); i++) {
                            TreeNode child = (TreeNode) (node.getChildren().get(i));
                            if (child.getData().getVisualAttributes().equals("FAO")) {
                                child.getData().setVisualAttributes("FA");
                            } else if (child.getData().getVisualAttributes().equals("CAO")) {
                                child.getData().setVisualAttributes("CA");
                            } else if (child.getData().getVisualAttributes().equals("FHO")) {
                                child.getData().setVisualAttributes("FH");
                            } else if (child.getData().getVisualAttributes().equals("CHO")) {
                                child.getData().setVisualAttributes("CH");
                            }
                        }
                        viewer.refresh();
                    }
                }

            }

            // Case where we are collapsing the node
            else if (node.getData().getVisualAttributes().equals("FAO")) {
                node.getData().setVisualAttributes("FA");
                viewer.collapseToLevel(node, 1);
                viewer.refresh(node);
            } else if (node.getData().getVisualAttributes().equals("CAO")) {
                node.getData().setVisualAttributes("CA");
                viewer.collapseToLevel(node, 1);
                viewer.refresh(node);
            } else if (node.getData().getVisualAttributes().equals("FHO")) {
                node.getData().setVisualAttributes("FH");
                viewer.collapseToLevel(node, 1);
                viewer.refresh(node);
            } else if (node.getData().getVisualAttributes().equals("CHO")) {
                node.getData().setVisualAttributes("CH");
                viewer.collapseToLevel(node, 1);
                viewer.refresh(node);
            }
        }
    });

    //       Implement a "fake" tooltip
    final Listener labelListener = new Listener() {
        public void handleEvent(Event event) {
            Label label = (Label) event.widget;
            Shell shell = label.getShell();
            switch (event.type) {
            case SWT.MouseDown:
                Event e = new Event();
                e.item = (TreeItem) label.getData("_TREEITEM");
                //cdh@20060314 have to fix this for multi select in treeview

                // Assuming table is single select, set the selection as if
                // the mouse down event went through to the table
                (viewer.getTree()).setSelection(new TreeItem[] { (TreeItem) e.item });
                (viewer.getTree()).notifyListeners(SWT.Selection, e);
                //table.setSelection (new TableItem [] {(TableItem) e.item});
                //table.notifyListeners (SWT.Selection, e);
                // fall through
            case SWT.MouseExit:
                shell.dispose();
                break;
            }
        }
    };

    Listener viewerListener = new Listener() {
        Shell tip = null;
        Label label = null;

        public void handleEvent(Event event) {
            switch (event.type) {
            case SWT.Dispose:
            case SWT.KeyDown:
            case SWT.MouseDown:
                if (event.button == 3) // right click
                {
                    IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
                    if (selection.size() != 1)
                        return;

                    TreeNode node = (TreeNode) selection.getFirstElement();
                    if (node.getData().getVisualAttributes().equals("LA"))
                        menu.setVisible(true);
                    else if (node.getData().getVisualAttributes().startsWith("ZA"))
                        menu.setVisible(true);
                    else if (node.getData().getVisualAttributes().startsWith("F"))
                        folderMenu.setVisible(true);
                    else if (node.getData().getVisualAttributes().startsWith("C"))
                        caseMenu.setVisible(true);
                }

            case SWT.MouseMove:
            case SWT.MouseExit: {
                if (tip == null)
                    break;
                tip.dispose();
                tip = null;
                label = null;
                break;
            }
            case SWT.MouseHover: {
                TreeItem item = (viewer.getTree()).getItem(new Point(event.x, event.y));
                if (item != null) {
                    if (tip != null && !tip.isDisposed())
                        tip.dispose();
                    tip = new Shell(Display.getCurrent().getActiveShell(), SWT.ON_TOP | SWT.TOOL);
                    tip.setLayout(new FillLayout());
                    label = new Label(tip, SWT.NONE);
                    label.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_INFO_FOREGROUND));
                    label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_INFO_BACKGROUND));
                    label.setData("_TREEITEM", item);
                    label.setText((String) item.getData("TOOLTIP"));
                    //                     label.setText("Tooltip test");
                    label.addListener(SWT.MouseExit, labelListener);
                    label.addListener(SWT.MouseDown, labelListener);
                    Point size = tip.computeSize(SWT.DEFAULT, SWT.DEFAULT);
                    Rectangle rect = item.getBounds(0);
                    Point pt = viewer.getTree().toDisplay(event.x, event.y);
                    tip.setBounds(pt.x + 10, pt.y + 20, size.x, size.y);
                    tip.setVisible(true);
                }
            }
            }
        }
    };
    viewer.getTree().addListener(SWT.MouseDown, viewerListener);
    viewer.getTree().addListener(SWT.Dispose, viewerListener);
    viewer.getTree().addListener(SWT.KeyDown, viewerListener);
    viewer.getTree().addListener(SWT.MouseMove, viewerListener);
    viewer.getTree().addListener(SWT.MouseHover, viewerListener);
    viewer.getTree().addListener(SWT.MouseExit, viewerListener);

}

From source file:edu.harvard.i2b2.eclipse.plugins.workplace.views.NodeBrowser.java

License:Open Source License

private void createTreeViewer(Composite parent, int style, int inputFlag) {
    Tree tree = new Tree(parent, style);

    GridData gridData = new GridData(GridData.FILL_BOTH);
    gridData.verticalSpan = 50;/*from   w  w w .  j a v  a  2 s . c  om*/
    gridData.horizontalSpan = 2;
    gridData.widthHint = 150;
    gridData.grabExcessHorizontalSpace = true;
    gridData.grabExcessVerticalSpace = true;
    tree.setLayoutData(gridData);

    MenuManager popupMenu = new MenuManager();
    IAction renameAction = new RenameAction();
    IAction annotateAction = new AnnotateAction();
    IAction deleteAction = new DeleteAction();
    IAction exportAction = new ExportAction();
    protectAction = new ProtectedAction();
    popupMenu.add(renameAction);
    popupMenu.add(annotateAction);
    popupMenu.add(deleteAction);
    popupMenu.add(exportAction);
    //if (UserInfoBean.getInstance().isRoleInProject("DATA_LDS"/*"DATA_PROT"*/)) {
    //popupMenu.add(protectAction);
    // }
    menu = popupMenu.createContextMenu(tree);

    MenuManager casePopupMenu = new MenuManager();
    IAction makeFolderAction = new NewFolderAction();
    casePopupMenu.add(makeFolderAction);
    caseMenu = casePopupMenu.createContextMenu(tree);

    MenuManager folderPopupMenu = new MenuManager();
    folderPopupMenu.add(renameAction);
    folderPopupMenu.add(annotateAction);
    folderPopupMenu.add(deleteAction);
    folderPopupMenu.add(makeFolderAction);
    //if (UserInfoBean.getInstance().isRoleInProject("DATA_LDS"/*"DATA_PROT"*/)) {
    //folderPopupMenu.add(protectAction);
    //}
    folderMenu = folderPopupMenu.createContextMenu(tree);

    //    tree.setMenu(menu);

    this.viewer = new TreeViewer(tree);
    this.viewer.setLabelProvider(new LabelProvider() {
        public String getText(Object element) {
            // Set the tooltip data
            //  (cant be done in the lookup thread)
            //   maps TreeViewer node to Tree item and sets item.data
            TreeItem item = (TreeItem) (viewer.testFindItem((TreeNode) element));
            String tooltip = ((TreeNode) element).getData().getTooltip();
            if ((tooltip == null) || (tooltip.equals(""))) {
                tooltip = ((TreeNode) element).toString();
            }
            tooltip = " " + tooltip + " ";
            item.setData("TOOLTIP", tooltip);

            // if element is Inactive; print label in gray
            if (((TreeNode) element).getData().getVisualAttributes().substring(1, 2).equals("I")) {
                Color color = Display.getCurrent().getSystemColor(SWT.COLOR_DARK_GRAY);
                item.setForeground(color);
            }

            //            if element is Hidden; print label in red
            else if (((TreeNode) element).getData().getVisualAttributes().substring(1, 2).equals("H")) {
                Color color = Display.getCurrent().getSystemColor(SWT.COLOR_RED);
                item.setForeground(color);
            }

            //           if element is undefined; print label in red
            else if (((TreeNode) element).getData().getVisualAttributes().equals("C-ERROR")) {
                Color color = Display.getCurrent().getSystemColor(SWT.COLOR_RED);
                item.setForeground(color);
            }

            //if((((TreeNode)element).getData().getProtectedAccess() != null) &&
            //Boolean.parseBoolean(((TreeNode)element).getData().getProtectedAccess())) {
            if ((((TreeNode) element).getData().getProtectedAccess() != null)
                    && (((TreeNode) element).getData().getProtectedAccess().equalsIgnoreCase("Y"))) {//protected_access()) {            
                Color color = Display.getCurrent().getSystemColor(SWT.COLOR_DARK_MAGENTA);
                item.setForeground(color);
            } else {
                Color color = Display.getCurrent().getSystemColor(SWT.COLOR_BLACK);
                item.setForeground(color);
            }

            //           if element is synonym; print label in dark blue
            //           if (((TreeNode)element).getData().getSynonymCd() != null) {
            //              if (((TreeNode)element).getData().getSynonymCd().equals("Y"))
            //              {
            //                 Color color = Display.getCurrent().getSystemColor(SWT.COLOR_DARK_BLUE);
            //                 item.setForeground(color);
            //              }
            //           }   
            return ((TreeNode) element).toString();
        }

        public Image getImage(Object element) {
            return imageRegistry.get(((TreeNode) element).getIconKey());
        }
    });
    this.viewer.setContentProvider(new ITreeContentProvider() {
        public Object[] getChildren(Object parentElement) {
            return ((TreeNode) parentElement).getChildren().toArray();
        }

        public Object getParent(Object element) {
            return ((TreeNode) element).getParent();
        }

        public boolean hasChildren(Object element) {
            return ((TreeNode) element).getChildren().size() > 0;
        }

        public Object[] getElements(Object inputElement) {
            return ((TreeNode) inputElement).getChildren().toArray();
        }

        public void dispose() {
        }

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

    this.viewer.setInput(populateRootNode());
    String version = System.getProperty("wkplServerVersion");
    double vernum = Double.parseDouble(version);
    if ((vernum >= 1.6/*1.7*/) && UserInfoBean.getInstance().isRoleInProject("DATA_LDS"/*"DATA_PROT"*/)) {
        popupMenu.add(protectAction);
        folderPopupMenu.add(protectAction);
    }

    String status = System.getProperty("errorMessage");
    if (status != null) {
        TreeNode placeholder = new TreeNode("placeholder", status, "C-ERROR");
        this.rootNode.addChild(placeholder);
        this.refresh();
        System.setProperty("errorMessage", "");
    }

    this.viewer.addTreeListener(new ITreeViewerListener() {
        public void treeExpanded(TreeExpansionEvent event) {
            final TreeNode node = (TreeNode) event.getElement();
            if (node.getData().getVisualAttributes().equals("FA"))
                node.getData().setVisualAttributes("FAO");
            else if (node.getData().getVisualAttributes().equals("CA"))
                node.getData().setVisualAttributes("CAO");
            else if (node.getData().getVisualAttributes().equals("FH"))
                node.getData().setVisualAttributes("FHO");
            else if (node.getData().getVisualAttributes().equals("CH"))
                node.getData().setVisualAttributes("CHO");
            //viewer.refresh();

            // check to see if child is a placeholder ('working...')
            //   if so, make Web Service call to update children of node

            if (node.getChildren().size() > 0) {
                TreeNode firstChild = (TreeNode) (node.getChildren().get(0));
                //if((firstChild.getData().getVisualAttributes().equals("LAO")) || (firstChild.getData().getVisualAttributes().equals("LHO")) )
                //{
                // child is a placeholder, so remove from list 
                //   update list with real children  
                //               node.getXMLData(viewer, browser).start();      
                node.getXMLData(viewer).start();
                //}

                /*else {
                   for(int i=0; i<node.getChildren().size(); i++) {
                      TreeNode child = (TreeNode)(node.getChildren().get(i));
                      if(child.getData().getVisualAttributes().equals("FAO"))
                      {
                         child.getData().setVisualAttributes("FA");
                      }
                      else if (child.getData().getVisualAttributes().equals("CAO")) {
                         child.getData().setVisualAttributes("CA");   
                      }
                      else if(child.getData().getVisualAttributes().equals("FHO"))
                      {
                         child.getData().setVisualAttributes("FH");
                      }
                      else if (child.getData().getVisualAttributes().equals("CHO")) {
                         child.getData().setVisualAttributes("CH");   
                      }
                   }
                }*/
            }
            viewer.refresh();
            viewer.expandToLevel(node, 1);
        }

        public void treeCollapsed(TreeExpansionEvent event) {
            final TreeNode node = (TreeNode) event.getElement();
            if (node.getData().getVisualAttributes().equals("FAO"))
                node.getData().setVisualAttributes("FA");
            else if (node.getData().getVisualAttributes().equals("CAO"))
                node.getData().setVisualAttributes("CA");
            else if (node.getData().getVisualAttributes().equals("FHO"))
                node.getData().setVisualAttributes("FH");
            else if (node.getData().getVisualAttributes().equals("CHO"))
                node.getData().setVisualAttributes("CH");
            viewer.collapseToLevel(node, 1);
            viewer.refresh();
        }
    });

    this.viewer.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent event) {
            TreeNode node = null;
            // if the selection is empty clear the label
            if (event.getSelection().isEmpty()) {
                setCurrentNode(null);
                return;
            }
            if (event.getSelection() instanceof IStructuredSelection) {
                IStructuredSelection selection = (IStructuredSelection) event.getSelection();
                node = (TreeNode) selection.getFirstElement();
                setCurrentNode(node);
            }

            // Case where we are expanding the node
            boolean expand = false;
            if ((node.getData().getVisualAttributes()).equals("FA")) {
                node.getData().setVisualAttributes("FAO");
                expand = true;
            } else if ((node.getData().getVisualAttributes()).equals("CA")) {
                node.getData().setVisualAttributes("CAO");
                expand = true;
            }

            else if (node.getData().getVisualAttributes().equals("FH")) {
                node.getData().setVisualAttributes("FHO");
                expand = true;
            } else if (node.getData().getVisualAttributes().equals("CH")) {
                node.getData().setVisualAttributes("CHO");
                expand = true;
            }

            if (expand == true) {
                viewer.expandToLevel(node, 1);
                viewer.refresh(node);

                // check to see if this node's child is a placeholder ('working...')
                //   if so, make Web Service call to update children of node

                if (node.getChildren().size() > 0) {
                    TreeNode firstChild = (TreeNode) (node.getChildren().get(0));
                    if ((firstChild.getData().getVisualAttributes().equals("LAO"))
                            || (firstChild.getData().getVisualAttributes().equals("LHO"))) {
                        // child is a placeholder, so remove from list 
                        //   update list with real children  
                        ////            node.getXMLData(viewer, browser).start();
                        node.getXMLData(viewer).start();
                    }

                    else {
                        for (int i = 0; i < node.getChildren().size(); i++) {
                            TreeNode child = (TreeNode) (node.getChildren().get(i));
                            if (child.getData().getVisualAttributes().equals("FAO")) {
                                child.getData().setVisualAttributes("FA");
                            } else if (child.getData().getVisualAttributes().equals("CAO")) {
                                child.getData().setVisualAttributes("CA");
                            } else if (child.getData().getVisualAttributes().equals("FHO")) {
                                child.getData().setVisualAttributes("FH");
                            } else if (child.getData().getVisualAttributes().equals("CHO")) {
                                child.getData().setVisualAttributes("CH");
                            }
                        }
                        viewer.refresh();
                    }
                }

            }

            // Case where we are collapsing the node
            else if (node.getData().getVisualAttributes().equals("FAO")) {
                node.getData().setVisualAttributes("FA");
                viewer.collapseToLevel(node, 1);
                viewer.refresh(node);
            } else if (node.getData().getVisualAttributes().equals("CAO")) {
                node.getData().setVisualAttributes("CA");
                viewer.collapseToLevel(node, 1);
                viewer.refresh(node);
            } else if (node.getData().getVisualAttributes().equals("FHO")) {
                node.getData().setVisualAttributes("FH");
                viewer.collapseToLevel(node, 1);
                viewer.refresh(node);
            } else if (node.getData().getVisualAttributes().equals("CHO")) {
                node.getData().setVisualAttributes("CH");
                viewer.collapseToLevel(node, 1);
                viewer.refresh(node);
            }
        }
    });

    //    Implement a "fake" tooltip
    final Listener labelListener = new Listener() {
        public void handleEvent(Event event) {
            Label label = (Label) event.widget;
            Shell shell = label.getShell();
            switch (event.type) {
            case SWT.MouseDown:
                Event e = new Event();
                e.item = (TreeItem) label.getData("_TREEITEM");
                //cdh@20060314 have to fix this for multi select in treeview

                // Assuming table is single select, set the selection as if
                // the mouse down event went through to the table
                (viewer.getTree()).setSelection(new TreeItem[] { (TreeItem) e.item });
                (viewer.getTree()).notifyListeners(SWT.Selection, e);
                //table.setSelection (new TableItem [] {(TableItem) e.item});
                //table.notifyListeners (SWT.Selection, e);
                // fall through
            case SWT.MouseExit:
                shell.dispose();
                break;
            }
        }
    };

    Listener viewerListener = new Listener() {
        Shell tip = null;
        Label label = null;

        public void handleEvent(Event event) {
            switch (event.type) {
            case SWT.Dispose:
            case SWT.KeyDown:
            case SWT.MouseDown:
                if (event.button == 3) // right click
                {
                    IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
                    if (selection.size() != 1)
                        return;

                    TreeNode node = (TreeNode) selection.getFirstElement();
                    if (node.getData().getProtectedAccess() != null
                            && node.getData().getProtectedAccess().equalsIgnoreCase("Y")) {
                        protectAction.setText("Clear PHI Access");
                    } else {
                        protectAction.setText("Set PHI Access");
                    }

                    if (node.getData().getVisualAttributes().equals("LA"))
                        menu.setVisible(true);
                    else if (node.getData().getVisualAttributes().startsWith("ZA"))
                        menu.setVisible(true);
                    else if (node.getData().getVisualAttributes().startsWith("F"))
                        folderMenu.setVisible(true);
                    else if (node.getData().getVisualAttributes().startsWith("C"))
                        caseMenu.setVisible(true);
                }

            case SWT.MouseMove:
            case SWT.MouseExit: {
                if (tip == null)
                    break;
                tip.dispose();
                tip = null;
                label = null;
                break;
            }
            case SWT.MouseHover: {
                TreeItem item = (viewer.getTree()).getItem(new Point(event.x, event.y));
                if (item != null) {
                    if (tip != null && !tip.isDisposed())
                        tip.dispose();
                    tip = new Shell(Display.getCurrent().getActiveShell(), SWT.ON_TOP | SWT.TOOL);
                    tip.setLayout(new FillLayout());
                    label = new Label(tip, SWT.NONE);
                    label.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_INFO_FOREGROUND));
                    label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_INFO_BACKGROUND));
                    label.setData("_TREEITEM", item);
                    label.setText((String) item.getData("TOOLTIP"));
                    //                  label.setText("Tooltip test");
                    label.addListener(SWT.MouseExit, labelListener);
                    label.addListener(SWT.MouseDown, labelListener);
                    Point size = tip.computeSize(SWT.DEFAULT, SWT.DEFAULT);
                    Rectangle rect = item.getBounds(0);
                    Point pt = viewer.getTree().toDisplay(event.x, event.y);
                    tip.setBounds(pt.x + 10, pt.y + 20, size.x, size.y);
                    tip.setVisible(true);
                }
            }
            }
        }
    };
    viewer.getTree().addListener(SWT.MouseDown, viewerListener);
    viewer.getTree().addListener(SWT.Dispose, viewerListener);
    viewer.getTree().addListener(SWT.KeyDown, viewerListener);
    viewer.getTree().addListener(SWT.MouseMove, viewerListener);
    viewer.getTree().addListener(SWT.MouseHover, viewerListener);
    viewer.getTree().addListener(SWT.MouseExit, viewerListener);

}

From source file:edu.illinois.ncsa.datawolf.executor.commandline.wizard.CommandLineWizardPage.java

License:Open Source License

public void createControl(Composite parent) {
    final Composite top = new Composite(parent, SWT.NONE);
    top.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));
    top.setLayout(new GridLayout(3, false));

    Label lbl = new Label(top, SWT.NONE);
    lbl.setLayoutData(new GridData(GridData.BEGINNING, GridData.BEGINNING, false, false));
    lbl.setText("Executable:");

    exec = new Text(top, SWT.SINGLE | SWT.BORDER);
    exec.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false));
    exec.addKeyListener(new KeyAdapter() {
        @Override/*from  w  w w .  j av a  2s .  com*/
        public void keyReleased(KeyEvent e) {
            validate();
        }
    });

    Button btn = new Button(top, SWT.NONE);
    btn.setText("...");
    btn.setLayoutData(new GridData(GridData.FILL, GridData.FILL, false, false));
    btn.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            FileDialog fd = new FileDialog(getShell(), SWT.OPEN);
            fd.setFileName(exec.getText());
            String filename = fd.open();
            if (filename != null) {
                exec.setText(filename);
                validate();
            }
        }
    });

    stdoutCheck = new Button(top, SWT.CHECK);
    stdoutCheck.setText("Capture stdout?");
    stdoutCheck.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            validate();
        }
    });

    stdout = new Text(top, SWT.SINGLE | SWT.BORDER);
    stdout.setText("stdout");
    stdout.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false, 1, 1));
    stdout.setEnabled(stdoutCheck.getSelection());
    stdout.addKeyListener(new KeyAdapter() {
        @Override
        public void keyReleased(KeyEvent e) {
            validate();
        }
    });

    joinStdoutStderrCheck = new Button(top, SWT.CHECK);
    joinStdoutStderrCheck.setText("also stderr?");
    joinStdoutStderrCheck.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            validate();
        }
    });

    stderrCheck = new Button(top, SWT.CHECK);
    stderrCheck.setText("Capture stderr?");
    stderrCheck.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            validate();
        }
    });

    stderr = new Text(top, SWT.SINGLE | SWT.BORDER);
    stderr.setText("stderr");
    stderr.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false, 2, 1));
    stderr.setEnabled(stdoutCheck.getSelection());
    stderr.addKeyListener(new KeyAdapter() {
        @Override
        public void keyReleased(KeyEvent e) {
            validate();
        }
    });

    lbl = new Label(top, SWT.NONE);
    lbl.setLayoutData(new GridData(GridData.BEGINNING, GridData.BEGINNING, false, false));
    lbl.setText("Options:");

    viewer = new ListViewer(top, SWT.SINGLE | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL | SWT.FULL_SELECTION);
    viewer.setUseHashlookup(true);
    viewer.getList().setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));
    viewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            validate();
        }
    });

    viewer.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent event) {
            CommandLineOption option = (CommandLineOption) ((IStructuredSelection) viewer.getSelection())
                    .getFirstElement();
            switch (option.getType()) {
            case VALUE:
                if (new CommandLineValueDialog(top.getShell(), option).open() == Dialog.OK) {
                    viewer.refresh();
                    validate();
                }
                break;
            case PARAMETER:
                if (new CommandLineParameterDialog(top.getShell(), option, parameters.get(option))
                        .open() == Dialog.OK) {
                    viewer.refresh();
                    validate();
                }
                break;
            case DATA:
                if (new CommandLineDataDialog(top.getShell(), option, data.get(option)).open() == Dialog.OK) {
                    viewer.refresh();
                    validate();
                }
                break;
            }
        }
    });

    // content
    viewer.setContentProvider(new IStructuredContentProvider() {
        public Object[] getElements(Object inputElement) {
            return options.toArray();
        }

        public void dispose() {
        }

        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }
    });
    viewer.setLabelProvider(new LabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof CommandLineOption) {
                return getOptionString((CommandLineOption) element);
            }
            return element.toString();
        }
    });

    Composite buttons = new Composite(top, SWT.NULL);
    buttons.setLayout(new GridLayout());

    addValue = new Button(buttons, SWT.PUSH);
    addValue.setLayoutData(new GridData(GridData.FILL, GridData.FILL, false, false));
    addValue.setText("Add Value");
    addValue.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            CommandLineOption option = new CommandLineOption();
            CommandLineValueDialog dlg = new CommandLineValueDialog(top.getShell(), option);
            if (dlg.open() == Dialog.OK) {
                options.add(option);
                viewer.refresh();
                validate();
            }
        }
    });

    addParam = new Button(buttons, SWT.PUSH);
    addParam.setLayoutData(new GridData(GridData.FILL, GridData.FILL, false, false));
    addParam.setText("Add Parameter");
    addParam.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            CommandLineOption option = new CommandLineOption();
            WorkflowToolParameter param = new WorkflowToolParameter();
            CommandLineParameterDialog dlg = new CommandLineParameterDialog(top.getShell(), option, param);
            if (dlg.open() == Dialog.OK) {
                options.add(option);
                parameters.put(option, param);
                viewer.refresh();
                validate();
            }
        }
    });

    addData = new Button(buttons, SWT.PUSH);
    addData.setLayoutData(new GridData(GridData.FILL, GridData.FILL, false, false));
    addData.setText("Add Data");
    addData.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            CommandLineOption option = new CommandLineOption();
            WorkflowToolData data = new WorkflowToolData();
            CommandLineDataDialog dlg = new CommandLineDataDialog(top.getShell(), option, data);
            if (dlg.open() == Dialog.OK) {
                options.add(option);
                CommandLineWizardPage.this.data.put(option, data);
                viewer.refresh();
                validate();
            }
        }
    });

    edit = new Button(buttons, SWT.PUSH);
    edit.setLayoutData(new GridData(GridData.FILL, GridData.FILL, false, false));
    edit.setText("Edit");
    edit.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            CommandLineOption option = (CommandLineOption) ((IStructuredSelection) viewer.getSelection())
                    .getFirstElement();
            switch (option.getType()) {
            case VALUE:
                if (new CommandLineValueDialog(top.getShell(), option).open() == Dialog.OK) {
                    viewer.refresh();
                    validate();
                }
                break;
            case PARAMETER:
                if (new CommandLineParameterDialog(top.getShell(), option, parameters.get(option))
                        .open() == Dialog.OK) {
                    viewer.refresh();
                    validate();
                }
                break;
            case DATA:
                if (new CommandLineDataDialog(top.getShell(), option, data.get(option)).open() == Dialog.OK) {
                    viewer.refresh();
                    validate();
                }
                break;
            }
        }
    });

    del = new Button(buttons, SWT.PUSH);
    del.setLayoutData(new GridData(GridData.FILL, GridData.FILL, false, false));
    del.setText("Delete");
    del.setEnabled(false);
    del.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            Object obj = ((IStructuredSelection) viewer.getSelection()).getFirstElement();
            options.remove(obj);
            viewer.remove(obj);
            validate();
        }
    });

    up = new Button(buttons, SWT.PUSH);
    up.setLayoutData(new GridData(GridData.FILL, GridData.FILL, false, false));
    up.setText("Up");
    up.setEnabled(false);
    up.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            int idx = viewer.getList().getSelectionIndex();
            CommandLineOption o = options.get(idx);
            options.set(idx, options.get(idx - 1));
            options.set(idx - 1, o);
            viewer.refresh();
            validate();
        }
    });

    down = new Button(buttons, SWT.PUSH);
    down.setLayoutData(new GridData(GridData.FILL, GridData.FILL, false, false));
    down.setText("Down");
    down.setEnabled(false);
    down.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            int idx = viewer.getList().getSelectionIndex();
            CommandLineOption o = options.get(idx);
            options.set(idx, options.get(idx + 1));
            options.set(idx + 1, o);
            viewer.refresh();
            validate();
        }
    });

    commandline = new Text(top, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.WRAP);
    commandline.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true, 3, 1));
    commandline.setEditable(false);

    // set values from old tool
    if (oldtool != null) {
        Transaction transaction = null;
        try {
            transaction = SpringData.getTransaction();
            transaction.start();

            CommandLineImplementation impl = SpringData.JSONToObject(oldtool.getImplementation(),
                    CommandLineImplementation.class);
            exec.setText(impl.getExecutable());
            //          waitGUICheck.setSelection(impl.isGuiwait());
            if (impl.getCaptureStdOut() != null) {
                stdoutCheck.setSelection(true);
                //          oldtool.get
                //          WorkflowToolDataBean wtdb = oldtool.getOutput(oldexternal.getCaptureStdout().getRefid());
                //          stdout.setText(wtdb.getTitle());
            }

            joinStdoutStderrCheck.setSelection(impl.isJoinStdOutStdErr());

            if (impl.getCaptureStdErr() != null) {
                stderrCheck.setSelection(true);
            }

            //          ArrayList<OptionOrder> options = new ArrayList<OptionOrder>();
            //          for (Cmdoption cmdopt : oldexternal.getOption()) {
            //              for (Optionvalue opt : cmdopt.getValue()) {
            //                  ToolOption to = new ToolOption();
            //                  to.setType(ToolOptionType.VALUE);
            //                  if (opt.getFlag() != null) {
            //                      to.setFlag(opt.getFlag());
            //                  }
            //                  if (opt.getValue() != null) {
            //                      to.setValue(opt.getValue());
            //                  }
            //                  options.add(new OptionOrder(opt.getOrder(), to));
            //              }
            //              for (Optionparameter opt : cmdopt.getParameter()) {
            //                  ToolOption to = new ToolOption();
            //                  to.setType(ToolOptionType.PARAMETER);
            //                  if (opt.getFlag() != null) {
            //                      to.setFlag(opt.getFlag());
            //                  }
            //                  to.setParameter(oldtool.getParameter(opt.getRefid()));
            //                  options.add(new OptionOrder(opt.getOrder(), to));
            //              }
            //              for (Optiondata opt : cmdopt.getData()) {
            //                  if (opt.getInput() != null) {
            //                      ToolOption to = new ToolOption();
            //                      to.setType(ToolOptionType.INPUT);
            //                      if (opt.getFlag() != null) {
            //                          to.setFlag(opt.getFlag());
            //                      }
            //                      ToolInput input = new ToolInput();
            //                      input.setCommandLine(opt.isCommandline());
            //                      input.setInput(oldtool.getInput(opt.getInput()));
            //                      to.setInput(input);
            //                      if (opt.getOutput() != null) {
            //                          input.setAlsoOutput(true);
            //                          input.setOutput(oldtool.getOutput(opt.getOutput()));
            //                      }
            //                      options.add(new OptionOrder(opt.getOrder(), to));
            //                  } else {
            //                      ToolOption to = new ToolOption();
            //                      to.setType(ToolOptionType.OUTPUT);
            //                      if (opt.getFlag() != null) {
            //                          to.setFlag(opt.getFlag());
            //                      }
            //                      ToolOutput out = new ToolOutput();
            //                      out.setCommandLine(opt.isCommandline());
            //                      out.setOutput(oldtool.getOutput(opt.getOutput()));
            //                      to.setOutput(out);
            //                      options.add(new OptionOrder(opt.getOrder(), to));
            //                  }
            //              }

            transaction.commit();
        } catch (Exception exc) {
            logger.warn("Could nto get information from old tool.", exc);
        }
    }

    viewer.setInput(options);
    validate();
    setControl(top);
}

From source file:edu.illinois.ncsa.datawolf.executor.commandline.wizard.ToolResourceWizardPage.java

License:Open Source License

public void createControl(Composite parent) {
    final Composite top = new Composite(parent, SWT.NONE);
    top.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));
    top.setLayout(new GridLayout(3, false));

    Label lbl = new Label(top, SWT.NONE);
    lbl.setLayoutData(new GridData(GridData.BEGINNING, GridData.BEGINNING, false, false));
    lbl.setText("Files:");

    filelist = new ListViewer(top);
    filelist.getControl().setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));
    filelist.setContentProvider(new IStructuredContentProvider() {
        public void dispose() {
        }/*from   w w w  .ja  va  2 s .co m*/

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

        public Object[] getElements(Object inputElement) {
            return fileDescriptors.toArray(new FileDescriptor[fileDescriptors.size()]);
        }
    });
    filelist.setInput(fileDescriptors);
    filelist.setLabelProvider(new LabelProvider());
    filelist.getList().addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            validate();
        }
    });

    if (oldtool != null) {
        for (FileDescriptor fd : oldtool.getBlobs()) {
            fileDescriptors.add(fd);
        }
        filelist.refresh();
    }

    Composite buttons = new Composite(top, SWT.NONE);
    buttons.setLayoutData(new GridData(GridData.FILL, GridData.FILL, false, true));
    GridLayout gl = new GridLayout(1, false);
    gl.marginWidth = 0;
    buttons.setLayout(gl);

    add = new Button(buttons, SWT.PUSH);
    add.setLayoutData(new GridData(GridData.FILL, GridData.FILL, false, false));
    add.setText("Add...");
    add.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            FileDialog fd = new FileDialog(top.getShell(), SWT.MULTI);
            fd.setFilterExtensions(ext.toArray(new String[ext.size()]));
            fd.setFilterNames(name.toArray(new String[name.size()]));
            fd.setText("Select files to add:");
            if (fd.open() != null) {
                for (String filename : fd.getFileNames()) {
                    boolean found = false;
                    for (FileDescriptor desc : fileDescriptors) {
                        if (desc.getId().equals(UNSAVED_DATA) && desc.getFilename().equals(filename)) {
                            found = true;
                            break;
                        }
                    }
                    if (!found) {
                        FileDescriptor desc = new FileDescriptor();
                        desc.setId(UNSAVED_DATA);
                        desc.setFilename(filename);
                        desc.setDataURL("file:" + fd.getFilterPath() + File.separator + filename);
                        fileDescriptors.add(desc);
                    }
                }
            }
            filelist.refresh();
            validate();
        }
    });

    del = new Button(buttons, SWT.PUSH);
    del.setLayoutData(new GridData(GridData.FILL, GridData.FILL, false, false));
    del.setText("Remove");
    del.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            fileDescriptors.remove(filelist.getList().getSelectionIndices());
            validate();
        }
    });

    validate();
    setControl(top);
}

From source file:edu.illinois.ncsa.datawolf.executor.java.wizard.ToolSelectWizardPage.java

License:Open Source License

public void createControl(Composite parent) {
    final Composite top = new Composite(parent, SWT.NONE);
    top.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));
    top.setLayout(new GridLayout(2, false));

    Label lbl = new Label(top, SWT.NONE);
    lbl.setLayoutData(new GridData(GridData.BEGINNING, GridData.BEGINNING, false, false, 2, 1));
    lbl.setText("Available tools");

    int selection = (oldtool == null) ? SWT.MULTI : SWT.SINGLE;
    lvTools = new ListViewer(top, selection | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
    lvTools.getList().setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true, 2, 1));
    lvTools.setContentProvider(new IStructuredContentProvider() {
        public Object[] getElements(Object inputElement) {
            return tools.toArray();
        }/*  w  ww .j a  va  2s  . co m*/

        public void dispose() {
        }

        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }
    });
    lvTools.setLabelProvider(new LabelProvider());
    lvTools.setInput(tools);
    lvTools.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            validate();
        }
    });

    lbl = new Label(top, SWT.NONE);
    lbl.setLayoutData(new GridData(GridData.BEGINNING, GridData.BEGINNING, false, false));
    lbl.setText("Tool Name");

    txtName = new Text(top, SWT.NONE | SWT.BORDER | SWT.SINGLE);
    txtName.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false));
    txtName.setEditable(false);

    lbl = new Label(top, SWT.NONE);
    lbl.setLayoutData(new GridData(GridData.BEGINNING, GridData.BEGINNING, false, false));
    lbl.setText("Tool Version");

    txtVersion = new Text(top, SWT.NONE | SWT.BORDER | SWT.SINGLE);
    txtVersion.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false));
    txtVersion.setEditable(false);

    lbl = new Label(top, SWT.NONE);
    lbl.setLayoutData(new GridData(GridData.BEGINNING, GridData.BEGINNING, false, false, 2, 1));
    lbl.setText("Tool Description");

    txtDescription = new Text(top, SWT.NONE | SWT.BORDER | SWT.MULTI);
    txtDescription.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true, 2, 1));
    txtDescription.setEditable(false);

    validate();
    setControl(top);
}