コード例 #1
0
 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);
 }
コード例 #2
0
 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());
 }
コード例 #3
0
 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;
 }
コード例 #4
0
 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));
 }
コード例 #5
0
 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"));
 }
コード例 #6
0
 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;
 }
コード例 #7
0
  @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());
    }
  }
コード例 #8
0
 private static TreeDescriptor getDescriptor(final CheckedTreeNode node) {
   return (TreeDescriptor) node.getUserObject();
 }