Example usage for com.intellij.openapi.actionSystem DefaultActionGroup DefaultActionGroup

List of usage examples for com.intellij.openapi.actionSystem DefaultActionGroup DefaultActionGroup

Introduction

In this page you can find the example usage for com.intellij.openapi.actionSystem DefaultActionGroup DefaultActionGroup.

Prototype

public DefaultActionGroup(@NotNull List<? extends AnAction> actions) 

Source Link

Document

Creates an action group containing the specified actions.

Usage

From source file:cn.fishy.plugin.idea.ponytail.Console.java

License:Apache License

private DefaultActionGroup createPopupActions(ActionManager actionManager, ClearLogAction action) {
    AnAction[] children = ((ActionGroup) actionManager.getAction(IdeActions.GROUP_CONSOLE_EDITOR_POPUP))
            .getChildren(null);/*w  w w.  j  av  a  2  s  . c om*/
    DefaultActionGroup group = new DefaultActionGroup(children);
    group.addSeparator();
    group.add(action);
    return group;
}

From source file:com.android.tools.idea.editors.hprof.HprofView.java

License:Apache License

public HprofView(@NotNull Project project, @NotNull HprofEditor editor, @NotNull Snapshot snapshot) {
    JBPanel treePanel = new JBPanel(new BorderLayout());
    treePanel.setBackground(JBColor.background());

    mySnapshot = snapshot;/*from   w  w  w  . ja  v  a2s  .  com*/

    assert (mySnapshot.getHeaps().size() > 0);
    Heap currentHeap = null;
    for (Heap heap : mySnapshot.getHeaps()) {
        if ("app".equals(heap.getName())) {
            currentHeap = heap;
            break;
        } else if (currentHeap == null) {
            currentHeap = heap;
        }
    }

    if (currentHeap == null) {
        editor.setInvalid();
        // TODO: Add a simple panel to show that the hprof file is invalid.
        throw new IllegalStateException("Invalid heap given to HprofViewPanel.");
    }
    mySelectionModel = new SelectionModel(currentHeap);
    Disposer.register(this, mySelectionModel);

    DefaultActionGroup group = new DefaultActionGroup(new ComboBoxAction() {
        @NotNull
        @Override
        protected DefaultActionGroup createPopupActionGroup(JComponent button) {
            DefaultActionGroup group = new DefaultActionGroup();
            assert mySnapshot != null;
            for (final Heap heap : mySnapshot.getHeaps()) {
                if ("default".equals(heap.getName()) && heap.getClasses().isEmpty()
                        && heap.getInstancesCount() == 0) {
                    continue;
                }
                group.add(new AnAction(StringUtil.capitalize(heap.getName() + " heap")) {
                    @Override
                    public void actionPerformed(AnActionEvent e) {
                        mySelectionModel.setHeap(heap);
                    }
                });
            }
            return group;
        }

        @Override
        public void update(AnActionEvent e) {
            super.update(e);
            if (mySnapshot != null) { // Perform a check since the IDE sometimes updates the buttons after the view/snapshot is disposed.
                getTemplatePresentation()
                        .setText(StringUtil.capitalize(mySelectionModel.getHeap().getName() + " heap"));
                e.getPresentation()
                        .setText(StringUtil.capitalize(mySelectionModel.getHeap().getName() + " heap"));
            }
        }
    });

    final InstanceReferenceTreeView referenceTree = new InstanceReferenceTreeView(project, mySelectionModel);
    treePanel.add(referenceTree.getComponent(), BorderLayout.CENTER);

    final InstancesTreeView instancesTreeView = new InstancesTreeView(project, mySelectionModel);
    Disposer.register(this, instancesTreeView);

    final ClassesTreeView classesTreeView = new ClassesTreeView(project, group, mySelectionModel);
    JBSplitter splitter = createNavigationSplitter(classesTreeView.getComponent(),
            instancesTreeView.getComponent());
    Disposer.register(this, classesTreeView);

    GoToInstanceListener goToInstanceListener = new GoToInstanceListener() {
        @Override
        public void goToInstance(@NotNull Instance instance) {
            ClassObj classObj = instance instanceof ClassObj ? (ClassObj) instance : instance.getClassObj();
            mySelectionModel.setHeap(instance.getHeap());
            mySelectionModel.setClassObj(classObj);
            classesTreeView.requestFocus();
            if (instance instanceof ClassInstance || instance instanceof ArrayInstance) {
                mySelectionModel.setInstance(instance);
                instancesTreeView.requestFocus();
            }
        }
    };
    referenceTree.addGoToInstanceListener(goToInstanceListener);
    instancesTreeView.addGoToInstanceListener(goToInstanceListener);

    JBPanel classPanel = new JBPanel(new BorderLayout());
    classPanel.add(splitter, BorderLayout.CENTER);

    JBSplitter mainSplitter = new JBSplitter(true);
    mainSplitter.setFirstComponent(classPanel);
    mainSplitter.setSecondComponent(treePanel);
    mainSplitter.setDividerWidth(DIVIDER_WIDTH);

    myContainer = new JPanel(new LightFillLayout());

    ActionToolbar toolbar = ActionManager.getInstance().createActionToolbar(ActionPlaces.UNKNOWN, group, true);
    toolbar.getComponent().setName(TOOLBAR_NAME);
    myContainer.add(toolbar.getComponent(), BorderLayout.NORTH);
    myContainer.add(mainSplitter);

    group.add(new Separator());
    group.add(new BrowserHelpAction("Hprof Viewer", "http://developer.android.com/r/studio-ui/am-hprof.html"));
}

From source file:com.android.tools.idea.editors.hprof.HprofViewPanel.java

License:Apache License

public HprofViewPanel(@NotNull final Project project, @NotNull HprofEditor editor,
        @NotNull final Snapshot snapshot) {
    JBPanel treePanel = new JBPanel(new BorderLayout());
    treePanel.setBackground(JBColor.background());

    assert (snapshot.getHeaps().size() > 0);
    Heap currentHeap = null;//  w ww. java 2 s  .  c  o m
    for (Heap heap : snapshot.getHeaps()) {
        if ("app".equals(heap.getName())) {
            currentHeap = heap;
            break;
        } else if (currentHeap == null) {
            currentHeap = heap;
        }
    }

    if (currentHeap == null) {
        editor.setInvalid();
        return;
    }
    mySelectionModel = new SelectionModel(currentHeap);

    final InstanceReferenceTree referenceTree = new InstanceReferenceTree(mySelectionModel);
    treePanel.add(referenceTree.getComponent(), BorderLayout.CENTER);

    final InstancesTree instancesTree = new InstancesTree(project, mySelectionModel);
    final ClassesTreeView classesTreeView = new ClassesTreeView(mySelectionModel);
    JBSplitter splitter = createNavigationSplitter(classesTreeView.getComponent(),
            instancesTree.getComponent());

    JBPanel classPanel = new JBPanel(new BorderLayout());
    classPanel.add(splitter, BorderLayout.CENTER);

    DefaultActionGroup group = new DefaultActionGroup(new ComboBoxAction() {
        @NotNull
        @Override
        protected DefaultActionGroup createPopupActionGroup(JComponent button) {
            DefaultActionGroup group = new DefaultActionGroup();
            for (final Heap heap : snapshot.getHeaps()) {
                if ("default".equals(heap.getName()) && heap.getClasses().isEmpty()
                        && heap.getInstances().isEmpty()) {
                    continue;
                }
                group.add(new AnAction(heap.getName() + " heap") {
                    @Override
                    public void actionPerformed(AnActionEvent e) {
                        mySelectionModel.setHeap(heap);
                    }
                });
            }
            return group;
        }

        @Override
        public void update(AnActionEvent e) {
            super.update(e);
            getTemplatePresentation().setText(mySelectionModel.getHeap().getName() + " heap");
            e.getPresentation().setText(mySelectionModel.getHeap().getName() + " heap");
        }
    });

    ActionToolbar toolbar = ActionManager.getInstance().createActionToolbar(ActionPlaces.UNKNOWN, group, true);
    classPanel.add(toolbar.getComponent(), BorderLayout.NORTH);

    JBSplitter mainSplitter = new JBSplitter(true);
    mainSplitter.setFirstComponent(classPanel);
    mainSplitter.setSecondComponent(treePanel);
    mainSplitter.setDividerWidth(DIVIDER_WIDTH);

    myContainer = new JPanel(new BorderLayout());
    myContainer.add(mainSplitter);
}

From source file:com.android.tools.idea.editors.hprof.views.ClassesTreeView.java

License:Apache License

public ClassesTreeView(@NotNull Project project, @NotNull DefaultActionGroup editorActionGroup,
        @NotNull final SelectionModel selectionModel) {
    myProject = project;/*from  w w w .  j  ava  2s . c om*/

    myRoot = new HeapPackageNode(null, "");
    myTreeModel = new DefaultTreeModel(myRoot);
    myTree = new Tree(myTreeModel);
    myTree.setName(TREE_NAME);
    myDisplayMode = DisplayMode.LIST;
    myTree.setRootVisible(false);
    myTree.setShowsRootHandles(false);
    myTree.setLargeModel(true);

    myTree.putClientProperty(DataManager.CLIENT_PROPERTY_DATA_PROVIDER, this);
    JBList contextActionList = new JBList(new EditMultipleSourcesAction());
    JBPopupFactory.getInstance().createListPopupBuilder(contextActionList);
    final DefaultActionGroup popupGroup = new DefaultActionGroup(new EditMultipleSourcesAction());
    myTree.addMouseListener(new PopupHandler() {
        @Override
        public void invokePopup(Component comp, int x, int y) {
            ActionManager.getInstance().createActionPopupMenu(ActionPlaces.UNKNOWN, popupGroup).getComponent()
                    .show(comp, x, y);
        }
    });

    editorActionGroup.addAction(new ComboBoxAction() {
        @NotNull
        @Override
        protected DefaultActionGroup createPopupActionGroup(JComponent button) {
            DefaultActionGroup group = new DefaultActionGroup();
            for (final DisplayMode mode : DisplayMode.values()) {
                group.add(new AnAction(mode.toString()) {
                    @Override
                    public void actionPerformed(AnActionEvent e) {
                        myDisplayMode = mode;
                        boolean isTreeMode = myDisplayMode == DisplayMode.TREE;
                        myTree.setShowsRootHandles(isTreeMode);
                        if (isTreeMode) {
                            myTreeIndex.buildTree(mySelectedHeapId);
                        } else {
                            myListIndex.buildList(myRoot);
                        }

                        restoreViewState(selectionModel);
                    }
                });
            }
            return group;
        }

        @Override
        public void update(AnActionEvent e) {
            super.update(e);
            getTemplatePresentation().setText(myDisplayMode.toString());
            e.getPresentation().setText(myDisplayMode.toString());
        }
    });

    myListIndex = new ListIndex();
    myTreeIndex = new TreeIndex();
    selectionModel.addListener(myListIndex); // Add list index first, since that always updates; and tree index depends on it.
    selectionModel.addListener(myTreeIndex);

    selectionModel.addListener(new SelectionModel.SelectionListener() {
        @Override
        public void onHeapChanged(@NotNull Heap heap) {
            mySelectedHeapId = heap.getId();

            assert myListIndex.myHeapId == mySelectedHeapId;
            if (myDisplayMode == DisplayMode.LIST) {
                myListIndex.buildList(myRoot);
            } else if (myDisplayMode == DisplayMode.TREE) {
                myTreeIndex.buildTree(mySelectedHeapId);
            }

            restoreViewState(selectionModel);
        }

        @Override
        public void onClassObjChanged(@Nullable ClassObj classObj) {
            TreeNode nodeToSelect = null;
            if (classObj != null) {
                nodeToSelect = findClassObjNode(classObj);
            }

            if (nodeToSelect != null) {
                TreePath pathToSelect = new TreePath(myTreeModel.getPathToRoot(nodeToSelect));
                myTree.setSelectionPath(pathToSelect);
                myTree.scrollPathToVisible(pathToSelect);
            }
        }

        @Override
        public void onInstanceChanged(@Nullable Instance instance) {

        }
    });

    myTree.addTreeSelectionListener(e -> {
        TreePath path = e.getPath();
        if (!e.isAddedPath()) {
            return;
        }

        if (path == null || path.getPathCount() < 2) {
            selectionModel.setClassObj(null);
            return;
        }

        assert path.getLastPathComponent() instanceof HeapNode;
        HeapNode heapNode = (HeapNode) path.getLastPathComponent();
        if (heapNode instanceof HeapClassObjNode) {
            selectionModel.setClassObj(((HeapClassObjNode) heapNode).getClassObj());
        }
    });

    ColumnTreeBuilder builder = new ColumnTreeBuilder(myTree)
            .addColumn(new ColumnTreeBuilder.ColumnBuilder().setName("Class Name").setPreferredWidth(800)
                    .setHeaderAlignment(SwingConstants.LEFT).setComparator((HeapNode a, HeapNode b) -> {
                        int valueA = a instanceof HeapPackageNode ? 0 : 1;
                        int valueB = b instanceof HeapPackageNode ? 0 : 1;
                        if (valueA != valueB) {
                            return valueA - valueB;
                        }
                        return compareNames(a, b);
                    }).setRenderer(new ColoredTreeCellRenderer() {
                        @Override
                        public void customizeCellRenderer(@NotNull JTree tree, Object value, boolean selected,
                                boolean expanded, boolean leaf, int row, boolean hasFocus) {
                            if (value instanceof HeapClassObjNode) {
                                ClassObj clazz = ((HeapClassObjNode) value).getClassObj();
                                String name = clazz.getClassName();
                                String pkg = null;
                                int i = name.lastIndexOf(".");
                                if (i != -1) {
                                    pkg = name.substring(0, i);
                                    name = name.substring(i + 1);
                                }
                                append(name, SimpleTextAttributes.REGULAR_ATTRIBUTES);
                                if (pkg != null) {
                                    append(" (" + pkg + ")",
                                            new SimpleTextAttributes(Font.PLAIN, JBColor.GRAY));
                                }
                                setTransparentIconBackground(true);
                                setIcon(PlatformIcons.CLASS_ICON);
                                // TODO reformat anonymous classes (ANONYMOUS_CLASS_ICON) to match IJ.
                            } else if (value instanceof HeapNode) {
                                append(((HeapNode) value).getSimpleName(),
                                        SimpleTextAttributes.REGULAR_ATTRIBUTES);
                                setTransparentIconBackground(true);
                                setIcon(PlatformIcons.PACKAGE_ICON);
                            } else {
                                append("This should not be rendered");
                            }
                        }
                    }))
            .addColumn(new ColumnTreeBuilder.ColumnBuilder().setName("Total Count").setPreferredWidth(100)
                    .setHeaderAlignment(SwingConstants.RIGHT).setComparator((HeapNode a, HeapNode b) -> {
                        int result = a.getTotalCount() - b.getTotalCount();
                        return result == 0 ? compareNames(a, b) : result;
                    }).setRenderer(new ColoredTreeCellRenderer() {
                        @Override
                        public void customizeCellRenderer(@NotNull JTree tree, Object value, boolean selected,
                                boolean expanded, boolean leaf, int row, boolean hasFocus) {
                            if (value instanceof HeapNode) {
                                append(Integer.toString(((HeapNode) value).getTotalCount()));
                            }
                            setTextAlign(SwingConstants.RIGHT);
                        }
                    }))
            .addColumn(new ColumnTreeBuilder.ColumnBuilder().setName("Heap Count").setPreferredWidth(100)
                    .setHeaderAlignment(SwingConstants.RIGHT).setComparator((HeapNode a, HeapNode b) -> {
                        int result = a.getHeapInstancesCount(mySelectedHeapId)
                                - b.getHeapInstancesCount(mySelectedHeapId);
                        return result == 0 ? compareNames(a, b) : result;
                    }).setRenderer(new ColoredTreeCellRenderer() {
                        @Override
                        public void customizeCellRenderer(@NotNull JTree tree, Object value, boolean selected,
                                boolean expanded, boolean leaf, int row, boolean hasFocus) {
                            if (value instanceof HeapNode) {
                                append(Integer
                                        .toString(((HeapNode) value).getHeapInstancesCount(mySelectedHeapId)));
                            }
                            setTextAlign(SwingConstants.RIGHT);
                        }
                    }))
            .addColumn(new ColumnTreeBuilder.ColumnBuilder().setName("Sizeof").setPreferredWidth(80)
                    .setHeaderAlignment(SwingConstants.RIGHT).setComparator((HeapNode a, HeapNode b) -> {
                        int sizeA = a.getInstanceSize();
                        int sizeB = b.getInstanceSize();
                        if (sizeA < 0 && sizeB < 0) {
                            return compareNames(a, b);
                        }
                        int result = sizeA - sizeB;
                        return result == 0 ? compareNames(a, b) : result;
                    }).setRenderer(new ColoredTreeCellRenderer() {
                        @Override
                        public void customizeCellRenderer(@NotNull JTree tree, Object value, boolean selected,
                                boolean expanded, boolean leaf, int row, boolean hasFocus) {
                            if (value instanceof HeapClassObjNode) {
                                append(Integer.toString(((HeapClassObjNode) value).getInstanceSize()));
                            }
                            setTextAlign(SwingConstants.RIGHT);
                        }
                    }))
            .addColumn(new ColumnTreeBuilder.ColumnBuilder().setName("Shallow Size").setPreferredWidth(100)
                    .setHeaderAlignment(SwingConstants.RIGHT).setComparator((HeapNode a, HeapNode b) -> {
                        int result = a.getShallowSize(mySelectedHeapId) - b.getShallowSize(mySelectedHeapId);
                        return result == 0 ? compareNames(a, b) : result;
                    }).setRenderer(new ColoredTreeCellRenderer() {
                        @Override
                        public void customizeCellRenderer(@NotNull JTree tree, Object value, boolean selected,
                                boolean expanded, boolean leaf, int row, boolean hasFocus) {
                            if (value instanceof HeapNode) {
                                append(Integer.toString(((HeapNode) value).getShallowSize(mySelectedHeapId)));
                            }
                            setTextAlign(SwingConstants.RIGHT);
                        }
                    }))
            .addColumn(new ColumnTreeBuilder.ColumnBuilder().setName("Retained Size").setPreferredWidth(120)
                    .setHeaderAlignment(SwingConstants.RIGHT).setInitialOrder(SortOrder.DESCENDING)
                    .setComparator((HeapNode a, HeapNode b) -> {
                        long result = a.getRetainedSize() - b.getRetainedSize();
                        return result == 0 ? compareNames(a, b) : (result > 0 ? 1 : -1);
                    }).setRenderer(new ColoredTreeCellRenderer() {
                        @Override
                        public void customizeCellRenderer(@NotNull JTree tree, Object value, boolean selected,
                                boolean expanded, boolean leaf, int row, boolean hasFocus) {
                            if (value instanceof HeapNode) {
                                append(Long.toString(((HeapNode) value).getRetainedSize()));
                            }
                            setTextAlign(SwingConstants.RIGHT);
                        }
                    }));

    //noinspection NullableProblems
    builder.setTreeSorter(new ColumnTreeBuilder.TreeSorter<HeapNode>() {
        @Override
        public void sort(@NotNull Comparator<HeapNode> comparator, @NotNull SortOrder sortOrder) {
            if (myComparator != comparator) {
                myComparator = comparator;

                selectionModel.setSelectionLocked(true);
                TreePath selectionPath = myTree.getSelectionPath();
                sortTree(myRoot);
                myTreeModel.nodeStructureChanged(myRoot);
                myTree.setSelectionPath(selectionPath);
                myTree.scrollPathToVisible(selectionPath);
                selectionModel.setSelectionLocked(false);
            }
        }
    });

    myColumnTree = builder.build();
    installTreeSpeedSearch();
}

From source file:com.android.tools.idea.editors.hprof.views.InstanceReferenceTreeView.java

License:Apache License

public InstanceReferenceTreeView(@NotNull Project project, @NotNull SelectionModel selectionModel) {
    myProject = project;//from  w  w  w  . j a v  a2  s . c  om

    final TreeBuilder model = new TreeBuilder(null) {
        @Override
        public void buildChildren(TreeBuilderNode node) {
            if (node == getRoot()) {
                node.add(new InstanceNode(this, myInstance));
            } else {
                addReferences((InstanceNode) node);
            }
            nodeChanged(node);
        }

        @Override
        public boolean isExpandable(TreeBuilderNode node) {
            if (node == getRoot()) {
                return node.getChildCount() > 0;
            } else {
                Instance instance = (Instance) node.getUserObject();
                return instance.getHardReverseReferences().size() > 0
                        || instance.getSoftReverseReferences() != null;
            }
        }
    };

    // Set the root to a dummy object since the TreeBuilder implementation is very buggy.
    model.setRoot(new TreeBuilderNode(null) {
        @Override
        protected TreeBuilder getTreeBuilder() {
            return model;
        }
    });

    myTree = new Tree(model);
    myTree.setName(TREE_NAME);
    myTree.setRootVisible(false);
    myTree.setShowsRootHandles(true);
    myTree.setLargeModel(true);
    myTree.addTreeExpansionListener(new TreeExpansionListener() {
        private boolean myIsCurrentlyExpanding = false;

        @Override
        public void treeExpanded(TreeExpansionEvent event) {
            if (myIsCurrentlyExpanding) {
                return;
            }

            myIsCurrentlyExpanding = true;
            InstanceNode node = (InstanceNode) event.getPath().getLastPathComponent();
            InstanceNode currentNode = node;
            int recursiveDepth = MAX_AUTO_EXPANSION_DEPTH;
            while (currentNode.getChildCount() == 1 && recursiveDepth > 0) {
                InstanceNode childNode = (InstanceNode) currentNode.getChildAt(0);
                if (childNode.isLeaf() || childNode.getInstance().getDistanceToGcRoot() == 0) {
                    break;
                }
                currentNode = childNode;
                Instance currentInstance = currentNode.getInstance();
                --recursiveDepth;
                if (currentInstance.getDistanceToGcRoot() == 0) {
                    break;
                }
            }

            if (node != currentNode) {
                myTree.expandPath(new TreePath(currentNode.getPath()));
            }
            myIsCurrentlyExpanding = false;
        }

        @Override
        public void treeCollapsed(TreeExpansionEvent event) {

        }
    });

    myTree.putClientProperty(DataManager.CLIENT_PROPERTY_DATA_PROVIDER, this);
    JBList contextActionList = new JBList(new EditMultipleSourcesAction());
    JBPopupFactory.getInstance().createListPopupBuilder(contextActionList);
    final DefaultActionGroup popupGroup = new DefaultActionGroup(new EditMultipleSourcesAction());
    myGoToInstanceAction = new GoToInstanceAction(myTree);
    popupGroup.add(myGoToInstanceAction);
    myTree.addMouseListener(new PopupHandler() {
        @Override
        public void invokePopup(Component comp, int x, int y) {
            ActionManager.getInstance().createActionPopupMenu(ActionPlaces.UNKNOWN, popupGroup).getComponent()
                    .show(comp, x, y);
        }
    });

    ColumnTreeBuilder builder = new ColumnTreeBuilder(myTree)
            .addColumn(new ColumnTreeBuilder.ColumnBuilder().setName("Reference Tree").setPreferredWidth(1200)
                    .setHeaderAlignment(SwingConstants.LEFT).setRenderer(new ColoredTreeCellRenderer() {
                        @Override
                        public void customizeCellRenderer(@NotNull JTree tree, @Nullable Object value,
                                boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
                            if (value instanceof InstanceNode) {
                                InstanceNode node = (InstanceNode) value;
                                Instance instance = node.getInstance();

                                String[] referenceVarNames = node.getVarNames();
                                if (referenceVarNames.length > 0) {
                                    if (instance instanceof ArrayInstance) {
                                        append(StringUtil.pluralize("Index", referenceVarNames.length),
                                                SimpleTextAttributes.GRAYED_ITALIC_ATTRIBUTES);
                                        append(" ", SimpleTextAttributes.REGULAR_ATTRIBUTES);
                                    }

                                    StringBuilder builder = new StringBuilder();
                                    builder.append(referenceVarNames[0]);
                                    for (int i = 1; i < referenceVarNames.length; ++i) {
                                        builder.append(", ");
                                        builder.append(referenceVarNames[i]);
                                    }
                                    append(builder.toString(),
                                            instance.getIsSoftReference() ? SOFT_REFERENCE_TEXT_ATTRIBUTE
                                                    : XDebuggerUIConstants.VALUE_NAME_ATTRIBUTES);
                                    append(" in ", SimpleTextAttributes.GRAYED_ITALIC_ATTRIBUTES);
                                }

                                SimpleTextAttributes classTextAttributes;
                                if (myInstance.getImmediateDominator() == instance) {
                                    classTextAttributes = SimpleTextAttributes.SYNTHETIC_ATTRIBUTES;
                                } else if (instance.getIsSoftReference()) {
                                    classTextAttributes = SimpleTextAttributes.REGULAR_ITALIC_ATTRIBUTES;
                                } else if (instance.getDistanceToGcRoot() == 0) {
                                    classTextAttributes = SimpleTextAttributes.REGULAR_BOLD_ATTRIBUTES;
                                } else if (instance.getImmediateDominator() == null) {
                                    classTextAttributes = SimpleTextAttributes.ERROR_ATTRIBUTES;
                                } else {
                                    classTextAttributes = SimpleTextAttributes.REGULAR_ATTRIBUTES;
                                }

                                if (instance instanceof ArrayInstance) {
                                    setIcon(AllIcons.Debugger.Db_array);
                                } else if (instance instanceof ClassObj) {
                                    setIcon(PlatformIcons.FIELD_ICON);
                                } else {
                                    setIcon(AllIcons.Debugger.Value);
                                }

                                if (myInstance.getImmediateDominator() == instance
                                        || instance.getDistanceToGcRoot() == 0) {
                                    int totalIcons = 1
                                            + (myInstance.getImmediateDominator() == instance ? 1 : 0)
                                            + (instance.getDistanceToGcRoot() == 0 ? 1 : 0);
                                    RowIcon icons = new RowIcon(totalIcons);
                                    icons.setIcon(getIcon(), 0);

                                    int currentIcon = 1;
                                    if (myInstance.getImmediateDominator() == instance) {
                                        icons.setIcon(AllIcons.Hierarchy.Class, currentIcon++);
                                    }
                                    if (instance.getDistanceToGcRoot() == 0) {
                                        icons.setIcon(AllIcons.Hierarchy.Subtypes, currentIcon);
                                    }
                                    setIcon(icons);
                                }

                                append(instance.toString(), classTextAttributes);
                            } else if (value != null) {
                                append(StringUtil.notNullize(value.toString()),
                                        SimpleTextAttributes.ERROR_ATTRIBUTES);
                            }
                        }
                    }))
            .addColumn(new ColumnTreeBuilder.ColumnBuilder().setName("Depth").setPreferredWidth(40)
                    .setHeaderAlignment(SwingConstants.RIGHT).setRenderer(new ColoredTreeCellRenderer() {
                        @Override
                        public void customizeCellRenderer(@NotNull JTree tree, @Nullable Object value,
                                boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
                            if (value instanceof InstanceNode) {
                                Instance instance = ((InstanceNode) value).getInstance();
                                if (instance != null && instance.getDistanceToGcRoot() != Integer.MAX_VALUE) {
                                    append(String.valueOf(instance.getDistanceToGcRoot()),
                                            SimpleTextAttributes.REGULAR_ATTRIBUTES);
                                }
                                setTextAlign(SwingConstants.RIGHT);
                            }
                        }
                    }))
            .addColumn(new ColumnTreeBuilder.ColumnBuilder().setName("Shallow Size").setPreferredWidth(80)
                    .setHeaderAlignment(SwingConstants.RIGHT).setRenderer(new ColoredTreeCellRenderer() {
                        @Override
                        public void customizeCellRenderer(@NotNull JTree tree, @Nullable Object value,
                                boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
                            if (value instanceof InstanceNode) {
                                Instance instance = ((InstanceNode) value).getInstance();
                                if (instance != null) {
                                    append(String.valueOf(instance.getSize()),
                                            SimpleTextAttributes.REGULAR_ATTRIBUTES);
                                }
                                setTextAlign(SwingConstants.RIGHT);
                            }
                        }
                    }))
            .addColumn(new ColumnTreeBuilder.ColumnBuilder().setName("Dominating Size").setPreferredWidth(80)
                    .setHeaderAlignment(SwingConstants.RIGHT).setRenderer(new ColoredTreeCellRenderer() {
                        @Override
                        public void customizeCellRenderer(@NotNull JTree tree, @Nullable Object value,
                                boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
                            if (value instanceof InstanceNode) {
                                Instance instance = ((InstanceNode) value).getInstance();
                                if (instance != null && instance.getDistanceToGcRoot() != Integer.MAX_VALUE) {
                                    append(String.valueOf(instance.getTotalRetainedSize()),
                                            SimpleTextAttributes.REGULAR_ATTRIBUTES);
                                }
                                setTextAlign(SwingConstants.RIGHT);
                            }
                        }
                    }));

    myColumnTree = builder.build();

    selectionModel.addListener(new SelectionModel.SelectionListener() {
        @Override
        public void onHeapChanged(@NotNull Heap heap) {
            clearInstance();
        }

        @Override
        public void onClassObjChanged(@Nullable ClassObj classObj) {
            clearInstance();
        }

        @Override
        public void onInstanceChanged(@Nullable Instance instance) {
            if (instance == null) {
                clearInstance();
            } else {
                myInstance = instance;
                TreeBuilder model = getMutableModel();
                TreeBuilderNode root = (TreeBuilderNode) model.getRoot();
                root.removeAllChildren();
                root.add(new InstanceNode(getMutableModel(), instance));
                model.nodeStructureChanged((TreeBuilderNode) model.getRoot());
                myTree.expandRow(0);
            }
        }
    });
}

From source file:com.android.tools.idea.editors.hprof.views.InstancesTreeView.java

License:Apache License

public InstancesTreeView(@NotNull Project project, @NotNull SelectionModel selectionModel) {
    myProject = project;/*from w  w w.  j av a 2 s  .  c o  m*/
    mySelectionModel = selectionModel;

    myDebuggerTree = new DebuggerTree(project) {
        @Override
        protected void build(DebuggerContextImpl context) {
            DebuggerTreeNodeImpl root = (DebuggerTreeNodeImpl) getModel().getRoot();
            Instance instance = ((InstanceFieldDescriptorImpl) root.getDescriptor()).getInstance();
            addChildren(root, null, instance);
        }

        @Override
        public Object getData(@NonNls String dataId) {
            return InstancesTreeView.this.getData(dataId);
        }
    };
    myDebuggerTree.getComponent().setName(TREE_NAME);

    Disposer.register(myProject, this);
    Disposer.register(this, myDebuggerTree);

    myHeap = mySelectionModel.getHeap();
    myDebugProcess = new DebugProcessEvents(project);
    final SuspendManagerImpl suspendManager = new SuspendManagerImpl(myDebugProcess);
    myDebugProcess.getManagerThread().invokeAndWait(new DebuggerCommandImpl() {
        @Override
        protected void action() throws Exception {
            myDummySuspendContext = suspendManager.pushSuspendContext(EventRequest.SUSPEND_NONE, 1);
        }
    });

    final TreeBuilder model = new TreeBuilder(myDebuggerTree) {
        @Override
        public void buildChildren(TreeBuilderNode node) {
            final DebuggerTreeNodeImpl debuggerTreeNode = (DebuggerTreeNodeImpl) node;
            NodeDescriptor descriptor = debuggerTreeNode.getDescriptor();
            if (descriptor instanceof DefaultNodeDescriptor) {
                return;
            } else if (descriptor instanceof ContainerDescriptorImpl) {
                addContainerChildren(debuggerTreeNode, 0, true);
            } else {
                InstanceFieldDescriptorImpl instanceDescriptor = (InstanceFieldDescriptorImpl) descriptor;
                addChildren(debuggerTreeNode, instanceDescriptor.getHprofField(),
                        instanceDescriptor.getInstance());
            }

            sortTree(debuggerTreeNode);
            myDebuggerTree.treeDidChange();
        }

        @Override
        public boolean isExpandable(TreeBuilderNode builderNode) {
            return ((DebuggerTreeNodeImpl) builderNode).getDescriptor().isExpandable();
        }
    };
    model.setRoot(myDebuggerTree.getNodeFactory().getDefaultNode());
    model.addTreeModelListener(new TreeModelListener() {
        @Override
        public void treeNodesChanged(TreeModelEvent event) {
            myDebuggerTree.hideTooltip();
        }

        @Override
        public void treeNodesInserted(TreeModelEvent event) {
            myDebuggerTree.hideTooltip();
        }

        @Override
        public void treeNodesRemoved(TreeModelEvent event) {
            myDebuggerTree.hideTooltip();
        }

        @Override
        public void treeStructureChanged(TreeModelEvent event) {
            myDebuggerTree.hideTooltip();
        }
    });
    myDebuggerTree.setModel(model);
    myDebuggerTree.setRootVisible(false);

    myDebuggerTree.putClientProperty(DataManager.CLIENT_PROPERTY_DATA_PROVIDER, this);
    JBList contextActionList = new JBList(new EditMultipleSourcesAction());
    JBPopupFactory.getInstance().createListPopupBuilder(contextActionList);
    myGoToInstanceAction = new GoToInstanceAction(myDebuggerTree);
    myDebuggerTree.addMouseListener(new PopupHandler() {
        @Override
        public void invokePopup(Component comp, int x, int y) {
            DefaultActionGroup popupGroup = new DefaultActionGroup(new EditMultipleSourcesAction());
            Instance selectedInstance = mySelectionModel.getInstance();
            if (selectedInstance instanceof ClassInstance
                    && HprofBitmapProvider.canGetBitmapFromInstance(selectedInstance)) {
                popupGroup.add(new ViewBitmapAction());
            }
            popupGroup.add(myGoToInstanceAction);

            ActionManager.getInstance().createActionPopupMenu(ActionPlaces.UNKNOWN, popupGroup).getComponent()
                    .show(comp, x, y);
        }
    });

    mySelectionModel.addListener(new SelectionModel.SelectionListener() {
        @Override
        public void onHeapChanged(@NotNull Heap heap) {
            if (heap != myHeap) {
                myHeap = heap;
                if (myDebuggerTree.getMutableModel().getRoot() != null) {
                    onSelectionChanged();
                }
            }
        }

        @Override
        public void onClassObjChanged(@Nullable ClassObj classObj) {
            if (classObj != myClassObj) {
                myClassObj = classObj;
                onSelectionChanged();
            }
        }

        @Override
        public void onInstanceChanged(@Nullable Instance instance) {
            if (instance == null) {
                return;
            }

            TreePath path = myDebuggerTree.getSelectionPath();
            if (path != null) {
                DebuggerTreeNodeImpl treeNode = (DebuggerTreeNodeImpl) path.getPathComponent(1);
                if (treeNode.getDescriptor() instanceof InstanceFieldDescriptorImpl
                        && ((InstanceFieldDescriptorImpl) treeNode.getDescriptor()).getInstance() == instance) {
                    return;
                }
            }

            DebuggerTreeNodeImpl root = (DebuggerTreeNodeImpl) myDebuggerTree.getMutableModel().getRoot();
            DebuggerTreeNodeImpl targetNode = expandMoreNodesUntilFound(root, instance);
            if (targetNode != null) {
                final TreePath targetPath = new TreePath(targetNode.getPath());
                myDebuggerTree.treeChanged();
                myDebuggerTree.setSelectionPath(targetPath);
                ApplicationManager.getApplication()
                        .invokeLater(() -> myDebuggerTree.scrollPathToVisible(targetPath));
            }
        }

        private void onSelectionChanged() {
            DebuggerTreeNodeImpl newRoot;
            Instance singleChild = null;
            if (myClassObj != null) {
                ContainerDescriptorImpl containerDescriptor = new ContainerDescriptorImpl(myClassObj,
                        myHeap.getId());
                newRoot = DebuggerTreeNodeImpl.createNodeNoUpdate(myDebuggerTree, containerDescriptor);
                if (containerDescriptor.getInstances().size() == 1) {
                    singleChild = containerDescriptor.getInstances().get(0);
                }
            } else {
                newRoot = myDebuggerTree.getNodeFactory().getDefaultNode();
            }

            myDebuggerTree.getMutableModel().setRoot(newRoot);
            myDebuggerTree.treeChanged();
            if (myDebuggerTree.getRowCount() > 0) {
                myDebuggerTree.scrollRowToVisible(0);
            }

            if (singleChild != null) {
                myDebuggerTree.setSelectionInterval(0, 0);
                mySelectionModel.setInstance(singleChild);
            }
        }
    });

    myDebuggerTree.addTreeSelectionListener(e -> {
        TreePath path = e.getPath();
        if (path == null || path.getPathCount() < 2 || !e.isAddedPath()) {
            mySelectionModel.setInstance(null);
            return;
        }

        DebuggerTreeNodeImpl instanceNode = (DebuggerTreeNodeImpl) path.getPathComponent(1);
        if (instanceNode.getDescriptor() instanceof InstanceFieldDescriptorImpl) {
            InstanceFieldDescriptorImpl descriptor = (InstanceFieldDescriptorImpl) instanceNode.getDescriptor();
            if (descriptor.getInstance() != mySelectionModel.getInstance()) {
                mySelectionModel.setInstance(descriptor.getInstance());
            }
        }

        // Handle node expansions (this is present when the list is large).
        DebuggerTreeNodeImpl lastPathNode = (DebuggerTreeNodeImpl) path.getLastPathComponent();
        if (lastPathNode.getDescriptor() instanceof ExpansionDescriptorImpl) {
            ExpansionDescriptorImpl expansionDescriptor = (ExpansionDescriptorImpl) lastPathNode
                    .getDescriptor();
            DebuggerTreeNodeImpl parentNode = lastPathNode.getParent();
            myDebuggerTree.getMutableModel().removeNodeFromParent(lastPathNode);

            if (parentNode.getDescriptor() instanceof ContainerDescriptorImpl) {
                addContainerChildren(parentNode, expansionDescriptor.getStartIndex(), true);
            } else if (parentNode.getDescriptor() instanceof InstanceFieldDescriptorImpl) {
                InstanceFieldDescriptorImpl instanceFieldDescriptor = (InstanceFieldDescriptorImpl) parentNode
                        .getDescriptor();
                addChildren(parentNode, instanceFieldDescriptor.getHprofField(),
                        instanceFieldDescriptor.getInstance(), expansionDescriptor.getStartIndex());
            }

            sortTree(parentNode);
            myDebuggerTree.getMutableModel().nodeStructureChanged(parentNode);

            if (myComparator != null) {
                myDebuggerTree.scrollPathToVisible(
                        new TreePath(((DebuggerTreeNodeImpl) parentNode.getLastChild()).getPath()));
            }
        }
    });

    ColumnTreeBuilder builder = new ColumnTreeBuilder(myDebuggerTree)
            .addColumn(new ColumnTreeBuilder.ColumnBuilder().setName("Instance").setPreferredWidth(600)
                    .setHeaderAlignment(SwingConstants.LEFT)
                    .setComparator(new Comparator<DebuggerTreeNodeImpl>() {
                        @Override
                        public int compare(@NotNull DebuggerTreeNodeImpl a, @NotNull DebuggerTreeNodeImpl b) {
                            return getDefaultOrdering(a, b);
                        }
                    }).setRenderer((DebuggerTreeRenderer) myDebuggerTree.getCellRenderer()))
            .addColumn(new ColumnTreeBuilder.ColumnBuilder().setName("Depth").setPreferredWidth(60)
                    .setHeaderAlignment(SwingConstants.RIGHT)
                    .setComparator(new Comparator<DebuggerTreeNodeImpl>() {
                        @Override
                        public int compare(DebuggerTreeNodeImpl a, DebuggerTreeNodeImpl b) {
                            int depthA = 0;
                            int depthB = 0;
                            if (a.getDescriptor() instanceof InstanceFieldDescriptorImpl) {
                                Instance instanceA = (Instance) ((InstanceFieldDescriptorImpl) a
                                        .getDescriptor()).getValueData();
                                if (instanceA != null) {
                                    depthA = instanceA.getDistanceToGcRoot();
                                }
                            }
                            if (b.getDescriptor() instanceof InstanceFieldDescriptorImpl) {
                                Instance instanceB = (Instance) ((InstanceFieldDescriptorImpl) b
                                        .getDescriptor()).getValueData();
                                if (instanceB != null) {
                                    depthB = instanceB.getDistanceToGcRoot();
                                }
                            }
                            if (depthA != depthB) {
                                return depthA - depthB;
                            } else {
                                return getDefaultOrdering(a, b);
                            }
                        }
                    }).setRenderer(new ColoredTreeCellRenderer() {
                        @Override
                        public void customizeCellRenderer(@NotNull JTree tree, Object value, boolean selected,
                                boolean expanded, boolean leaf, int row, boolean hasFocus) {
                            NodeDescriptorImpl nodeDescriptor = (NodeDescriptorImpl) ((TreeBuilderNode) value)
                                    .getUserObject();
                            if (nodeDescriptor instanceof InstanceFieldDescriptorImpl) {
                                InstanceFieldDescriptorImpl descriptor = (InstanceFieldDescriptorImpl) nodeDescriptor;
                                assert !descriptor.isPrimitive();
                                Instance instance = (Instance) descriptor.getValueData();
                                if (instance != null && instance.getDistanceToGcRoot() != Integer.MAX_VALUE) {
                                    append(String.valueOf(instance.getDistanceToGcRoot()),
                                            SimpleTextAttributes.REGULAR_ATTRIBUTES);
                                }
                            }
                            setTextAlign(SwingConstants.RIGHT);
                        }
                    }))
            .addColumn(new ColumnTreeBuilder.ColumnBuilder().setName("Shallow Size").setPreferredWidth(80)
                    .setHeaderAlignment(SwingConstants.RIGHT)
                    .setComparator(new Comparator<DebuggerTreeNodeImpl>() {
                        @Override
                        public int compare(@NotNull DebuggerTreeNodeImpl a, @NotNull DebuggerTreeNodeImpl b) {
                            int sizeA = 0;
                            int sizeB = 0;
                            if (a.getDescriptor() instanceof InstanceFieldDescriptorImpl) {
                                Instance instanceA = (Instance) ((InstanceFieldDescriptorImpl) a
                                        .getDescriptor()).getValueData();
                                if (instanceA != null) {
                                    sizeA = instanceA.getSize();
                                }
                            }
                            if (b.getDescriptor() instanceof InstanceFieldDescriptorImpl) {
                                Instance instanceB = (Instance) ((InstanceFieldDescriptorImpl) b
                                        .getDescriptor()).getValueData();
                                if (instanceB != null) {
                                    sizeB = instanceB.getSize();
                                }
                            }
                            if (sizeA != sizeB) {
                                return sizeA - sizeB;
                            } else {
                                return getDefaultOrdering(a, b);
                            }
                        }
                    }).setRenderer(new ColoredTreeCellRenderer() {
                        @Override
                        public void customizeCellRenderer(@NotNull JTree tree, Object value, boolean selected,
                                boolean expanded, boolean leaf, int row, boolean hasFocus) {
                            NodeDescriptorImpl nodeDescriptor = (NodeDescriptorImpl) ((TreeBuilderNode) value)
                                    .getUserObject();
                            if (nodeDescriptor instanceof InstanceFieldDescriptorImpl) {
                                InstanceFieldDescriptorImpl descriptor = (InstanceFieldDescriptorImpl) nodeDescriptor;
                                assert !descriptor.isPrimitive();
                                Instance instance = (Instance) descriptor.getValueData();
                                if (instance != null) {
                                    append(String.valueOf(instance.getSize()),
                                            SimpleTextAttributes.REGULAR_ATTRIBUTES);
                                }
                            }
                            setTextAlign(SwingConstants.RIGHT);
                        }
                    }))
            .addColumn(new ColumnTreeBuilder.ColumnBuilder().setName("Dominating Size").setPreferredWidth(80)
                    .setHeaderAlignment(SwingConstants.RIGHT)
                    .setComparator(new Comparator<DebuggerTreeNodeImpl>() {
                        @Override
                        public int compare(@NotNull DebuggerTreeNodeImpl a, @NotNull DebuggerTreeNodeImpl b) {
                            long sizeA = 0;
                            long sizeB = 0;
                            if (a.getDescriptor() instanceof InstanceFieldDescriptorImpl) {
                                Instance instanceA = (Instance) ((InstanceFieldDescriptorImpl) a
                                        .getDescriptor()).getValueData();
                                if (instanceA != null && instanceA.getDistanceToGcRoot() != Integer.MAX_VALUE) {
                                    sizeA = instanceA.getTotalRetainedSize();
                                }
                            }
                            if (b.getDescriptor() instanceof InstanceFieldDescriptorImpl) {
                                Instance instanceB = (Instance) ((InstanceFieldDescriptorImpl) b
                                        .getDescriptor()).getValueData();
                                if (instanceB != null && instanceB.getDistanceToGcRoot() != Integer.MAX_VALUE) {
                                    sizeB = instanceB.getTotalRetainedSize();
                                }
                            }
                            if (sizeA != sizeB) {
                                return (int) (sizeA - sizeB);
                            } else {
                                return getDefaultOrdering(a, b);
                            }
                        }
                    }).setRenderer(new ColoredTreeCellRenderer() {
                        @Override
                        public void customizeCellRenderer(@NotNull JTree tree, Object value, boolean selected,
                                boolean expanded, boolean leaf, int row, boolean hasFocus) {
                            NodeDescriptorImpl nodeDescriptor = (NodeDescriptorImpl) ((TreeBuilderNode) value)
                                    .getUserObject();
                            if (nodeDescriptor instanceof InstanceFieldDescriptorImpl) {
                                InstanceFieldDescriptorImpl descriptor = (InstanceFieldDescriptorImpl) nodeDescriptor;
                                assert !descriptor.isPrimitive();
                                Instance instance = (Instance) descriptor.getValueData();
                                if (instance != null && instance.getDistanceToGcRoot() != Integer.MAX_VALUE) {
                                    append(String.valueOf(instance.getTotalRetainedSize()),
                                            SimpleTextAttributes.REGULAR_ATTRIBUTES);
                                }
                            }
                            setTextAlign(SwingConstants.RIGHT);
                        }
                    }));

    //noinspection NullableProblems
    builder.setTreeSorter(new ColumnTreeBuilder.TreeSorter<DebuggerTreeNodeImpl>() {
        @Override
        public void sort(@NotNull Comparator<DebuggerTreeNodeImpl> comparator, @NotNull SortOrder sortOrder) {
            if (myComparator != comparator && mySortOrder != sortOrder) {
                myComparator = comparator;
                mySortOrder = sortOrder;
                TreeBuilder mutableModel = myDebuggerTree.getMutableModel();
                DebuggerTreeNodeImpl root = (DebuggerTreeNodeImpl) mutableModel.getRoot();

                sortTree(root);

                mySelectionModel.setSelectionLocked(true);
                TreePath selectionPath = myDebuggerTree.getSelectionPath();
                mutableModel.nodeStructureChanged(root);
                myDebuggerTree.setSelectionPath(selectionPath);
                myDebuggerTree.scrollPathToVisible(selectionPath);
                mySelectionModel.setSelectionLocked(false);
            }
        }
    });

    myColumnTree = builder.build();
}

From source file:com.android.tools.idea.uibuilder.mockup.editor.tools.ExtractWidgetTool.java

License:Apache License

/**
 * Create the Action toolbar containing the buttons created using ourWidgetCreationActions list
 *
 * @return The toolbar JComponent to add to the layout
 *///from w  w w.  j av a2 s.  c  o m
private JComponent createActionToolbar() {
    DefaultActionGroup group = new DefaultActionGroup(createActionsButtons());

    if (!ourOtherCreationActions.isEmpty()) {
        group.addSeparator();
        for (CreatorAction otherCreationAction : ourOtherCreationActions) {
            group.add(createAnActionButton(otherCreationAction, false));
        }
    }
    ActionToolbar actionToolbar = ActionManager.getInstance().createActionToolbar(ActionPlaces.UNKNOWN, group,
            false);
    actionToolbar.setLayoutPolicy(ActionToolbar.WRAP_LAYOUT_POLICY);
    actionToolbar.setTargetComponent(this);
    actionToolbar.getComponent().setBackground(JBColor.WHITE);
    return actionToolbar.getComponent();
}

From source file:com.google.cloud.tools.intellij.debugger.CloudDebugProcessTest.java

License:Apache License

@Test
public void testRegisterAdditionalActions_close() {
    ActionManager manager = ActionManager.getInstance();
    AnAction action0 = manager.getAction(IdeActions.ACTION_PIN_ACTIVE_TAB);
    AnAction action1 = manager.getAction(IdeActions.ACTION_CLOSE);
    action1.getTemplatePresentation().setText("Close");
    AnAction action2 = manager.getAction(IdeActions.ACTION_CONTEXT_HELP);
    AnAction action3 = manager.getAction(IdeActions.ACTION_CALL_HIERARCHY);
    List<AnAction> leftToolbarActions = Lists.newArrayList();
    leftToolbarActions.add(action0);/* w  w w .ja  v a  2  s  . c  om*/
    leftToolbarActions.add(action1);
    leftToolbarActions.add(action2);
    leftToolbarActions.add(action3);
    DefaultActionGroup leftToolbar = new DefaultActionGroup(leftToolbarActions);
    List<AnAction> actions = Lists.newArrayList();
    DefaultActionGroup topToolbar = new DefaultActionGroup(actions);
    DefaultActionGroup settings = new DefaultActionGroup(actions);

    process.registerAdditionalActions(leftToolbar, topToolbar, settings);

    assertEquals(4, leftToolbar.getChildrenCount());
    assertEquals(action0, leftToolbar.getChildActionsOrStubs()[0]);
    assertEquals(action3, leftToolbar.getChildActionsOrStubs()[1]);
}

From source file:com.google.cloud.tools.intellij.debugger.CloudDebugProcessTest.java

License:Apache License

private void assertRemoveFromLeftToolbar(String actionId) {
    ActionManager manager = ActionManager.getInstance();
    AnAction action = manager.getAction(actionId);
    List<AnAction> leftToolbarActions = Lists.newArrayList();
    leftToolbarActions.add(action);/*from   w ww.j av a2  s.c  o  m*/
    DefaultActionGroup leftToolbar = new DefaultActionGroup(leftToolbarActions);
    List<AnAction> actions = Lists.newArrayList();
    DefaultActionGroup topToolbar = new DefaultActionGroup(actions);
    DefaultActionGroup settings = new DefaultActionGroup(actions);

    process.registerAdditionalActions(leftToolbar, topToolbar, settings);

    assertEquals(1, leftToolbar.getChildrenCount());
    AnAction actual = leftToolbar.getChildActionsOrStubs()[0];
    assertEquals("Stop IDE Debugging. (Exit debug mode and continue the debug session later.)",
            actual.toString());
}

From source file:com.google.cloud.tools.intellij.debugger.CloudDebugProcessTest.java

License:Apache License

private void assertRemoveFromTopToolbar(String actionId) {
    ActionManager manager = ActionManager.getInstance();
    AnAction action = manager.getAction(actionId);
    List<AnAction> topToolbarActions = Lists.newArrayList();
    topToolbarActions.add(action);/*ww w. ja v a  2  s. c  om*/
    DefaultActionGroup topToolbar = new DefaultActionGroup(topToolbarActions);
    List<AnAction> actions = Lists.newArrayList();
    DefaultActionGroup leftToolbar = new DefaultActionGroup(actions);
    DefaultActionGroup settings = new DefaultActionGroup(actions);

    process.registerAdditionalActions(leftToolbar, topToolbar, settings);

    assertEmpty(topToolbar.getChildActionsOrStubs());
}