1 19 20 package org.netbeans.modules.junit.output; 21 22 import java.awt.BorderLayout ; 23 import java.awt.Component ; 24 import java.awt.EventQueue ; 25 import java.lang.ref.WeakReference ; 26 import javax.accessibility.AccessibleContext ; 27 import org.openide.util.HelpCtx; 28 import org.openide.util.NbBundle; 29 import org.openide.util.Utilities; 30 import org.openide.windows.TopComponent; 31 import org.openide.windows.WindowManager; 32 33 37 public final class ResultWindow extends TopComponent { 38 39 40 private static final String ID = "junit-test-results"; 46 private static WeakReference <ResultWindow> instance = null; 47 48 53 static synchronized ResultWindow getInstance() { 54 ResultWindow window; 55 window = (ResultWindow) WindowManager.getDefault().findTopComponent(ID); 56 if (window == null) { 57 window = getDefault(); 58 } 59 return window; 60 } 61 62 72 public static synchronized ResultWindow getDefault() { 73 ResultWindow window = (instance != null) ? instance.get() : null; 74 if (window == null) { 75 window = new ResultWindow(); 76 instance = new WeakReference <ResultWindow>(window); 77 } 78 return window; 79 } 80 81 82 private Component view; 83 84 85 86 public ResultWindow() { 87 super(); 88 setLayout(new BorderLayout ()); 89 91 setName(ID); 92 setDisplayName(NbBundle.getMessage(ResultWindow.class, 93 "TITLE_TEST_RESULTS")); setIcon(Utilities.loadImage( 95 "org/netbeans/modules/junit/output/res/testResults.png", true)); 97 98 AccessibleContext accessibleContext = getAccessibleContext(); 99 accessibleContext.setAccessibleName( 100 NbBundle.getMessage(getClass(), "ACSN_TestResults")); accessibleContext.setAccessibleDescription( 102 NbBundle.getMessage(getClass(), "ACSD_TestResults")); } 104 105 107 void addDisplayComponent(Component displayComp) { 108 assert EventQueue.isDispatchThread(); 109 110 removeAll(); 111 addView(displayComp); 112 } 113 114 116 private void addView(final Component view) { 117 assert EventQueue.isDispatchThread(); 118 119 this.view = view; 120 add(view); 121 } 122 123 125 private boolean isActivated() { 126 return TopComponent.getRegistry().getActivated() == this; 127 } 128 129 131 void promote() { 132 assert EventQueue.isDispatchThread(); 133 134 open(); 135 requestVisible(); 136 requestActive(); 137 } 138 139 141 protected String preferredID() { 142 return ID; 143 } 144 145 147 public HelpCtx getHelpCtx() { 148 return new HelpCtx(getClass()); 149 } 150 151 153 public int getPersistenceType() { 154 return TopComponent.PERSISTENCE_ALWAYS; 155 } 156 157 163 private Object readResolve() throws java.io.ObjectStreamException { 164 return ResultWindow.getDefault(); 165 } 166 167 } 168 | Popular Tags |