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);
 }
 private void removeSelected() {
   CheckedTreeNode node = getSelectedToolNode();
   if (node != null) {
     int result =
         Messages.showYesNoDialog(
             this,
             ToolsBundle.message("tools.delete.confirmation"),
             CommonBundle.getWarningTitle(),
             Messages.getWarningIcon());
     if (result != 0) {
       return;
     }
     myIsModified = true;
     if (node.getUserObject() instanceof Tool) {
       Tool tool = (Tool) node.getUserObject();
       CheckedTreeNode parentNode = (CheckedTreeNode) node.getParent();
       ((ToolsGroup) parentNode.getUserObject()).removeElement(tool);
       removeNodeFromParent(node);
       if (parentNode.getChildCount() == 0) {
         removeNodeFromParent(parentNode);
       }
     } else if (node.getUserObject() instanceof ToolsGroup) {
       removeNodeFromParent(node);
     }
     update();
     myTree.requestFocus();
   }
 }
 /**
  * From the dialog collects roots and commits to be pushed.
  *
  * @return roots to be pushed.
  */
 private Collection<Root> getRootsToPush() {
   final ArrayList<Root> rootsToPush = new ArrayList<Root>();
   for (int i = 0; i < myTreeRoot.getChildCount(); i++) {
     CheckedTreeNode node = (CheckedTreeNode) myTreeRoot.getChildAt(i);
     Root r = (Root) node.getUserObject();
     if (r.remoteName == null || r.commits.size() == 0) {
       continue;
     }
     boolean topCommit = true;
     for (int j = 0; j < node.getChildCount(); j++) {
       if (node.getChildAt(j) instanceof CheckedTreeNode) {
         CheckedTreeNode commitNode = (CheckedTreeNode) node.getChildAt(j);
         if (commitNode.isChecked()) {
           Commit commit = (Commit) commitNode.getUserObject();
           if (!topCommit) {
             r.commitToPush = commit.revision.asString();
           }
           rootsToPush.add(r);
           break;
         }
         topCommit = false;
       }
     }
   }
   return rootsToPush;
 }
  private void editSelected() {
    CheckedTreeNode node = getSelectedToolNode();
    if (node != null && node.getUserObject() instanceof Tool) {
      Tool selected = (Tool) node.getUserObject();
      if (selected != null) {
        String oldGroupName = selected.getGroup();
        ToolEditorDialog dlg = new ToolEditorDialog(this);
        dlg.setData(selected, getGroups());
        dlg.show();
        if (dlg.isOK()) {
          selected.copyFrom(dlg.getData());
          String newGroupName = selected.getGroup();
          if (!Comparing.equal(oldGroupName, newGroupName)) {
            CheckedTreeNode oldGroupNode = (CheckedTreeNode) node.getParent();
            removeNodeFromParent(node);
            ((ToolsGroup) oldGroupNode.getUserObject()).removeElement(selected);
            if (oldGroupNode.getChildCount() == 0) {
              removeNodeFromParent(oldGroupNode);
            }

            insertNewTool(selected, true);
          } else {
            (getModel()).nodeChanged(node);
          }
          myIsModified = true;
          update();
        }
      }
    }
  }
 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 ToolsGroup[] getGroupList() {
    ArrayList<ToolsGroup> result = new ArrayList<ToolsGroup>();
    MutableTreeNode root = (MutableTreeNode) myTree.getModel().getRoot();
    for (int i = 0; i < root.getChildCount(); i++) {
      final CheckedTreeNode node = (CheckedTreeNode) root.getChildAt(i);
      for (int j = 0; j < node.getChildCount(); j++) {
        final CheckedTreeNode toolNode = (CheckedTreeNode) node.getChildAt(j);
        ((Tool) toolNode.getUserObject()).setEnabled(toolNode.isChecked());
      }

      result.add((ToolsGroup) node.getUserObject());
    }

    return result.toArray(new ToolsGroup[result.size()]);
  }
 /**
  * The rebase operation is needed if the current branch is behind remote branch or if some commit
  * is not selected.
  *
  * @return true if rebase is needed for at least one vcs root
  */
 private boolean isRebaseNeeded() {
   for (int i = 0; i < myTreeRoot.getChildCount(); i++) {
     CheckedTreeNode node = (CheckedTreeNode) myTreeRoot.getChildAt(i);
     Root r = (Root) node.getUserObject();
     if (r.commits.size() == 0) {
       continue;
     }
     boolean seenCheckedNode = false;
     for (int j = 0; j < node.getChildCount(); j++) {
       if (node.getChildAt(j) instanceof CheckedTreeNode) {
         CheckedTreeNode commitNode = (CheckedTreeNode) node.getChildAt(j);
         if (commitNode.isChecked()) {
           seenCheckedNode = true;
         } else {
           if (seenCheckedNode) {
             return true;
           }
         }
       }
     }
     if (seenCheckedNode && r.remoteCommits > 0) {
       return true;
     }
   }
   return false;
 }
 @Override
 protected void onNodeStateChanged(final CheckedTreeNode node) {
   Object obj = node.getUserObject();
   if (obj instanceof TemplateImpl) {
     ((TemplateImpl) obj).setDeactivated(!node.isChecked());
   }
 }
 private CheckedTreeNode insertNewTool(final CheckedTreeNode groupNode, final Tool toolCopy) {
   CheckedTreeNode toolNode = new CheckedTreeNode(toolCopy);
   toolNode.setChecked(toolCopy.isEnabled());
   ((ToolsGroup) groupNode.getUserObject()).addElement(toolCopy);
   groupNode.add(toolNode);
   nodeWasInserted(toolNode);
   return toolNode;
 }
 private void moveNode(final Direction direction) {
   CheckedTreeNode node = getSelectedNode();
   if (node != null) {
     if (isMovingAvailable(node, direction)) {
       moveNode(node, direction);
       if (node.getUserObject() instanceof Tool) {
         ToolsGroup group = (ToolsGroup) (((CheckedTreeNode) node.getParent()).getUserObject());
         Tool tool = (Tool) node.getUserObject();
         moveElementInsideGroup(tool, group, direction);
       }
       TreePath path = new TreePath(node.getPath());
       myTree.getSelectionModel().setSelectionPath(path);
       myTree.expandPath(path);
       myTree.requestFocus();
     }
   }
 }
Exemplo n.º 12
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));
 }
  private CheckedTreeNode findGroupNode(final String group) {
    for (int i = 0; i < getTreeRoot().getChildCount(); i++) {
      CheckedTreeNode node = (CheckedTreeNode) getTreeRoot().getChildAt(i);
      ToolsGroup g = (ToolsGroup) node.getUserObject();
      if (Comparing.equal(group, g.getName())) return node;
    }

    return null;
  }
Exemplo n.º 14
0
  protected boolean toggleNode(CheckedTreeNode node) {
    boolean checked = !node.isChecked();
    checkNode(node, checked);

    // notify model listeners about model change
    final TreeModel model = getTree().getModel();
    model.valueForPathChanged(new TreePath(node.getPath()), node.getUserObject());

    return checked;
  }
 /**
  * Executes when FETCH button is pressed. Fetches repository in background. Then updates the
  * commit tree.
  */
 private void fetch() {
   Map<VirtualFile, Set<String>> unchecked = new HashMap<VirtualFile, Set<String>>();
   for (int i = 0; i < myTreeRoot.getChildCount(); i++) {
     Set<String> uncheckedCommits = new HashSet<String>();
     CheckedTreeNode node = (CheckedTreeNode) myTreeRoot.getChildAt(i);
     Root r = (Root) node.getUserObject();
     for (int j = 0; j < node.getChildCount(); j++) {
       if (node.getChildAt(j) instanceof CheckedTreeNode) {
         CheckedTreeNode commitNode = (CheckedTreeNode) node.getChildAt(j);
         if (!commitNode.isChecked()) {
           uncheckedCommits.add(((Commit) commitNode.getUserObject()).commitId());
         }
       }
     }
     if (!uncheckedCommits.isEmpty()) {
       unchecked.put(r.root, uncheckedCommits);
     }
   }
   refreshTree(true, unchecked);
 }
Exemplo n.º 16
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"));
 }
Exemplo n.º 17
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;
 }
Exemplo n.º 18
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());
    }
  }
 @Nullable
 private ToolsGroup getSelectedToolGroup() {
   CheckedTreeNode node = getSelectedToolNode();
   if (node == null) return null;
   return node.getUserObject() instanceof ToolsGroup ? (ToolsGroup) node.getUserObject() : null;
 }
  private RebaseInfo collectRebaseInfo() {
    final Set<VirtualFile> roots = new HashSet<VirtualFile>();
    final Set<VirtualFile> rootsWithMerges = new HashSet<VirtualFile>();
    final Map<VirtualFile, List<String>> reorderedCommits =
        new HashMap<VirtualFile, List<String>>();
    final Map<VirtualFile, Set<String>> uncheckedCommits = new HashMap<VirtualFile, Set<String>>();
    for (int i = 0; i < myTreeRoot.getChildCount(); i++) {
      CheckedTreeNode node = (CheckedTreeNode) myTreeRoot.getChildAt(i);
      Root r = (Root) node.getUserObject();
      Set<String> unchecked = new HashSet<String>();
      uncheckedCommits.put(r.root, unchecked);
      if (r.commits.size() == 0) {
        if (r.remoteCommits > 0) {
          roots.add(r.root);
        }
        continue;
      }
      boolean seenCheckedNode = false;
      boolean reorderNeeded = false;
      boolean seenMerges = false;
      for (int j = 0; j < node.getChildCount(); j++) {
        if (node.getChildAt(j) instanceof CheckedTreeNode) {
          CheckedTreeNode commitNode = (CheckedTreeNode) node.getChildAt(j);
          Commit commit = (Commit) commitNode.getUserObject();
          seenMerges |= commit.isMerge;
          if (commitNode.isChecked()) {
            seenCheckedNode = true;
          } else {
            unchecked.add(commit.commitId());
            if (seenCheckedNode) {
              reorderNeeded = true;
            }
          }
        }
      }
      if (seenMerges) {
        rootsWithMerges.add(r.root);
      }
      if (r.remoteCommits > 0 || reorderNeeded) {
        roots.add(r.root);
      }
      if (reorderNeeded) {
        List<String> reordered = new ArrayList<String>();
        for (int j = 0; j < node.getChildCount(); j++) {
          if (node.getChildAt(j) instanceof CheckedTreeNode) {
            CheckedTreeNode commitNode = (CheckedTreeNode) node.getChildAt(j);
            if (!commitNode.isChecked()) {
              Commit commit = (Commit) commitNode.getUserObject();
              reordered.add(commit.revision.asString());
            }
          }
        }
        for (int j = 0; j < node.getChildCount(); j++) {
          if (node.getChildAt(j) instanceof CheckedTreeNode) {
            CheckedTreeNode commitNode = (CheckedTreeNode) node.getChildAt(j);
            if (commitNode.isChecked()) {
              Commit commit = (Commit) commitNode.getUserObject();
              reordered.add(commit.revision.asString());
            }
          }
        }
        Collections.reverse(reordered);
        reorderedCommits.put(r.root, reordered);
      }
    }
    final GitVcsSettings.UpdateChangesPolicy p =
        UpdatePolicyUtils.getUpdatePolicy(myStashRadioButton, myShelveRadioButton);
    assert p == GitVcsSettings.UpdateChangesPolicy.STASH
        || p == GitVcsSettings.UpdateChangesPolicy.SHELVE;

    return new RebaseInfo(reorderedCommits, rootsWithMerges, uncheckedCommits, roots, p);
  }
 /** Update buttons on the form */
 private void updateButtons() {
   String error = null;
   boolean wasCheckedNode = false;
   boolean reorderMerges = false;
   for (int i = 0; i < myTreeRoot.getChildCount(); i++) {
     CheckedTreeNode node = (CheckedTreeNode) myTreeRoot.getChildAt(i);
     boolean seenCheckedNode = false;
     boolean reorderNeeded = false;
     boolean seenMerges = false;
     boolean seenUnchecked = false;
     for (int j = 0; j < node.getChildCount(); j++) {
       if (node.getChildAt(j) instanceof CheckedTreeNode) {
         CheckedTreeNode commitNode = (CheckedTreeNode) node.getChildAt(j);
         Commit commit = (Commit) commitNode.getUserObject();
         seenMerges |= commit.isMerge;
         if (commitNode.isChecked()) {
           seenCheckedNode = true;
         } else {
           seenUnchecked = true;
           if (seenCheckedNode) {
             reorderNeeded = true;
           }
         }
       }
     }
     if (!seenCheckedNode) {
       continue;
     }
     Root r = (Root) node.getUserObject();
     if (seenMerges && seenUnchecked) {
       error = GitBundle.getString("push.active.error.merges.unchecked");
     }
     if (seenMerges && reorderNeeded) {
       reorderMerges = true;
       error = GitBundle.getString("push.active.error.reorder.merges");
     }
     if (reorderNeeded) {
       if (error == null) {
         error = GitBundle.getString("push.active.error.reorder.needed");
       }
     }
     if (r.currentBranch == null) {
       if (error == null) {
         error = GitBundle.getString("push.active.error.no.branch");
       }
       break;
     }
     wasCheckedNode |= r.remoteBranch != null;
     if (r.remoteCommits != 0 && r.commits.size() != 0) {
       if (error == null) {
         error = GitBundle.getString("push.active.error.behind");
       }
       break;
     }
   }
   boolean rebaseNeeded = isRebaseNeeded();
   myPushButton.setEnabled(wasCheckedNode && error == null && !rebaseNeeded);
   setErrorText(error);
   myRebaseButton.setEnabled(rebaseNeeded && !reorderMerges);
   setOKActionEnabled(myPushButton.isEnabled() || myRebaseButton.isEnabled());
 }
Exemplo n.º 22
0
 private static TreeDescriptor getDescriptor(final CheckedTreeNode node) {
   return (TreeDescriptor) node.getUserObject();
 }