Java Code Examples for javax.swing.tree.TreePath#getPathCount()

The following examples show how to use javax.swing.tree.TreePath#getPathCount() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: TreeExpansionUtil.java    From CQL with GNU Affero General Public License v3.0 6 votes vote down vote up
/**
 *
 *
 * @param path1
 * @param path2
 *
 * @return
 */
public static boolean isDescendant(TreePath path1, TreePath path2) {
	int count1 = path1.getPathCount();
	int count2 = path2.getPathCount();

	if (count1 <= count2) {
		return false;
	}

	while (count1 != count2) {
		path1 = path1.getParentPath();

		count1--;
	}

	return path1.equals(path2);
}
 
Example 2
Source File: DProperties.java    From keystore-explorer with GNU General Public License v3.0 6 votes vote down vote up
private void expandTwoLevels(TreePath treePath) {
	if (treePath.getPathCount() > 2) {
		return;
	}

	TreeNode node = (TreeNode) treePath.getLastPathComponent();

	if (node.getChildCount() >= 0) {
		for (Enumeration<?> enumChildren = node.children(); enumChildren.hasMoreElements();) {
			TreeNode subNode = (TreeNode) enumChildren.nextElement();
			TreePath path = treePath.pathByAddingChild(subNode);
			expandTwoLevels(path);
		}
	}

	jtrProperties.expandPath(treePath);
}
 
Example 3
Source File: ShelvedChangesViewManager.java    From consulo with Apache License 2.0 6 votes vote down vote up
private Set<ShelvedChangeList> getSelectedLists(final boolean recycled) {
  final TreePath[] selections = getSelectionPaths();
  final Set<ShelvedChangeList> changeLists = new HashSet<ShelvedChangeList>();
  if (selections != null) {
    for(TreePath path: selections) {
      if (path.getPathCount() >= 2) {
        DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getPathComponent(1);
        if (node.getUserObject() instanceof ShelvedChangeList) {
          final ShelvedChangeList list = (ShelvedChangeList)node.getUserObject();
          if (((! recycled) && (! list.isRecycled())) ||
            (recycled && list.isRecycled())) {
            changeLists.add(list);
          }
        }
      }
    }
  }
  return changeLists;
}
 
Example 4
Source File: FavoritesTreeViewPanel.java    From consulo with Apache License 2.0 5 votes vote down vote up
static FavoritesListNode getListNodeFromPath(TreePath path) {
  if (path != null && path.getPathCount() > 1) {
    final Object o = path.getPath()[1];
    if (o instanceof DefaultMutableTreeNode) {
      final Object obj = ((DefaultMutableTreeNode)o).getUserObject();
      if (obj instanceof FavoritesTreeNodeDescriptor) {
        final AbstractTreeNode node = ((FavoritesTreeNodeDescriptor)obj).getElement();
        if (node instanceof FavoritesListNode) {
          return (FavoritesListNode)node;
        }
      }
    }
  }
  return null;
}
 
Example 5
Source File: SourceListTreeUI.java    From pumpernickel with MIT License 5 votes vote down vote up
@Override
protected boolean isLocationInExpandControl(TreePath path, int mouseX,
		int mouseY) {
	if (path.getPathCount() == 2)
		return mouseX < BASE_OFFSET;
	return super.isLocationInExpandControl(path, mouseX, mouseY);
}
 
Example 6
Source File: TreePopupImpl.java    From consulo with Apache License 2.0 5 votes vote down vote up
private boolean shouldHidePopup(TreePath path) {
  if (getParent() == null) return false;
  if (path == null) return false;
  if (!myWizardTree.isCollapsed(path)) return false;
  if (myWizardTree.isRootVisible()) {
    return path.getPathCount() == 1;
  }
  return path.getPathCount() == 2;
}
 
Example 7
Source File: SplitPaneTreeView.java    From pdfxtk with Apache License 2.0 5 votes vote down vote up
public void setSelectionPaths(TreePath[] path) {
   if(path == null || path.length == 0) return;
   clearSelection();
   TreePath maxPath = path[0];
   for(int i = 0; i < path.length; i++)
     if(path[i].getPathCount() > maxPath.getPathCount())
maxPath = path[i];
   makeVisible(maxPath);
   for(int i = 0; i < path.length; i++)
     select(path[i]);
 }
 
Example 8
Source File: IndexTreePathState.java    From consulo with Apache License 2.0 5 votes vote down vote up
private static int[] pathToChildIndecies(TreePath path) {
  int[] result = new int[path.getPathCount()];
  for (int i = 0; i < path.getPathCount(); i++) {
    TreeNode node = (TreeNode) path.getPathComponent(i);
    TreeNode parent = node.getParent();
    result[i] = parent != null ? parent.getIndex(node) : 0;
  }
  return result;
}
 
Example 9
Source File: Outline.java    From netbeans with Apache License 2.0 5 votes vote down vote up
private boolean isEditEvent(int row, int column, MouseEvent me) {
    if (me.getClickCount() > 1) {
        return true;
    }
    boolean noModifiers = me.getModifiersEx() == MouseEvent.BUTTON1_DOWN_MASK;
    if (lastEditPosition != null && selectedRow == row && noModifiers &&
        lastEditPosition[0] == row && lastEditPosition[1] == column) {

        int handleWidth = DefaultOutlineCellRenderer.getExpansionHandleWidth();
        Insets ins = getInsets();
        TreePath path = getLayoutCache().getPathForRow(convertRowIndexToModel(row));
        int nd = path.getPathCount() - (isRootVisible() ? 1 : 2);
        if (nd < 0) {
            nd = 0;
        }
        int handleStart = ins.left + (nd * DefaultOutlineCellRenderer.getNestingWidth());
        int handleEnd = ins.left + handleStart + handleWidth;
        // Translate 'x' to position of column if non-0:
        int columnStart = getCellRect(row, column, false).x;
        handleStart += columnStart;
        handleEnd += columnStart;
        if (me.getX() >= handleEnd) {
            lastEditPosition = null;
            return true;
        }
    }
    lastEditPosition = new int[] { row, column };
    return false;
}
 
Example 10
Source File: ChooserTreeView.java    From pdfxtk with Apache License 2.0 5 votes vote down vote up
public void setSelectionPaths(TreePath[] path) {
   if(path == null || path.length == 0) return;
   TreePath maxPath = path[0];
   for(int i = 0; i < path.length; i++)
     if(path[i].getPathCount() > maxPath.getPathCount())
maxPath = path[i];
   
   maxPath = maxPath.getParentPath();
   makeVisible(maxPath);
   
   minSelected = Integer.MAX_VALUE;
   for(int i = 0; i < path.length; i++)
     if(path[i].getParentPath().equals(maxPath))
select(path[i].getLastPathComponent());
 }
 
Example 11
Source File: OutlineView.java    From netbeans with Apache License 2.0 5 votes vote down vote up
/**
 * Tries to expand nodes selected in the explorer manager.
 */
private void expandSelection() {
    Node[] arr = manager.getSelectedNodes ();
    for (int i = 0; i < arr.length; i++) {
        if ( (arr[i].getParentNode() == null) && (! outline.isRootVisible())) {
            // don't try to show root if it is invisible
            continue;
        }
        TreeNode tn = Visualizer.findVisualizer(arr[i]);
        if (tn != null) {
            ArrayList<TreeNode> al = new ArrayList<TreeNode> ();
            while (tn != null) {
                al.add(tn);
                tn = tn.getParent();
            }
            Collections.reverse(al);
            TreePath tp = new TreePath(al.toArray());
            Deque<TreePath> pathsStack = new ArrayDeque<TreePath>(al.size());
            while ((tp != null) && (tp.getPathCount() > 0)) {
                tp = tp.getParentPath();
                if (tp != null) {
                    pathsStack.addFirst(tp);
                }
            }
            for (TreePath etp : pathsStack) {
                outline.expandPath(etp);
            }
        }
    }
}
 
Example 12
Source File: ProgramListener.java    From ghidra with Apache License 2.0 5 votes vote down vote up
private String[] getNames(TreePath path) {

		int count = path.getPathCount();
		String[] names = new String[count];

		for (int i = 0; i < count; i++) {
			ProgramNode node = (ProgramNode) path.getPathComponent(i);
			names[i] = node.getName();
		}
		return names;
	}
 
Example 13
Source File: TreeTableModelAdapter.java    From visualvm with GNU General Public License v2.0 5 votes vote down vote up
private TreePath getCurrentPath(TreePath oldPath) {
    if (oldPath == null || oldPath.getPathCount() < 1) return null;
    if (!treeTableModel.getRoot().equals(oldPath.getPathComponent(0))) return null;
    
    TreePath p = getRootPath();
    Object[] op = oldPath.getPath();
    CCTNode n = (CCTNode)treeTableModel.getRoot();
    
    for (int i = 1; i < op.length; i++) {
        // #241115
        CCTNode[] children = n.getChildren();
        if (children == null) return null;
        
        CCTNode nn = null;
        
        for (CCTNode c : children)
            if (c.equals(op[i])) {
                nn = c;
                break;
            }
        
        if (nn == null) return null;
        
        n = nn;
        p = p.pathByAddingChild(n);
    }
    
    return p;
}
 
Example 14
Source File: TreePathUtil.java    From consulo with Apache License 2.0 5 votes vote down vote up
/**
 * @param path      a tree path to convert
 * @param converter a function to convert path components
 * @param type      a type of components of the new array
 * @return an array of the specified type with the converted path components or {@code null}
 * if the specified path is wrong
 * or a path component is {@code null}
 * or a path component is converted to {@code null}
 */
private static <T> T[] convertTreePathToArray(@Nonnull TreePath path, @Nonnull Function<Object, ? extends T> converter, @Nonnull Class<T> type) {
  int count = path.getPathCount();
  if (count <= 0) return null;
  T[] array = ArrayUtil.newArray(type, count);
  while (path != null && count > 0) {
    Object component = path.getLastPathComponent();
    if (component == null) return null;
    T object = convert(component, converter);
    if (object == null) return null;
    array[--count] = object;
    path = path.getParentPath();
  }
  return path != null || count > 0 ? null : array;
}
 
Example 15
Source File: PropagatePreservingUncheckTreeCheckingMode.java    From importer-exporter with Apache License 2.0 5 votes vote down vote up
@Override
   public void checkPath(TreePath path) {
// check is propagated to children
this.model.checkSubTree(path);
// check all the ancestors with subtrees checked
TreePath[] parents = new TreePath[path.getPathCount()];
parents[0] = path;
// boolean uncheckAll = false;
boolean greyAll = false;
for (int i = 1; i < parents.length; i++) {
    parents[i] = parents[i - 1].getParentPath();
    this.model.addToCheckedPathsSet(parents[i]);
    if (greyAll) {
	this.model.addToGreyedPathsSet(parents[i]);
    } else {
	switch (this.model.getChildrenChecking(parents[i])) {
	case HALF_CHECKED:
	    this.model.addToGreyedPathsSet(parents[i]);
	    greyAll = true;
	    break;
	case ALL_UNCHECKED:
	    System.err.println("This should not happen (PropagatePreservingUncheckTreeCheckingMode)");
	    break;
	case ALL_CHECKED:
	    this.model.removeFromGreyedPathsSet(parents[i]);
	    break;
	default:
	case NO_CHILDREN:
	    System.err.println("This should not happen (PropagatePreservingCheckTreeCheckingMode)");
	    break;
	}
    }
}
   }
 
Example 16
Source File: HistoryPanel.java    From triplea with GNU General Public License v3.0 4 votes vote down vote up
/** Selects the most recent history node, expanding the tree if necessary. */
public void goToEnd() {
  final HistoryNode last;
  try {
    data.acquireWriteLock();
    last = data.getHistory().getLastNode();
  } finally {
    data.releaseWriteLock();
  }
  final TreePath path = new TreePath(last.getPath());
  final TreePath parent = path.getParentPath();
  if (!mouseOverPanel) {
    // make sure we undo our change of the lock property

    gotoNode(last);
    if (lastParent == null) {
      lastParent = tree.getSelectionPath();
    }
    tree.setSelectionPath(path);
    collapseExpanded(path);
    collapseUpFromLastParent(parent);
    final Rectangle rect = tree.getPathBounds(path);
    rect.setRect(0, rect.getY(), rect.getWidth(), rect.getHeight());
    tree.scrollRectToVisible(rect);
  } else {
    if (!mouseWasOverPanel) {
      // save the lock property so that we can undo it

      TreePath root = parent;
      while (root.getPathCount() > 1) {
        root = root.getParentPath();
      }
      final Enumeration<TreePath> expandedDescendants = tree.getExpandedDescendants(root);
      addToStayExpanded(expandedDescendants);
    } else {
      collapseUpFromLastParent(parent);
    }
    tree.expandPath(parent);
  }
  mouseWasOverPanel = mouseOverPanel;
  lastParent = parent;
}
 
Example 17
Source File: ProjectExplorer.java    From Logisim with GNU General Public License v3.0 4 votes vote down vote up
private boolean isPathValid(TreePath path) {
	if (path == null || path.getPathCount() > 3)
		return false;
	Object last = path.getLastPathComponent();
	return last instanceof Tool;
}
 
Example 18
Source File: ProjectTreeModel.java    From quickfix-messenger with BSD 3-Clause "New" or "Revised" License 4 votes vote down vote up
@Override
public void valueForPathChanged(TreePath treePath, Object newValue)
{
	Object[] path;
	int[] childIndices = null;
	Object[] children = null;
	if (treePath.getPathCount() > 1)
	{
		Object parent = treePath.getParentPath().getLastPathComponent();
		if (parent instanceof FieldType)
		{
			((FieldType) parent).setValue((String) newValue);
			childIndices = new int[] { 0 };
		}

		else if (parent instanceof SessionType)
		{
			/*
			 * TODO Find a better way to know whether the new value is a
			 * session name or an application version
			 */
			String newString = (String) newValue;
			if ((newString.contains("FIX.") || (newString.contains("FIXT.")))
					&& newString.contains(">"))
			{
				((SessionType) parent).setName(newString);
				childIndices = new int[] { 0 };
			} else if (newString.contains("FIX."))
			{
				((SessionType) parent).setAppVersionId(newString);
				childIndices = new int[] { 1 };
			}
		}

		treePath = treePath.getParentPath().pathByAddingChild(newValue);
		path = treePath.getParentPath().getPath();
		children = new Object[] { newValue };
	} else
	{
		path = treePath.getPath();
	}

	fireTreeNodesChanged(this, path, childIndices, children);
}
 
Example 19
Source File: InspectorTreeUI.java    From flutter-intellij with BSD 3-Clause "New" or "Revised" License 4 votes vote down vote up
@Override
protected void paintVerticalPartOfLeg(final Graphics g, final Rectangle clipBounds, final Insets insets, final TreePath path) {
  final DefaultMutableTreeNode node = (DefaultMutableTreeNode)path.getLastPathComponent();
  if (node.getChildCount() < 2) {
    // We could draw lines for nodes with a single child but we omit them
    // to more of an emphasis of lines for nodes with multiple children.
    return;
  }
  final DiagnosticsNode diagnostic = maybeGetDiagnostic(node);
  if (diagnostic != null && !diagnostic.hasChildren()) {
    // This avoids drawing lines for nodes with only property children.
    return;
  }

  final int depth = path.getPathCount() - 1;
  if (depth == 0 && !getShowsRootHandles() && !isRootVisible()) {
    return;
  }

  int lineX = getRowX(-1, depth);
  if (leftToRight) {
    lineX = lineX - getRightChildIndent() + insets.left;
  }
  else {
    lineX = tree.getWidth() - lineX - insets.right +
            getRightChildIndent() - 1;
  }
  final int clipLeft = clipBounds.x;
  final int clipRight = clipBounds.x + (clipBounds.width - 1);

  if (lineX >= clipLeft && lineX <= clipRight) {
    final int clipTop = clipBounds.y;
    final int clipBottom = clipBounds.y + clipBounds.height;
    Rectangle parentBounds = getPathBounds(tree, path);
    boolean previousDashed = false;

    int top;
    if (parentBounds == null) {
      top = Math.max(insets.top + getVerticalLegBuffer(),
                     clipTop);
    }
    else {
      top = Math.max(parentBounds.y + parentBounds.height +
                     getVerticalLegBuffer(), clipTop);
    }

    if (depth == 0 && !isRootVisible()) {
      final TreeModel model = getModel();

      if (model != null) {
        final Object root = model.getRoot();

        if (model.getChildCount(root) > 0) {
          parentBounds = getPathBounds(tree, path.
            pathByAddingChild(model.getChild(root, 0)));
          if (parentBounds != null) {
            top = Math.max(insets.top + getVerticalLegBuffer(),
                           parentBounds.y +
                           parentBounds.height / 2);
          }
        }
      }
    }

    for (int i = 0; i < node.getChildCount(); ++i) {
      final DefaultMutableTreeNode child = (DefaultMutableTreeNode)node.getChildAt(i);
      final DiagnosticsNode childDiagnostic = maybeGetDiagnostic(child);
      boolean dashed = false;
      if (childDiagnostic != null) {
        dashed = childDiagnostic.getStyle() == DiagnosticsTreeStyle.offstage;
      }

      final Rectangle childBounds = getPathBounds(tree, path.pathByAddingChild(child));
      if (childBounds == null)
      // This shouldn't happen, but if the model is modified
      // in another thread it is possible for this to happen.
      // Swing isn't multithreaded, but I'll add this check in
      // anyway.
      {
        continue;
      }

      final int bottom = Math.min(childBounds.y +
                                  (childBounds.height / 2), clipBottom);

      if (top <= bottom && bottom >= clipTop && top <= clipBottom) {
        g.setColor(JBColor.GRAY);
        paintVerticalLine(g, tree, lineX, top, bottom, dashed);
      }
      top = bottom;
      previousDashed = dashed;
    }
  }
}
 
Example 20
Source File: JTreeTable.java    From visualvm with GNU General Public License v2.0 4 votes vote down vote up
private boolean isAnyRowSelected() {
    TreePath treeSelectionPath = tree.getSelectionPath();

    return ((treeSelectionPath != null) && (treeSelectionPath.getPathCount() > 0));
}