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
) {
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
) {
31 myBrowser
.expandNode(node
);
33 if (pathElements
.isEmpty()) {
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);