Search in sources :

Example 41 with TreeNode

use of javax.swing.tree.TreeNode in project intellij-community by JetBrains.

the class DetectedFrameworksTree method collapseDirectoryNode.

private static FrameworkDirectoryNode collapseDirectoryNode(FrameworkDirectoryNode node) {
    if (node.getChildCount() == 1) {
        final TreeNode child = node.getChildAt(0);
        if (child instanceof FrameworkDirectoryNode) {
            return collapseDirectoryNode((FrameworkDirectoryNode) child);
        }
    }
    for (int i = 0; i < node.getChildCount(); i++) {
        TreeNode child = node.getChildAt(i);
        if (child instanceof FrameworkDirectoryNode) {
            final FrameworkDirectoryNode collapsed = collapseDirectoryNode((FrameworkDirectoryNode) child);
            if (collapsed != child) {
                node.remove(i);
                node.insert(collapsed, i);
            }
        }
    }
    return node;
}
Also used : TreeNode(javax.swing.tree.TreeNode) DefaultMutableTreeNode(javax.swing.tree.DefaultMutableTreeNode) CheckedTreeNode(com.intellij.ui.CheckedTreeNode)

Example 42 with TreeNode

use of javax.swing.tree.TreeNode in project intellij-community by JetBrains.

the class SingleInspectionProfilePanel method updateOptionsAndDescriptionPanel.

private void updateOptionsAndDescriptionPanel(final TreePath... paths) {
    if (myProfile == null || paths == null || paths.length == 0) {
        return;
    }
    final TreePath path = paths[0];
    if (path == null)
        return;
    final List<InspectionConfigTreeNode> nodes = InspectionsAggregationUtil.getInspectionsNodes(paths);
    if (!nodes.isEmpty()) {
        final InspectionConfigTreeNode singleNode = paths.length == 1 && ((InspectionConfigTreeNode) paths[0].getLastPathComponent()).getDefaultDescriptor() != null ? ContainerUtil.getFirstItem(nodes) : null;
        if (singleNode != null) {
            final Descriptor descriptor = singleNode.getDefaultDescriptor();
            LOG.assertTrue(descriptor != null);
            if (descriptor.loadDescription() != null) {
                // need this in order to correctly load plugin-supplied descriptions
                final Descriptor defaultDescriptor = singleNode.getDefaultDescriptor();
                final String description = defaultDescriptor.loadDescription();
                try {
                    if (!readHTML(myBrowser, SearchUtil.markup(toHTML(myBrowser, description, false), myProfileFilter.getFilter()))) {
                        readHTML(myBrowser, toHTML(myBrowser, "<b>" + UNDER_CONSTRUCTION + "</b>", false));
                    }
                } catch (Throwable t) {
                    LOG.error("Failed to load description for: " + defaultDescriptor.getToolWrapper().getTool().getClass() + "; description: " + description, t);
                }
            } else {
                readHTML(myBrowser, toHTML(myBrowser, "Can't find inspection description.", false));
            }
        } else {
            readHTML(myBrowser, toHTML(myBrowser, "Multiple inspections are selected. You can edit them as a single inspection.", false));
        }
        myOptionsPanel.removeAll();
        final Project project = myProjectProfileManager.getProject();
        final JPanel severityPanel = new JPanel(new GridBagLayout());
        final JPanel configPanelAnchor = new JPanel(new GridLayout());
        final Set<String> scopesNames = new THashSet<>();
        for (final InspectionConfigTreeNode node : nodes) {
            final List<ScopeToolState> nonDefaultTools = myProfile.getNonDefaultTools(node.getDefaultDescriptor().getKey().toString(), project);
            for (final ScopeToolState tool : nonDefaultTools) {
                scopesNames.add(tool.getScopeName());
            }
        }
        final double severityPanelWeightY;
        if (scopesNames.isEmpty()) {
            final LevelChooserAction severityLevelChooser = new LevelChooserAction(myProfile.getProfileManager().getOwnSeverityRegistrar(), includeDoNotShow(nodes)) {

                @Override
                protected void onChosen(final HighlightSeverity severity) {
                    final HighlightDisplayLevel level = HighlightDisplayLevel.find(severity);
                    for (final InspectionConfigTreeNode node : nodes) {
                        final HighlightDisplayKey key = node.getDefaultDescriptor().getKey();
                        final NamedScope scope = node.getDefaultDescriptor().getScope();
                        final boolean toUpdate = myProfile.getErrorLevel(key, scope, project) != level;
                        myProfile.setErrorLevel(key, level, null, project);
                        if (toUpdate)
                            node.dropCache();
                    }
                    myTreeTable.updateUI();
                }
            };
            final HighlightSeverity severity = ScopesAndSeveritiesTable.getSeverity(ContainerUtil.map(nodes, node -> node.getDefaultDescriptor().getState()));
            severityLevelChooser.setChosen(severity);
            final ScopesChooser scopesChooser = new ScopesChooser(ContainerUtil.map(nodes, node -> node.getDefaultDescriptor()), myProfile, project, null) {

                @Override
                protected void onScopesOrderChanged() {
                    myTreeTable.updateUI();
                    updateOptionsAndDescriptionPanel();
                }

                @Override
                protected void onScopeAdded() {
                    myTreeTable.updateUI();
                    updateOptionsAndDescriptionPanel();
                }
            };
            severityPanel.add(new JLabel(InspectionsBundle.message("inspection.severity")), new GridBagConstraints(0, 0, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.VERTICAL, JBUI.insets(10, 0), 0, 0));
            final JComponent severityLevelChooserComponent = severityLevelChooser.createCustomComponent(severityLevelChooser.getTemplatePresentation());
            severityPanel.add(severityLevelChooserComponent, new GridBagConstraints(1, 0, 1, 1, 0, 1, GridBagConstraints.WEST, GridBagConstraints.BOTH, JBUI.insets(10, 0), 0, 0));
            final JComponent scopesChooserComponent = scopesChooser.createCustomComponent(scopesChooser.getTemplatePresentation());
            severityPanel.add(scopesChooserComponent, new GridBagConstraints(2, 0, 1, 1, 0, 1, GridBagConstraints.WEST, GridBagConstraints.BOTH, JBUI.insets(10, 0), 0, 0));
            final JLabel label = new JLabel("", SwingConstants.RIGHT);
            severityPanel.add(label, new GridBagConstraints(3, 0, 1, 1, 1, 0, GridBagConstraints.EAST, GridBagConstraints.BOTH, JBUI.insets(2, 0), 0, 0));
            severityPanelWeightY = 0.0;
            if (singleNode != null) {
                setConfigPanel(configPanelAnchor, myProfile.getToolDefaultState(singleNode.getDefaultDescriptor().getKey().toString(), project));
            }
        } else {
            if (singleNode != null) {
                for (final Descriptor descriptor : singleNode.getDescriptors().getNonDefaultDescriptors()) {
                    descriptor.loadConfig();
                }
            }
            final JTable scopesAndScopesAndSeveritiesTable = new ScopesAndSeveritiesTable(new ScopesAndSeveritiesTable.TableSettings(nodes, myProfile, project) {

                @Override
                protected void onScopeChosen(@NotNull final ScopeToolState state) {
                    setConfigPanel(configPanelAnchor, state);
                    configPanelAnchor.revalidate();
                    configPanelAnchor.repaint();
                }

                @Override
                protected void onSettingsChanged() {
                    update(false);
                }

                @Override
                protected void onScopeAdded() {
                    update(true);
                }

                @Override
                protected void onScopesOrderChanged() {
                    update(true);
                }

                @Override
                protected void onScopeRemoved(final int scopesCount) {
                    update(scopesCount == 1);
                }

                private void update(final boolean updateOptionsAndDescriptionPanel) {
                    Queue<InspectionConfigTreeNode> q = new Queue<>(nodes.size());
                    for (InspectionConfigTreeNode node : nodes) {
                        q.addLast(node);
                    }
                    while (!q.isEmpty()) {
                        final InspectionConfigTreeNode inspectionConfigTreeNode = q.pullFirst();
                        inspectionConfigTreeNode.dropCache();
                        final TreeNode parent = inspectionConfigTreeNode.getParent();
                        if (parent != null && parent.getParent() != null) {
                            q.addLast((InspectionConfigTreeNode) parent);
                        }
                    }
                    myTreeTable.updateUI();
                    if (updateOptionsAndDescriptionPanel) {
                        updateOptionsAndDescriptionPanel();
                    }
                }
            });
            final ToolbarDecorator wrappedTable = ToolbarDecorator.createDecorator(scopesAndScopesAndSeveritiesTable).disableUpDownActions().setRemoveActionUpdater(new AnActionButtonUpdater() {

                @Override
                public boolean isEnabled(AnActionEvent e) {
                    final int selectedRow = scopesAndScopesAndSeveritiesTable.getSelectedRow();
                    final int rowCount = scopesAndScopesAndSeveritiesTable.getRowCount();
                    return rowCount - 1 != selectedRow;
                }
            });
            final JPanel panel = wrappedTable.createPanel();
            panel.setMinimumSize(new Dimension(getMinimumSize().width, 3 * scopesAndScopesAndSeveritiesTable.getRowHeight()));
            severityPanel.add(new JBLabel("Severity by Scope"), new GridBagConstraints(0, 0, 1, 1, 1.0, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, JBUI.insets(5, 0, 2, 10), 0, 0));
            severityPanel.add(panel, new GridBagConstraints(0, 1, 1, 1, 0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH, JBUI.insets(0, 0, 0, 0), 0, 0));
            severityPanelWeightY = 0.3;
        }
        myOptionsPanel.add(severityPanel, new GridBagConstraints(0, 0, 1, 1, 1.0, severityPanelWeightY, GridBagConstraints.WEST, GridBagConstraints.BOTH, JBUI.insets(0, 2, 0, 0), 0, 0));
        if (configPanelAnchor.getComponentCount() != 0) {
            configPanelAnchor.setBorder(IdeBorderFactory.createTitledBorder("Options", false, new JBInsets(7, 0, 0, 0)));
        }
        GuiUtils.enableChildren(myOptionsPanel, isThoughOneNodeEnabled(nodes));
        if (configPanelAnchor.getComponentCount() != 0 || scopesNames.isEmpty()) {
            myOptionsPanel.add(configPanelAnchor, new GridBagConstraints(0, 1, 1, 1, 1.0, 1.0, GridBagConstraints.WEST, GridBagConstraints.BOTH, JBUI.insets(0, 2, 0, 0), 0, 0));
        }
        myOptionsPanel.revalidate();
    } else {
        initOptionsAndDescriptionPanel();
    }
    myOptionsPanel.repaint();
}
Also used : JBInsets(com.intellij.util.ui.JBInsets) UIUtil(com.intellij.util.ui.UIUtil) com.intellij.codeInspection.ex(com.intellij.codeInspection.ex) AllIcons(com.intellij.icons.AllIcons) ScopesAndSeveritiesTable(com.intellij.profile.codeInspection.ui.table.ScopesAndSeveritiesTable) InspectionProfileManager(com.intellij.profile.codeInspection.InspectionProfileManager) HighlightSeverity(com.intellij.lang.annotation.HighlightSeverity) THashSet(gnu.trove.THashSet) ItemListener(java.awt.event.ItemListener) THashMap(gnu.trove.THashMap) JBLabel(com.intellij.ui.components.JBLabel) Queue(com.intellij.util.containers.Queue) JBUI(com.intellij.util.ui.JBUI) ProjectInspectionProfileManager(com.intellij.profile.codeInspection.ProjectInspectionProfileManager) Disposer(com.intellij.openapi.util.Disposer) SearchableOptionsRegistrar(com.intellij.ide.ui.search.SearchableOptionsRegistrar) Logger(com.intellij.openapi.diagnostic.Logger) InspectionsConfigTreeComparator(com.intellij.profile.codeInspection.ui.inspectionsTree.InspectionsConfigTreeComparator) InspectionsFilter(com.intellij.profile.codeInspection.ui.filter.InspectionsFilter) DefaultTreeModel(javax.swing.tree.DefaultTreeModel) InspectionsConfigTreeRenderer(com.intellij.profile.codeInspection.ui.inspectionsTree.InspectionsConfigTreeRenderer) ItemEvent(java.awt.event.ItemEvent) HintUtil(com.intellij.codeInsight.hint.HintUtil) TreePath(javax.swing.tree.TreePath) com.intellij.ide(com.intellij.ide) HighlightDisplayKey(com.intellij.codeInsight.daemon.HighlightDisplayKey) HighlightInfoType(com.intellij.codeInsight.daemon.impl.HighlightInfoType) com.intellij.ui(com.intellij.ui) SearchUtil(com.intellij.ide.ui.search.SearchUtil) BaseInspectionProfileManager(com.intellij.profile.codeInspection.BaseInspectionProfileManager) InspectionsBundle(com.intellij.codeInspection.InspectionsBundle) Nullable(org.jetbrains.annotations.Nullable) List(java.util.List) TextAttributes(com.intellij.openapi.editor.markup.TextAttributes) ApplicationManager(com.intellij.openapi.application.ApplicationManager) NotNull(org.jetbrains.annotations.NotNull) InspectionFilterAction(com.intellij.profile.codeInspection.ui.filter.InspectionFilterAction) Settings(com.intellij.openapi.options.ex.Settings) SeverityRegistrar(com.intellij.codeInsight.daemon.impl.SeverityRegistrar) java.util(java.util) TreeNode(javax.swing.tree.TreeNode) NonNls(org.jetbrains.annotations.NonNls) ContainerUtil(com.intellij.util.containers.ContainerUtil) InspectionConfigTreeNode(com.intellij.profile.codeInspection.ui.inspectionsTree.InspectionConfigTreeNode) Comparing(com.intellij.openapi.util.Comparing) NamedScope(com.intellij.psi.search.scope.packageSet.NamedScope) JDOMUtil(com.intellij.openapi.util.JDOMUtil) Project(com.intellij.openapi.project.Project) TreeUtil(com.intellij.util.ui.tree.TreeUtil) JBCheckBox(com.intellij.ui.components.JBCheckBox) StringUtil(com.intellij.openapi.util.text.StringUtil) Convertor(com.intellij.util.containers.Convertor) javax.swing.event(javax.swing.event) IOException(java.io.IOException) HighlightDisplayLevel(com.intellij.codeHighlighting.HighlightDisplayLevel) Disposable(com.intellij.openapi.Disposable) InspectionsConfigTreeTable(com.intellij.profile.codeInspection.ui.inspectionsTree.InspectionsConfigTreeTable) java.awt(java.awt) com.intellij.openapi.actionSystem(com.intellij.openapi.actionSystem) TextAttributesKey(com.intellij.openapi.editor.colors.TextAttributesKey) DumbAwareAction(com.intellij.openapi.project.DumbAwareAction) StringReader(java.io.StringReader) Element(org.jdom.Element) Alarm(com.intellij.util.Alarm) javax.swing(javax.swing) HighlightSeverity(com.intellij.lang.annotation.HighlightSeverity) HighlightDisplayKey(com.intellij.codeInsight.daemon.HighlightDisplayKey) JBInsets(com.intellij.util.ui.JBInsets) NamedScope(com.intellij.psi.search.scope.packageSet.NamedScope) JBLabel(com.intellij.ui.components.JBLabel) TreeNode(javax.swing.tree.TreeNode) InspectionConfigTreeNode(com.intellij.profile.codeInspection.ui.inspectionsTree.InspectionConfigTreeNode) Queue(com.intellij.util.containers.Queue) HighlightDisplayLevel(com.intellij.codeHighlighting.HighlightDisplayLevel) ScopesAndSeveritiesTable(com.intellij.profile.codeInspection.ui.table.ScopesAndSeveritiesTable) THashSet(gnu.trove.THashSet) InspectionConfigTreeNode(com.intellij.profile.codeInspection.ui.inspectionsTree.InspectionConfigTreeNode) Project(com.intellij.openapi.project.Project) TreePath(javax.swing.tree.TreePath)

Example 43 with TreeNode

use of javax.swing.tree.TreeNode in project intellij-community by JetBrains.

the class TreeState method applyTo.

private static boolean applyTo(final int positionInPath, final List<PathElement> path, final Object root, final TreeFacade tree, final ProgressIndicator indicator) {
    if (!(root instanceof DefaultMutableTreeNode))
        return false;
    final DefaultMutableTreeNode treeNode = (DefaultMutableTreeNode) root;
    final Object userObject = treeNode.getUserObject();
    final PathElement pathElement = path.get(positionInPath);
    if (userObject instanceof NodeDescriptor) {
        if (!pathElement.matchedWith((NodeDescriptor) userObject))
            return false;
    } else {
        if (!pathElement.matchedWithByObject(userObject))
            return false;
    }
    tree.expand(treeNode).doWhenDone(new TreeRunnable("TreeState.applyTo") {

        @Override
        public void perform() {
            indicator.checkCanceled();
            if (positionInPath == path.size() - 1) {
                return;
            }
            for (int j = 0; j < treeNode.getChildCount(); j++) {
                final TreeNode child = treeNode.getChildAt(j);
                final boolean resultFromChild = applyTo(positionInPath + 1, path, child, tree, indicator);
                if (resultFromChild) {
                    break;
                }
            }
        }
    });
    return true;
}
Also used : DefaultMutableTreeNode(javax.swing.tree.DefaultMutableTreeNode) TreeNode(javax.swing.tree.TreeNode) DefaultMutableTreeNode(javax.swing.tree.DefaultMutableTreeNode)

Example 44 with TreeNode

use of javax.swing.tree.TreeNode in project intellij-community by JetBrains.

the class TreeState method createPath.

private static List<PathElement> createPath(final TreePath treePath) {
    final ArrayList<PathElement> result = new ArrayList<>();
    for (int i = 0; i < treePath.getPathCount(); i++) {
        final Object pathComponent = treePath.getPathComponent(i);
        if (pathComponent instanceof DefaultMutableTreeNode) {
            final DefaultMutableTreeNode node = (DefaultMutableTreeNode) pathComponent;
            final TreeNode parent = node.getParent();
            final Object userObject = node.getUserObject();
            if (userObject instanceof NodeDescriptor) {
                final NodeDescriptor nodeDescriptor = (NodeDescriptor) userObject;
                //nodeDescriptor.update();
                final int childIndex = parent != null ? parent.getIndex(node) : 0;
                result.add(new PathElement(getDescriptorKey(nodeDescriptor), getDescriptorType(nodeDescriptor), childIndex, nodeDescriptor));
            } else {
                result.add(new PathElement("", "", 0, userObject));
            }
        } else {
            return null;
        }
    }
    return result;
}
Also used : DefaultMutableTreeNode(javax.swing.tree.DefaultMutableTreeNode) TreeNode(javax.swing.tree.TreeNode) DefaultMutableTreeNode(javax.swing.tree.DefaultMutableTreeNode) ArrayList(java.util.ArrayList)

Example 45 with TreeNode

use of javax.swing.tree.TreeNode in project intellij-community by JetBrains.

the class ExternalProjectDataSelectorDialog method createRoot.

private Couple<CheckedTreeNode> createRoot() {
    final Map<DataNode, DataNodeCheckedTreeNode> treeNodeMap = ContainerUtil.newIdentityTroveMap();
    final DataNodeCheckedTreeNode[] preselectedNode = { null };
    final DataNodeCheckedTreeNode[] rootModuleNode = { null };
    final MultiMap<String, String> moduleDependenciesMap = MultiMap.create();
    final Map<String, DataNode<Identifiable>> modulesNodeMap = ContainerUtil.newHashMap();
    for (DataNode<ModuleDependencyData> moduleDependencyDataNode : ExternalSystemApiUtil.findAllRecursively(myProjectInfo.getExternalProjectStructure(), ProjectKeys.MODULE_DEPENDENCY)) {
        final ModuleDependencyData moduleDependencyData = moduleDependencyDataNode.getData();
        moduleDependenciesMap.putValue(moduleDependencyData.getOwnerModule().getId(), moduleDependencyData.getTarget().getId());
    }
    final int[] modulesCount = { 0 };
    ExternalSystemApiUtil.visit(myProjectInfo.getExternalProjectStructure(), node -> {
        final Key key = node.getKey();
        if (!myPublicKeys.contains(key))
            return;
        DataNode modifiableDataNode = getModifiableDataNode(node);
        if (myDependencyAwareDataKeys.contains(key)) {
            modulesCount[0]++;
        }
        if (modifiableDataNode.isIgnored() && myShowSelectedRowsOnly)
            return;
        DataNodeCheckedTreeNode treeNode = treeNodeMap.get(node);
        if (treeNode == null) {
            treeNode = new DataNodeCheckedTreeNode(node);
            if (myDependencyAwareDataKeys.contains(key)) {
                final Identifiable moduleData = (Identifiable) node.getData();
                modulesNodeMap.put(moduleData.getId(), (DataNode<Identifiable>) node);
            }
            if (myPreselectedNodeObject != null && myPreselectedNodeObject.equals(node.getData())) {
                preselectedNode[0] = treeNode;
            }
            if (node.getData() instanceof ModuleData) {
                if (key.equals(ProjectKeys.MODULE) && myProjectInfo.getExternalProjectPath().equals(((ModuleData) node.getData()).getLinkedExternalProjectPath())) {
                    rootModuleNode[0] = treeNode;
                }
            }
            treeNode.setEnabled(myIgnorableKeys.contains(key));
            treeNodeMap.put(node, treeNode);
            final DataNode parent = node.getParent();
            if (parent != null) {
                final CheckedTreeNode parentTreeNode = treeNodeMap.get(parent);
                if (parentTreeNode != null) {
                    parentTreeNode.add(treeNode);
                }
            }
        }
    });
    myModulesCount = modulesCount[0];
    dependentNodeMap.clear();
    for (String moduleId : moduleDependenciesMap.keySet()) {
        final Collection<String> moduleDependencies = moduleDependenciesMap.get(moduleId);
        final DataNode<Identifiable> moduleNode = modulesNodeMap.get(moduleId);
        if (moduleNode != null) {
            dependentNodeMap.putValues(moduleNode, ContainerUtil.mapNotNull(moduleDependencies, modulesNodeMap::get));
        }
    }
    final CheckedTreeNode root = new CheckedTreeNode(null);
    final DataNodeCheckedTreeNode projectNode = treeNodeMap.get(myProjectInfo.getExternalProjectStructure());
    String rootModuleComment = "root module";
    if (rootModuleNode[0] != null && projectNode != null) {
        rootModuleNode[0].comment = rootModuleComment;
        if (!projectNode.isNodeChild(rootModuleNode[0])) {
            projectNode.add(rootModuleNode[0]);
        }
    }
    List<TreeNode> nodes = projectNode != null ? TreeUtil.listChildren(projectNode) : ContainerUtil.emptyList();
    Collections.sort(nodes, (o1, o2) -> {
        if (o1 instanceof DataNodeCheckedTreeNode && o2 instanceof DataNodeCheckedTreeNode) {
            if (rootModuleComment.equals(((DataNodeCheckedTreeNode) o1).comment))
                return -1;
            if (rootModuleComment.equals(((DataNodeCheckedTreeNode) o2).comment))
                return 1;
            return StringUtil.naturalCompare(((DataNodeCheckedTreeNode) o1).text, ((DataNodeCheckedTreeNode) o2).text);
        }
        return 0;
    });
    TreeUtil.addChildrenTo(root, nodes);
    return Couple.of(root, preselectedNode[0]);
}
Also used : Identifiable(com.intellij.openapi.externalSystem.model.project.Identifiable) DataNode(com.intellij.openapi.externalSystem.model.DataNode) TreeNode(javax.swing.tree.TreeNode) ModuleData(com.intellij.openapi.externalSystem.model.project.ModuleData) ModuleDependencyData(com.intellij.openapi.externalSystem.model.project.ModuleDependencyData) Key(com.intellij.openapi.externalSystem.model.Key)

Aggregations

TreeNode (javax.swing.tree.TreeNode)183 DefaultMutableTreeNode (javax.swing.tree.DefaultMutableTreeNode)77 TreePath (javax.swing.tree.TreePath)64 JTree (javax.swing.JTree)25 Nullable (org.jetbrains.annotations.Nullable)20 FilteredTreeModel (gov.sandia.n2a.ui.eq.FilteredTreeModel)18 MPart (gov.sandia.n2a.eqset.MPart)15 NodeBase (gov.sandia.n2a.ui.eq.tree.NodeBase)15 PanelModel (gov.sandia.n2a.ui.eq.PanelModel)14 ArrayList (java.util.ArrayList)13 Enumeration (java.util.Enumeration)13 DefaultTreeModel (javax.swing.tree.DefaultTreeModel)12 NodePart (gov.sandia.n2a.ui.eq.tree.NodePart)11 CannotRedoException (javax.swing.undo.CannotRedoException)10 NotNull (org.jetbrains.annotations.NotNull)10 CannotUndoException (javax.swing.undo.CannotUndoException)9 FontMetrics (java.awt.FontMetrics)8 MutableTreeNode (javax.swing.tree.MutableTreeNode)8 BioModelNode (cbit.vcell.desktop.BioModelNode)7 JMeterTreeNode (org.apache.jmeter.gui.tree.JMeterTreeNode)6