Lines 122-133
Link Here
|
122 |
* @param jdo the data object to represent |
122 |
* @param jdo the data object to represent |
123 |
*/ |
123 |
*/ |
124 |
public JavaNode (JavaDataObject jdo) { |
124 |
public JavaNode (JavaDataObject jdo) { |
125 |
this(jdo, new SourceChildren(JavaDataObject.getExplorerFactory(), jdo.getSource())); |
125 |
this (jdo, new JavaSourceChildren (jdo)); |
126 |
currentBadges = new HashSet(); |
126 |
currentBadges = new HashSet(); |
127 |
} |
127 |
} |
|
|
128 |
|
129 |
//Workaround for issue #28623 - aggresively creating source element, classloading |
130 |
private static final class JavaSourceChildren extends SourceChildren { |
131 |
JavaDataObject jdo; |
132 |
public JavaSourceChildren (JavaDataObject jdo) { |
133 |
super (JavaDataObject.getExplorerFactory()); |
134 |
this.jdo = jdo; |
135 |
} |
136 |
protected void addNotify() { |
137 |
setElement (jdo.getSource()); |
138 |
super.addNotify(); |
139 |
} |
140 |
protected void removeNotify() { |
141 |
super.removeNotify(); |
142 |
setElement (null); |
143 |
} |
144 |
} |
128 |
|
145 |
|
|
|
146 |
boolean hasParser=false; |
129 |
private JavaParser findParser() { |
147 |
private JavaParser findParser() { |
130 |
return (JavaParser)getDataObject().getCookie(JavaParser.class); |
148 |
JavaParser result = (JavaParser)getDataObject().getCookie(JavaParser.class); |
|
|
149 |
if ((!hasParser) && (result != null)){ |
150 |
result.addChangeListener(WeakListener.change(mixedListener, result)); |
151 |
hasParser=true; |
152 |
} |
153 |
return result; |
131 |
} |
154 |
} |
132 |
|
155 |
|
133 |
/** |
156 |
/** |
Lines 181-204
Link Here
|
181 |
StateUpdater.getInstance().updateNode(this); |
204 |
StateUpdater.getInstance().updateNode(this); |
182 |
} |
205 |
} |
183 |
} |
206 |
} |
184 |
|
207 |
|
185 |
private PropL mixedListener; |
208 |
private PropL mixedListener; |
186 |
|
209 |
|
187 |
private void initialize () { |
210 |
private void initialize () { |
188 |
setIconBase(getBareIconBase()); |
211 |
setIconBase(getBareIconBase()); |
189 |
|
212 |
|
190 |
JavaDataObject jdo = getJavaDataObject(); |
213 |
JavaDataObject jdo = getJavaDataObject(); |
191 |
SourceElement source = jdo.getSource(); |
214 |
// SourceElement source = jdo.getSource(); |
192 |
// add a source property change listener that will modify the node's icon |
215 |
// add a source property change listener that will modify the node's icon |
193 |
// as the source's status change. |
216 |
// as the source's status change. |
194 |
mixedListener = new PropL(); |
217 |
mixedListener = new PropL(); |
195 |
jdo.addPropertyChangeListener(WeakListener.propertyChange(mixedListener, jdo)); |
218 |
jdo.addPropertyChangeListener(WeakListener.propertyChange(mixedListener, jdo)); |
196 |
|
219 |
|
197 |
JavaParser p = findParser(); |
|
|
198 |
if (p != null) { |
199 |
p.addChangeListener(WeakListener.change(mixedListener, p)); |
200 |
} |
201 |
|
202 |
StateUpdater.getInstance().registerNode(this); |
220 |
StateUpdater.getInstance().registerNode(this); |
203 |
} |
221 |
} |
204 |
|
222 |
|
Lines 399-414
Link Here
|
399 |
} |
417 |
} |
400 |
|
418 |
|
401 |
public Image getIcon(int type) { |
419 |
public Image getIcon(int type) { |
402 |
preparseSource(); |
420 |
String[] badges=null; |
403 |
|
421 |
if (!getJavaDataObject().isTemplate()) { |
404 |
// assume setIconBase was already called. |
422 |
preparseSource(); |
405 |
String[] badges = getBadges(); |
423 |
// assume setIconBase was already called. |
|
|
424 |
badges = getBadges(); |
425 |
} |
406 |
return iconCache.getIcon(super.getIcon(type), badges); |
426 |
return iconCache.getIcon(super.getIcon(type), badges); |
407 |
} |
427 |
} |
408 |
|
428 |
|
409 |
public Image getOpenedIcon(int type) { |
429 |
public Image getOpenedIcon(int type) { |
410 |
preparseSource(); |
430 |
String[] badges = null; |
411 |
String[] badges = getBadges(); |
431 |
if (!getJavaDataObject().isTemplate()) { |
|
|
432 |
preparseSource(); |
433 |
badges = getBadges(); |
434 |
} |
412 |
return iconCache.getIcon(super.getOpenedIcon(type), badges); |
435 |
return iconCache.getIcon(super.getOpenedIcon(type), badges); |
413 |
} |
436 |
} |
414 |
|
437 |
|
Lines 518-526
Link Here
|
518 |
*/ |
541 |
*/ |
519 |
protected void resolveIcons() { |
542 |
protected void resolveIcons() { |
520 |
JavaDataObject jdo = getJavaDataObject(); |
543 |
JavaDataObject jdo = getJavaDataObject(); |
|
|
544 |
boolean isTemplate = jdo.isTemplate(); |
545 |
//TDB - avoid classloading by turning off parsing for templates, bug 28623 |
546 |
if (isTemplate) return; |
521 |
SourceElement source = jdo.getSource(); |
547 |
SourceElement source = jdo.getSource(); |
522 |
String desc = null; |
548 |
String desc = null; |
523 |
boolean isTemplate = jdo.isTemplate(); |
|
|
524 |
java.util.Collection badges = new java.util.ArrayList(3); |
549 |
java.util.Collection badges = new java.util.ArrayList(3); |
525 |
int status; |
550 |
int status; |
526 |
|
551 |
|