public void customizeCellRenderer( final ColoredTreeCellRenderer targetRenderer, CheckedTreeNode node, boolean selected, final boolean checked, boolean expanded, boolean leaf, boolean hasFocus) { targetRenderer.setIcon(PlatformIcons.PACKAGE_ICON); final String displayName; final CheckedTreeNode parent = (CheckedTreeNode) node.getParent(); if (parent != null && parent.getUserObject() instanceof PackageDescriptor) { final String parentPackageInTree = ((PackageDescriptor) parent.getUserObject()).getPackageName() + "."; displayName = myPackageName.startsWith(parentPackageInTree) ? myPackageName.substring(parentPackageInTree.length()) : myPackageName; } else { displayName = myPackageName; } targetRenderer.append( displayName, checked ? SimpleTextAttributes.SIMPLE_CELL_ATTRIBUTES : SimpleTextAttributes.GRAYED_ATTRIBUTES); }
public int compare(CheckedTreeNode o1, CheckedTreeNode o2) { final int w1 = getWeight(o1); final int w2 = getWeight(o2); if (w1 != w2) { return w1 - w2; } final TreeDescriptor d1 = (TreeDescriptor) o1.getUserObject(); final TreeDescriptor d2 = (TreeDescriptor) o2.getUserObject(); if (d1 instanceof BreakpointDescriptor && d2 instanceof BreakpointDescriptor) { return 0; } return d1.getDisplayString().compareTo(d2.getDisplayString()); }
private int getWeight(CheckedTreeNode node) { if (node.getUserObject() instanceof BreakpointDescriptor) { return 100; } if (node.getUserObject() instanceof MethodDescriptor) { return 90; } if (node.getUserObject() instanceof PackageDescriptor) { return 80; } if (node.getUserObject() instanceof ClassDescriptor) { return 70; } return 50; }
private void rebuildTree() { final TreeStateSnapshot treeStateSnapshot = new TreeStateSnapshot(this); myRootNode.removeAllChildren(); myDescriptorToNodeMap.clear(); myDescriptorToNodeMap.put((TreeDescriptor) myRootNode.getUserObject(), myRootNode); // build tree for (final Breakpoint breakpoint : myBreakpoints) { CheckedTreeNode node = createNode(new BreakpointDescriptor(breakpoint)); node.setChecked(breakpoint.ENABLED); addNode(node); } // remove all package nodes with one child final int count = myRootNode.getChildCount(); final List<CheckedTreeNode> children = new ArrayList<CheckedTreeNode>(); for (int idx = 0; idx < count; idx++) { CheckedTreeNode child = (CheckedTreeNode) myRootNode.getChildAt(idx); if (!(child.getUserObject() instanceof PackageDescriptor)) { children.add(child); continue; } while (child.getUserObject() instanceof PackageDescriptor && child.getChildCount() <= 1) { child = (CheckedTreeNode) child.getChildAt(0); } if (!(child.getUserObject() instanceof PackageDescriptor)) { child = (CheckedTreeNode) child.getParent(); } for (CheckedTreeNode childToRemove = (CheckedTreeNode) child.getParent(); !childToRemove.equals(myRootNode); childToRemove = (CheckedTreeNode) childToRemove.getParent()) { myDescriptorToNodeMap.remove(childToRemove.getUserObject()); } children.add(child); } for (final CheckedTreeNode aChildren : children) { aChildren.removeFromParent(); } myRootNode.removeAllChildren(); for (final CheckedTreeNode child : children) { myRootNode.add(child); } sortChildren(myRootNode); ((DefaultTreeModel) getModel()).nodeStructureChanged(myRootNode); treeStateSnapshot.restore(this); expandPath(new TreePath(myRootNode)); }
public BreakpointTree(final Project project) { super(new BreakpointTreeCellRenderer(), new CheckedTreeNode(new RootDescriptor())); myRootNode = (CheckedTreeNode) getModel().getRoot(); myDescriptorToNodeMap.put((TreeDescriptor) myRootNode.getUserObject(), myRootNode); myBreakpointManager = DebuggerManagerEx.getInstanceEx(project).getBreakpointManager(); myNodeUpdateListener = new BreakpointManagerListener() { public void breakpointsChanged() { repaint(); } }; myBreakpointManager.addBreakpointManagerListener(myNodeUpdateListener); getEmptyText().setText(XDebuggerBundle.message("debugger.no.breakpoints")); }
private Breakpoint getSibling(Breakpoint breakpoint, boolean nextSibling) { final CheckedTreeNode node = myDescriptorToNodeMap.get(new BreakpointDescriptor(breakpoint)); if (node == null) { return null; } final CheckedTreeNode sibling = (CheckedTreeNode) (nextSibling ? node.getNextSibling() : node.getPreviousSibling()); if (sibling == null) { return null; } final TreeDescriptor descriptor = (TreeDescriptor) sibling.getUserObject(); return descriptor instanceof BreakpointDescriptor ? ((BreakpointDescriptor) descriptor).getBreakpoint() : null; }
@Override protected void onNodeStateChanged(final CheckedTreeNode node) { final Object descriptor = node.getUserObject(); final Breakpoint breakpoint; if (descriptor instanceof BreakpointDescriptor) { breakpoint = ((BreakpointDescriptor) descriptor).getBreakpoint(); if (myBreakpointManager.findMasterBreakpoint(breakpoint) != null) { return; } } else { breakpoint = null; } if (breakpoint != null) { myBreakpointManager.setBreakpointEnabled(breakpoint, node.isChecked()); } }
private static TreeDescriptor getDescriptor(final CheckedTreeNode node) { return (TreeDescriptor) node.getUserObject(); }