00001
00002
00003
00004
00005
00006
00007
00008
00009 package DisplayGUI;
00010 import javax.swing.JMenuBar;
00011 import javax.swing.JMenuItem;
00012 import javax.swing.JMenu;
00013
00014 import Sct_CalibrationController.TestRequest;
00015 import Sct_CalibrationController.SequenceRequest;
00016 import Sct_CalibrationController.CalibrationControllerPackage.*;
00017
00018 import GuiComponents.System.*;
00019
00020
00022 public class TestsMenu extends JMenuBar implements displayParams,TestDataInfo {
00023 gui guiControl;
00024
00025
00026 private JMenu autoTestsMenu = new JMenu();
00027
00028
00029 public static final int BOCTESTS_MENU=0;
00030 public static final int DIGITALTESTS_MENU=1;
00031 public static final int ANALOGUETESTS_MENU=2;
00032 public static final int TIMINGTESTS_MENU=3;
00033 public static final int QUICKTESTS_MENU=4;
00034 public static final int SEQUENCES_MENU=5;
00035 public static final int ALLTESTS_MENU=6;
00036 public static final int SCTDAQTESTS_MENU=7;
00037
00038 private int N_MENUS=8;
00039
00040 private JMenu[] guiMenu;
00041
00042 public TestsMenu(gui guiControl) {
00043 this.guiControl = guiControl;
00044
00045 autoTestsMenu = new JMenu("Complete Test List");
00046 autoTestsMenu.setFont(menuFont);
00047 buildAutoTestsMenu();
00048
00049
00050 guiMenu = new JMenu[N_MENUS];
00051 for(int imenu=0;imenu<N_MENUS;imenu++) {
00052 switch(imenu) {
00053 case BOCTESTS_MENU:
00054 guiMenu[imenu]=getBOCMenu();
00055 break;
00056 case ANALOGUETESTS_MENU:
00057 guiMenu[imenu]=getAnalogueMenu();
00058 break;
00059 case DIGITALTESTS_MENU:
00060 guiMenu[imenu]=getDigitalMenu();
00061 break;
00062 case TIMINGTESTS_MENU:
00063 guiMenu[imenu]=getTimingTestsMenu();
00064 break;
00065 case QUICKTESTS_MENU:
00066 guiMenu[imenu]=getQuickTestsMenu();
00067 break;
00068 case SEQUENCES_MENU:
00069 guiMenu[imenu]=getSequencesMenu();
00070 break;
00071 case ALLTESTS_MENU:
00072 guiMenu[imenu]=autoTestsMenu;
00073 break;
00074 case SCTDAQTESTS_MENU:
00075 guiMenu[imenu]=getSCTDAQMenu();
00076 break;
00077 default:
00078 }
00079 guiMenu[imenu].setFont(menuFont);
00080 guiMenu[imenu].setBackground(backgroundColor);
00081
00082 }
00083 }
00084
00085 public JMenu getMenu(int menu) {
00086 return guiMenu[menu];
00087 }
00088 public javax.swing.JPopupMenu getPopupMenu(int menu) {
00089 return guiMenu[menu].getPopupMenu();
00090 }
00091
00092 private JMenu getSCTDAQMenu() {
00093 JMenu sctdaqmenu = new JMenu("SCTDAQ Exerciser");
00094
00095 sctdaqmenu.setFont(menuFont);
00096
00097 JMenuItem menuItem = new JMenuItem("Ping");
00098 menuItem.setFont(menuFont);
00099 menuItem.addActionListener(new java.awt.event.ActionListener() {
00100 public void actionPerformed(java.awt.event.ActionEvent evt) {
00101
00102
00103 }
00104 });
00105 sctdaqmenu.add(menuItem);
00106 sctdaqmenu.addSeparator();
00107
00108 for(int i=0;i<testIsSCTDAQ.length;i++) {
00109 if(!testIsDefined[i] || !testIsSCTDAQ[i]) continue;
00110 menuItem = new JMenuItem(testMenuNames[i]);
00111 menuItem.setFont(menuFont);
00112 sctdaqmenu.add(menuItem);
00113 switch(i) {
00114 case TEST_FULLBYPASS:
00115 menuItem.addActionListener(new java.awt.event.ActionListener() {
00116 public void actionPerformed(java.awt.event.ActionEvent evt) {
00117 guiControl.displayStatus.setTestDataMode(-1);
00118 try {
00119 if((SystemInterface.getInstance().getTestHighLevelApi())!=null) SystemInterface.getInstance().getTestHighLevelApi().fullBypass();
00120 } catch (SctTestApi.NoDataException nde) {}
00121
00122
00123 }
00124 });
00125 case TEST_PIPELINE:
00126 menuItem.addActionListener(new java.awt.event.ActionListener() {
00127 public void actionPerformed(java.awt.event.ActionEvent evt) {
00128
00129 try {
00130 if((SystemInterface.getInstance().getTestHighLevelApi())!=null) SystemInterface.getInstance().getTestHighLevelApi().pipeline();
00131 } catch (SctTestApi.NoDataException nde) {}
00132
00133
00134 }
00135 });
00136 break;
00137 case TEST_STROBEDELAY:
00138 menuItem.addActionListener(new java.awt.event.ActionListener() {
00139 public void actionPerformed(java.awt.event.ActionEvent evt) {
00140
00141 try {
00142 if((SystemInterface.getInstance().getTestHighLevelApi())!=null) SystemInterface.getInstance().getTestHighLevelApi().strobeDelay();
00143 } catch (SctTestApi.NoDataException nde) {}
00144
00145
00146 }
00147 });
00148 break;
00149 case TEST_3PTGAIN:
00150 menuItem.addActionListener(new java.awt.event.ActionListener() {
00151 public void actionPerformed(java.awt.event.ActionEvent evt) {
00152
00153 try {
00154 if((SystemInterface.getInstance().getTestHighLevelApi())!=null) SystemInterface.getInstance().getTestHighLevelApi().threePointGain();
00155 } catch (SctTestApi.NoDataException nde) {}
00156
00157
00158 }
00159 });
00160 break;
00161 case TEST_TRIM:
00162 menuItem.addActionListener(new java.awt.event.ActionListener() {
00163 public void actionPerformed(java.awt.event.ActionEvent evt) {
00164
00165 try {
00166 if((SystemInterface.getInstance().getTestHighLevelApi())!=null) SystemInterface.getInstance().getTestHighLevelApi().trim();
00167 } catch (SctTestApi.NoDataException nde) {}
00168
00169
00170 }
00171 });
00172 break;
00173 case TEST_NPTGAIN:
00174 menuItem.addActionListener(new java.awt.event.ActionListener() {
00175 public void actionPerformed(java.awt.event.ActionEvent evt) {
00176
00177 try {
00178 if((SystemInterface.getInstance().getTestHighLevelApi())!=null) SystemInterface.getInstance().getTestHighLevelApi().responseCurve();
00179 } catch (SctTestApi.NoDataException nde) {}
00180
00181
00182 }
00183 });
00184 break;
00185 case TEST_NOISE:
00186 menuItem.addActionListener(new java.awt.event.ActionListener() {
00187 public void actionPerformed(java.awt.event.ActionEvent evt) {
00188
00189 try {
00190 if((SystemInterface.getInstance().getTestHighLevelApi())!=null) SystemInterface.getInstance().getTestHighLevelApi().noiseOccupancy();
00191 } catch (SctTestApi.NoDataException nde) {}
00192
00193
00194 }
00195 });
00196 break;
00197 case TEST_TIMEWALK:
00198 menuItem.addActionListener(new java.awt.event.ActionListener() {
00199 public void actionPerformed(java.awt.event.ActionEvent evt) {
00200
00201 try {
00202 if((SystemInterface.getInstance().getTestHighLevelApi())!=null) SystemInterface.getInstance().getTestHighLevelApi().timeWalk();
00203 } catch (SctTestApi.NoDataException nde) {}
00204
00205
00206 }
00207 });
00208 break;
00209 default:
00210 }
00211 }
00212 return sctdaqmenu;
00213 }
00214
00215 private JMenu getSequencesMenu() {
00216 JMenu sequencesMenu = new JMenu("Sequences");
00217 sequencesMenu.setFont(menuFont);
00218
00219 JMenuItem menuItem = new JMenuItem("Characterization");
00220 menuItem.setFont(menuFont);
00221 menuItem.addActionListener(new java.awt.event.ActionListener() {
00222 public void actionPerformed(java.awt.event.ActionEvent evt) {
00223 try{
00224 SystemInterface.getInstance().getCalibrationController().doSequence(SystemInterface.getInstance().getCalibrationController().getSequenceLibrary().characterizationSequence());
00225 }catch(Throwable e){
00226 System.out.println("Error communicating with CalibrationController [GuiMenuBar2:CharacterizationSequence]");
00227 };
00228 };
00229 });
00230
00231 sequencesMenu.add(menuItem);
00232 return sequencesMenu;
00233 }
00234
00235 private JMenu getQuickTestsMenu() {
00236 JMenu quickTestsMenu = new JMenu("Quick Tests");
00237 quickTestsMenu.setFont(menuFont);
00238
00239 JMenuItem menuItem = new JMenuItem("Quick NMask");
00240 menuItem.setFont(menuFont);
00241 menuItem.addActionListener(new java.awt.event.ActionListener() {
00242 public void actionPerformed(java.awt.event.ActionEvent evt) {
00243 menuDoTest(menuGetTestByName("QuickNMask"));
00244 }
00245 });
00246 quickTestsMenu.add(menuItem);
00247
00248 menuItem = new JMenuItem("Five point gain");
00249 menuItem.setFont(menuFont);
00250 menuItem.addActionListener(new java.awt.event.ActionListener() {
00251 public void actionPerformed(java.awt.event.ActionEvent evt) {
00252 menuDoTest(menuGetTestByName("FivePointGain"));
00253 }
00254 });
00255 quickTestsMenu.add(menuItem);
00256
00257 menuItem = new JMenuItem("QuickTrim");
00258 menuItem.setFont(menuFont);
00259 menuItem.addActionListener(new java.awt.event.ActionListener() {
00260 public void actionPerformed(java.awt.event.ActionEvent evt) {
00261 menuDoTest(menuGetTestByName("QuickTrimRange") );
00262 }
00263 });
00264
00265 quickTestsMenu.add(menuItem);
00266 return quickTestsMenu;
00267 }
00268
00269 private JMenu getTimingTestsMenu() {
00270
00271 JMenu timingTestsMenu = new JMenu("Timing Tests");
00272 timingTestsMenu.setFont(menuFont);
00273
00274 JMenuItem menuItem = new JMenuItem("Synch Trigger Noise");
00275 menuItem.setFont(menuFont);
00276 menuItem.addActionListener(new java.awt.event.ActionListener() {
00277 public void actionPerformed(java.awt.event.ActionEvent evt) {
00278 menuDoTest(menuGetTestByName("SynchTriggerNoise"));
00279 }
00280 });
00281
00282 timingTestsMenu.add(menuItem);
00283
00284 menuItem = new JMenuItem("Double Trigger Noise");
00285 menuItem.setFont(menuFont);
00286 menuItem.addActionListener(new java.awt.event.ActionListener() {
00287 public void actionPerformed(java.awt.event.ActionEvent evt) {
00288
00289 menuDoTest(menuGetTestByName("DoubleTriggerNoise"));
00290 }
00291 });
00292
00293 timingTestsMenu.add(menuItem);
00294
00295 menuItem = new JMenuItem("Pre Trigger Noise");
00296 menuItem.setFont(menuFont);
00297 menuItem.addActionListener(new java.awt.event.ActionListener() {
00298 public void actionPerformed(java.awt.event.ActionEvent evt) {
00299 menuDoTest(menuGetTestByName("PreTriggerNoise"));
00300 }
00301 });
00302
00303 timingTestsMenu.add(menuItem);
00304
00305 menuItem = new JMenuItem("TIM clock delay");
00306 menuItem.setFont(menuFont);
00307 menuItem.addActionListener(new java.awt.event.ActionListener() {
00308 public void actionPerformed(java.awt.event.ActionEvent evt) {
00309 menuDoTest(menuGetTestByName("TimClockDelay"));
00310 }
00311 });
00312
00313 timingTestsMenu.add(menuItem);
00314 return timingTestsMenu;
00315 }
00316
00317 private JMenu getAnalogueMenu() {
00318
00319 JMenu analogueTestsMenu = new JMenu("Analogue Tests");
00320 analogueTestsMenu.setFont(menuFont);
00321
00322
00323 JMenuItem menuItem = new JMenuItem("Strobe Delay");
00324 menuItem.setFont(menuFont);
00325 menuItem.addActionListener(new java.awt.event.ActionListener() {
00326 public void actionPerformed(java.awt.event.ActionEvent evt) {
00327
00328 menuDoTest(menuGetTestByName("StrobeDelay"));
00329 }
00330 });
00331
00332 analogueTestsMenu.add(menuItem);
00333
00334 menuItem = new JMenuItem("3PtGain");
00335 menuItem.setFont(menuFont);
00336 menuItem.addActionListener(new java.awt.event.ActionListener() {
00337 public void actionPerformed(java.awt.event.ActionEvent evt) {
00338
00339 menuDoTest(menuGetTestByName("ThreePointGain"));
00340 }
00341 });
00342
00343 analogueTestsMenu.add(menuItem);
00344
00345 menuItem = new JMenuItem("Trim");
00346 menuItem.setFont(menuFont);
00347 menuItem.addActionListener(new java.awt.event.ActionListener() {
00348 public void actionPerformed(java.awt.event.ActionEvent evt) {
00349
00350 menuDoTest(menuGetTestByName("TrimRange") );
00351 }
00352 });
00353
00354 analogueTestsMenu.add(menuItem);
00355
00356 menuItem = new JMenuItem("ResponseCurve");
00357 menuItem.setFont(menuFont);
00358 menuItem.addActionListener(new java.awt.event.ActionListener() {
00359 public void actionPerformed(java.awt.event.ActionEvent evt) {
00360
00361 menuDoTest(menuGetTestByName("ResponseCurve"));
00362 }
00363 });
00364
00365 analogueTestsMenu.add(menuItem);
00366
00367 menuItem = new JMenuItem("Noise Occupancy");
00368 menuItem.setFont(menuFont);
00369 menuItem.addActionListener(new java.awt.event.ActionListener() {
00370 public void actionPerformed(java.awt.event.ActionEvent evt) {
00371
00372 menuDoTest(menuGetTestByName("NoiseOccupancy") );
00373 }
00374 });
00375
00376 analogueTestsMenu.add(menuItem);
00377
00378 menuItem = new JMenuItem("Time Walk");
00379 menuItem.setFont(menuFont);
00380 menuItem.addActionListener(new java.awt.event.ActionListener() {
00381 public void actionPerformed(java.awt.event.ActionEvent evt) {
00382
00383 menuDoTest(menuGetTestByName("TimeWalk"));
00384 }
00385 });
00386
00387 analogueTestsMenu.add(menuItem);
00388 return analogueTestsMenu;
00389 }
00390
00391 private JMenu getDigitalMenu() {
00392
00393 JMenu digitalTestsMenu = new JMenu("Digital Tests");
00394 digitalTestsMenu.setFont(menuFont);
00395
00396 JMenuItem menuItem = new JMenuItem("NMask");
00397 menuItem.setFont(menuFont);
00398
00399 menuItem.addActionListener(new java.awt.event.ActionListener() {
00400 public void actionPerformed(java.awt.event.ActionEvent evt) {
00401
00402 menuDoTest(menuGetTestByName("NMask"));
00403 }
00404 });
00405
00406
00407 digitalTestsMenu.add(menuItem);
00408
00409 menuItem = new JMenuItem("Pipeline");
00410 menuItem.setFont(menuFont);
00411 menuItem.addActionListener(new java.awt.event.ActionListener() {
00412 public void actionPerformed(java.awt.event.ActionEvent evt) {
00413
00414 menuDoTest(menuGetTestByName("Pipeline"));
00415 }
00416 });
00417
00418 digitalTestsMenu.add(menuItem);
00419
00420 menuItem = new JMenuItem("FullByPass (Barrel)");
00421 menuItem.setFont(menuFont);
00422 menuItem.addActionListener(new java.awt.event.ActionListener() {
00423 public void actionPerformed(java.awt.event.ActionEvent evt) {
00424
00425 menuDoTest(menuGetTestByName("FullBypassBarrel") );
00426 }
00427 });
00428
00429 digitalTestsMenu.add(menuItem);
00430
00431 menuItem = new JMenuItem("FullByPass (Endcap)");
00432 menuItem.setFont(menuFont);
00433 menuItem.addActionListener(new java.awt.event.ActionListener() {
00434 public void actionPerformed(java.awt.event.ActionEvent evt) {
00435
00436 menuDoTest(menuGetTestByName("FullBypassEndcap") );
00437 }
00438 });
00439
00440 digitalTestsMenu.add(menuItem);
00441 return digitalTestsMenu;
00442 }
00443
00444 private JMenu getBOCMenu() {
00445 JMenu bocTestsMenu = new JMenu("Boc Setup");
00446 bocTestsMenu.setFont(menuFont);
00447 JMenuItem menuItem = new JMenuItem("Raw Scan");
00448 menuItem.setFont(menuFont);
00449 menuItem.addActionListener(new java.awt.event.ActionListener() {
00450 public void actionPerformed(java.awt.event.ActionEvent evt) {
00451 try{
00452 SystemInterface.getInstance().getCalibrationController().doScan(SystemInterface.getInstance().getCalibrationController().getScanLibrary().rawScan(10,false));
00453 }catch(Throwable e){
00454 javax.swing.JOptionPane.showMessageDialog(null,"Error communicating with Calibration Controller [GuiMenuBar2:RawScan]");
00455 }
00456 }
00457 });
00458
00459 bocTestsMenu.add(menuItem);
00460
00461
00462
00463
00464
00465
00466
00467
00468
00469
00470
00471
00472
00473 menuItem = new JMenuItem("RX Threshold (Config Register)");
00474 menuItem.setFont(menuFont);
00475 menuItem.addActionListener(new java.awt.event.ActionListener() {
00476 public void actionPerformed(java.awt.event.ActionEvent evt) {
00477 menuDoTest(menuGetTestByName("RxThresholdBasedOnConfigRegister") );
00478 }
00479 });
00480 bocTestsMenu.add(menuItem);
00481
00482 menuItem = new JMenuItem("RX Delay");
00483 menuItem.setFont(menuFont);
00484 menuItem.addActionListener(new java.awt.event.ActionListener() {
00485 public void actionPerformed(java.awt.event.ActionEvent evt) {
00486
00487
00488
00489 menuDoTest(menuGetTestByName("RxDelay") );
00490 }
00491 });
00492 bocTestsMenu.add(menuItem);
00493
00494
00495
00496
00497
00498
00499
00500
00501
00502
00503
00504
00505 menuItem = new JMenuItem("TX Current (Config Register)");
00506 menuItem.setFont(menuFont);
00507 menuItem.addActionListener(new java.awt.event.ActionListener() {
00508 public void actionPerformed(java.awt.event.ActionEvent evt) {
00509 menuDoTest(menuGetTestByName("TxCurrent") );
00510 }
00511 });
00512 bocTestsMenu.add(menuItem);
00513
00514
00515 menuItem = new JMenuItem("Mark-space ratio");
00516 menuItem.setFont(menuFont);
00517 menuItem.addActionListener(new java.awt.event.ActionListener() {
00518 public void actionPerformed(java.awt.event.ActionEvent evt) {
00519 menuDoTest(menuGetTestByName("MarkSpaceRatio") );
00520 }
00521 });
00522 bocTestsMenu.add(menuItem);
00523 return bocTestsMenu;
00524 }
00525
00526
00527 private void menuDoTest(Sct_CalibrationController.TestRequest tr){
00528 try{
00529 Sct_CalibrationController.CalibrationController cc = SystemInterface.getInstance().getCalibrationController();
00530 if (tr==null)javax.swing.JOptionPane.showMessageDialog(null,"Attempt to send a null TestRequest to the CalbrationController");
00531 else cc.doTest(tr);
00532 }
00533 catch(Throwable e){javax.swing.JOptionPane.showMessageDialog(null,"GUI Error trying to communicate with Calibration Controller! [GuiMenuBar2:menuDoTest]" + e.toString());}
00534 return;
00535 }
00536
00537 private Sct_CalibrationController.TestRequest menuGetTestByName(String name){
00538 SystemInterface.getInstance().refresh();
00539 Sct_CalibrationController.CalibrationController cc = SystemInterface.getInstance().getCalibrationController();
00540 if (cc==null) {
00541 cc = SystemInterface.getInstance().getCalibrationController();
00542 if(cc==null) {
00543 javax.swing.JOptionPane.showMessageDialog(null,"Could not get Calibration Controller");
00544 return null;
00545 }
00546 }
00547 Sct_CalibrationController.TestLibrary tl = cc.getTestLibrary();
00548 if (tl==null) javax.swing.JOptionPane.showMessageDialog(null,"Could not get Test Libarary from Calibration Controller");
00549 Sct_CalibrationController.TestRequest tr = tl.getTestRequestByName(name);
00550 if (tr==null) javax.swing.JOptionPane.showMessageDialog(null,"Could not get test with name "+name+" from library");
00551 return tr;
00552 }
00553
00554 public void buildAutoTestsMenu(){
00555
00556 if(autoTestsMenu.getItemCount()>1) return;
00557 autoTestsMenu.removeAll();
00558 SystemInterface si = SystemInterface.getInstance();
00559 if (si!=null) {
00560 Sct_CalibrationController.CalibrationController cc = SystemInterface.getInstance().getCalibrationController();
00561 if (cc!=null) {
00562 Sct_CalibrationController.TestLibrary tl = cc.getTestLibrary();
00563 if (tl!=null) {
00564 String[] testNames = si.getCalibrationController().getTestLibrary().getTestNames();
00565 for (int i=0; i<testNames.length; ++i) {
00566 final String name = testNames[i];
00567 JMenuItem menuItem = new JMenuItem(name);
00568 menuItem.setFont(menuFont);
00569 menuItem.addActionListener(new java.awt.event.ActionListener() {
00570 public void actionPerformed(java.awt.event.ActionEvent evt) {
00571 menuDoTest(menuGetTestByName(name));
00572 }
00573 });
00574
00575 autoTestsMenu.add(menuItem);
00576 };
00577 };
00578 };
00579 };
00580
00581 if (autoTestsMenu.getItemCount()==0){
00582 JMenuItem menuItem = new JMenuItem("Not available");
00583 menuItem.setFont(menuFont);
00584 autoTestsMenu.add(menuItem);
00585 }
00586 }
00587
00588
00589
00590 }