Lines 66-71
Link Here
|
66 |
import org.openide.awt.Notification; |
66 |
import org.openide.awt.Notification; |
67 |
import org.openide.awt.NotificationDisplayer; |
67 |
import org.openide.awt.NotificationDisplayer; |
68 |
import org.openide.util.*; |
68 |
import org.openide.util.*; |
|
|
69 |
import org.openide.windows.InputOutput; |
69 |
import org.openide.windows.Mode; |
70 |
import org.openide.windows.Mode; |
70 |
import org.openide.windows.WindowManager; |
71 |
import org.openide.windows.WindowManager; |
71 |
|
72 |
|
Lines 435-455
Link Here
|
435 |
} |
436 |
} |
436 |
|
437 |
|
437 |
/** singleton of the <code>ResultDisplayHandler</code> */ |
438 |
/** singleton of the <code>ResultDisplayHandler</code> */ |
438 |
private Map<TestSession,ResultDisplayHandler> displayHandlers; |
439 |
// the ResultDisplayHandler holds TestSession and is referenced from other |
|
|
440 |
// places so we use WeakReference, otherwise there would be memory leak |
441 |
private Map<TestSession,WeakReference<ResultDisplayHandler>> displayHandlers; |
439 |
private Semaphore lock; |
442 |
private Semaphore lock; |
440 |
/** |
443 |
/** |
441 |
*/ |
444 |
*/ |
442 |
private synchronized ResultDisplayHandler getDisplayHandler(final TestSession session) { |
445 |
private synchronized ResultDisplayHandler getDisplayHandler(final TestSession session) { |
443 |
ResultDisplayHandler displayHandler = (displayHandlers != null) |
446 |
ResultDisplayHandler displayHandler = null; |
444 |
? displayHandlers.get(session) |
447 |
if (displayHandlers != null) { |
445 |
: null; |
448 |
WeakReference<ResultDisplayHandler> reference = displayHandlers.get(session); |
|
|
449 |
if (reference != null) { |
450 |
displayHandler = reference.get(); |
451 |
} |
452 |
} else { |
453 |
displayHandlers = new WeakHashMap<TestSession,WeakReference<ResultDisplayHandler>>(7); |
454 |
} |
455 |
|
446 |
if (displayHandler == null) { |
456 |
if (displayHandler == null) { |
447 |
if (displayHandlers == null) { |
|
|
448 |
displayHandlers = new WeakHashMap<TestSession,ResultDisplayHandler>(7); |
449 |
} |
450 |
displayHandler = new ResultDisplayHandler(session); |
457 |
displayHandler = new ResultDisplayHandler(session); |
451 |
createIO(displayHandler); |
458 |
createIO(displayHandler); |
452 |
displayHandlers.put(session, displayHandler); |
459 |
displayHandlers.put(session, new WeakReference<ResultDisplayHandler>(displayHandler)); |
453 |
final ResultDisplayHandler dispHandler = displayHandler; |
460 |
final ResultDisplayHandler dispHandler = displayHandler; |
454 |
lock = new Semaphore(1); |
461 |
lock = new Semaphore(1); |
455 |
try { |
462 |
try { |
Lines 483-493
Link Here
|
483 |
private void createIO(final ResultDisplayHandler displayHandler) { |
490 |
private void createIO(final ResultDisplayHandler displayHandler) { |
484 |
try { |
491 |
try { |
485 |
Runnable r = new Runnable() { |
492 |
Runnable r = new Runnable() { |
|
|
493 |
@Override |
486 |
public void run() { |
494 |
public void run() { |
487 |
final ResultWindow window = ResultWindow.getInstance(); |
495 |
final ResultWindow window = ResultWindow.getInstance(); |
488 |
window.addDisplayComponent(displayHandler.getDisplayComponent(), displayHandler.getLookup()); |
|
|
489 |
window.setOutputComp(displayHandler.getOutputComponent()); |
496 |
window.setOutputComp(displayHandler.getOutputComponent()); |
490 |
displayHandler.createIO(window.getIOContainer()); |
497 |
InputOutput io = displayHandler.createIO(window.getIOContainer()); |
|
|
498 |
window.addDisplayComponent(displayHandler.getDisplayComponent(), io); |
491 |
} |
499 |
} |
492 |
}; |
500 |
}; |
493 |
if (SwingUtilities.isEventDispatchThread()){ |
501 |
if (SwingUtilities.isEventDispatchThread()){ |