示例#1
0
  private Node getNextMeaningfullNode() {
    if (comp.nodesForNext == null) {
      comp.nodesForNext = new LinkedList<Node>();
      comp.nodesForNext.add(comp.getExplorerManager().getRootContext());
    }

    List<Node> nodesForNext = comp.nodesForNext;

    while (!nodesForNext.isEmpty()) {
      Node top = nodesForNext.remove(0);

      if (top.getChildren() != Children.LEAF) {
        nodesForNext.addAll(0, Arrays.asList(top.getChildren().getNodes(true)));
        continue;
      }

      ErrorDescription ed = top.getLookup().lookup(ErrorDescription.class);

      if (ed != null) {
        Node[] selected = comp.getExplorerManager().getSelectedNodes();

        if (selected.length == 1 && selected[0] == top) {
          addToSeenNodes(top);
          continue;
        }

        return top;
      }
    }

    return null;
  }
示例#2
0
  private void addToSeenNodes(Node n) {
    if (comp.seenNodes == null) {
      comp.seenNodes = new LinkedList<Node>();
    }

    comp.seenNodes.add(0, n);
  }
示例#3
0
  public void actionPerformed(ActionEvent e) {
    Node node = getNextMeaningfullNode();

    if (node == null) {
      // should not happen
      fireEnabledChanged();
      return;
    }

    OpenCookie oc = node.getLookup().lookup(OpenCookie.class);

    assert oc != null;

    addToSeenNodes(node);

    try {
      comp.getExplorerManager().setSelectedNodes(new Node[] {node});
    } catch (PropertyVetoException ex) {
      Exceptions.printStackTrace(ex);
    }

    oc.open();
    fireEnabledChanged();
  }