IDEADEV-14950 fixed (Subversion: BrowseSVNRepository: preserve the tree state (expand...
[fedora-idea.git] / plugins / svn4idea / src / org / jetbrains / idea / svn / dialogs / browser / Expander.java
blob3c16cc57a77416fef659a282ea0ee5489b642e09
1 package org.jetbrains.idea.svn.dialogs.browser;
3 import org.jetbrains.idea.svn.dialogs.ReloadListener;
4 import org.jetbrains.idea.svn.dialogs.RepositoryBrowserComponent;
5 import org.jetbrains.idea.svn.dialogs.RepositoryTreeNode;
7 import javax.swing.tree.TreeNode;
8 import java.util.Enumeration;
9 import java.util.LinkedList;
10 import java.util.List;
12 public class Expander implements ReloadListener {
13 private final List<String> pathElements;
14 private final RepositoryBrowserComponent myBrowser;
16 public Expander(final TreeNode[] path, final RepositoryBrowserComponent browser) {
17 myBrowser = browser;
18 pathElements = new LinkedList<String>();
19 // starting from 1st level child, not root (root is already defined/found)
20 for (int i = 1; i < path.length; i++) {
21 TreeNode node = path[i];
22 pathElements.add(node.toString());
26 public void onAfterReload(final RepositoryTreeNode node) {
27 if (node.isLeaf()) {
28 return;
31 myBrowser.expandNode(node);
33 if (pathElements.isEmpty()) {
34 return;
37 final String nextKey = pathElements.remove(0);
39 final Enumeration children = node.children();
40 while ((nextKey != null) && children.hasMoreElements()) {
41 final TreeNode treeNode = (TreeNode) children.nextElement();
43 if (treeNode instanceof RepositoryTreeNode) {
44 final RepositoryTreeNode repositoryTreeNode = (RepositoryTreeNode) treeNode;
45 // toString() is sufficient here -> user objects do not define equals()
46 if (nextKey.equals(treeNode.toString())) {
47 repositoryTreeNode.registerReloadListener(this);
48 break;