29
29
import com .sun .hotspot .igv .util .StringUtils ;
30
30
import java .awt .Image ;
31
31
import java .util .HashMap ;
32
- import java .util .List ;
33
32
import java .util .Map ;
34
- import org . openide . nodes . AbstractNode ;
35
- import org .openide .nodes . Children ;
36
- import org .openide .nodes . Node ;
37
- import org .openide .nodes .Sheet ;
33
+ import javax . swing . Action ;
34
+ import org .openide .actions . PropertiesAction ;
35
+ import org .openide .actions . RenameAction ;
36
+ import org .openide .nodes .* ;
38
37
import org .openide .util .ImageUtilities ;
39
38
import org .openide .util .lookup .AbstractLookup ;
40
39
import org .openide .util .lookup .InstanceContent ;
@@ -49,7 +48,7 @@ public class FolderNode extends AbstractNode {
49
48
private final FolderChildren children ;
50
49
// NetBeans node corresponding to each opened graph. Used to highlight the
51
50
// focused graph in the Outline window.
52
- private static final Map <InputGraph , GraphNode > graphNode = new HashMap <>();
51
+ private static final Map <InputGraph , GraphNode > graphNodeMap = new HashMap <>();
53
52
private boolean selected = false ;
54
53
55
54
private static class FolderChildren extends Children .Keys <FolderElement > implements ChangedListener {
@@ -66,14 +65,14 @@ public Folder getFolder() {
66
65
}
67
66
68
67
@ Override
69
- protected Node [] createNodes (FolderElement e ) {
70
- if (e instanceof InputGraph ) {
71
- InputGraph g = (InputGraph ) e ;
72
- GraphNode n = new GraphNode (g );
73
- graphNode .put (g , n );
74
- return new Node []{n };
75
- } else if (e instanceof Folder ) {
76
- return new Node []{new FolderNode ((Folder ) e )};
68
+ protected Node [] createNodes (FolderElement folderElement ) {
69
+ if (folderElement instanceof InputGraph ) {
70
+ InputGraph inputGraph = (InputGraph ) folderElement ;
71
+ GraphNode graphNode = new GraphNode (inputGraph );
72
+ graphNodeMap .put (inputGraph , graphNode );
73
+ return new Node []{graphNode };
74
+ } else if (folderElement instanceof Group ) {
75
+ return new Node []{new FolderNode ((Group ) folderElement )};
77
76
} else {
78
77
return null ;
79
78
}
@@ -83,19 +82,23 @@ protected Node[] createNodes(FolderElement e) {
83
82
protected void destroyNodes (Node [] nodes ) {
84
83
for (Node n : nodes ) {
85
84
// Each node is only present once in the graphNode map.
86
- graphNode .values ().remove (n );
85
+ graphNodeMap .values ().remove (n );
86
+ }
87
+ for (Node node : getNodes ()) {
88
+ node .setDisplayName (node .getDisplayName ());
87
89
}
88
90
}
89
91
90
92
@ Override
91
93
public void addNotify () {
92
- this .setKeys (folder .getElements ());
94
+ super .addNotify ();
95
+ setKeys (folder .getElements ());
93
96
}
94
97
95
98
@ Override
96
99
public void changed (Object source ) {
97
100
addNotify ();
98
- }
101
+ }
99
102
}
100
103
101
104
@ Override
@@ -128,7 +131,7 @@ private FolderNode(final Folder folder, FolderChildren children, InstanceContent
128
131
if (folder instanceof FolderElement ) {
129
132
final FolderElement folderElement = (FolderElement ) folder ;
130
133
this .setDisplayName (folderElement .getName ());
131
- content .add ((RemoveCookie ) () -> {
134
+ this . content .add ((RemoveCookie ) () -> {
132
135
children .destroyNodes (children .getNodes ());
133
136
folderElement .getParent ().removeElement (folderElement );
134
137
});
@@ -141,6 +144,28 @@ public void setSelected(boolean selected) {
141
144
fireIconChange ();
142
145
}
143
146
147
+ @ Override
148
+ public boolean canRename () {
149
+ return true ;
150
+ }
151
+
152
+ @ Override
153
+ public void setName (String name ) {
154
+ children .getFolder ().setName (name );
155
+ fireDisplayNameChange (null , null );
156
+ }
157
+
158
+ @ Override
159
+ public String getName () {
160
+ return children .getFolder ().getName ();
161
+ }
162
+
163
+ @ Override
164
+ public String getDisplayName () {
165
+ return children .getFolder ().getDisplayName ();
166
+ }
167
+
168
+ @ Override
144
169
public String getHtmlDisplayName () {
145
170
String htmlDisplayName = StringUtils .escapeHTML (getDisplayName ());
146
171
if (selected ) {
@@ -149,15 +174,6 @@ public String getHtmlDisplayName() {
149
174
return htmlDisplayName ;
150
175
}
151
176
152
- public void init (String name , List <Group > groups ) {
153
- this .setDisplayName (name );
154
- children .addNotify ();
155
-
156
- for (Group g : groups ) {
157
- content .add (g );
158
- }
159
- }
160
-
161
177
public boolean isRootNode () {
162
178
Folder folder = getFolder ();
163
179
return (folder instanceof GraphDocument );
@@ -168,12 +184,20 @@ public Image getOpenedIcon(int i) {
168
184
return getIcon (i );
169
185
}
170
186
187
+ @ Override
188
+ public Action [] getActions (boolean b ) {
189
+ return new Action []{
190
+ RenameAction .findObject (RenameAction .class , true ),
191
+ PropertiesAction .findObject (PropertiesAction .class , true ),
192
+ };
193
+ }
194
+
171
195
public static void clearGraphNodeMap () {
172
- graphNode .clear ();
196
+ graphNodeMap .clear ();
173
197
}
174
198
175
199
public static GraphNode getGraphNode (InputGraph graph ) {
176
- return graphNode .get (graph );
200
+ return graphNodeMap .get (graph );
177
201
}
178
202
179
203
public Folder getFolder () {
0 commit comments