00001 package DisplayGUI;
00002 import java.awt.event.*;
00003 import javax.swing.JMenuBar;
00004 import javax.swing.JMenuItem;
00005 import javax.swing.JMenu;
00006 import javax.swing.KeyStroke;
00007 import javax.swing.JFrame;
00008 import javax.swing.JCheckBox;
00009 import javax.swing.JPopupMenu;
00010 import javax.swing.JOptionPane;
00011 import javax.swing.JScrollPane;
00012 import Preferences.*;
00013 import guiUtilities.ChoiceDialog;
00014
00015 import Sct.Version;
00016 import Sct_CalibrationController.TestRequest;
00017 import Sct_CalibrationController.SequenceRequest;
00018 import Sct_CalibrationController.CalibrationControllerPackage.*;
00019
00020 import GuiComponents.System.*;
00021 import GuiComponents.scripting.*;
00022 import GuiComponents.Console.JConsole;
00023
00024 import Sct_SctApi.*;
00025 import Sct.*;
00026 import sctConf.*;
00027 import SctData.*;
00028 import Sct.IS.*;
00029
00031 public class GuiMenuBar2 extends JMenuBar implements displayParams,ActionListener,TestDataInfo {
00032 gui guiControl;
00033 ManualConfiguration manualConfiguration;
00034 private SystemInterface si;
00035 String option;
00036 private String[] configOptionNames={"Read Hardware Configuration","Manual Configuration..."};
00037
00038 private String serialNumber;
00039
00040 protected ISTree isTree;
00041 private JMenu menu, systemMenu, displayMenu, ccMenu, testMenu, panelTestMenu, panelDisplayMenu;
00042 private JMenu testResultMenu, sctdbDataMenu, configMenu, dcsOptionMenu, ivScanOptionMenu, probeMenu;
00043 public JMenu testDataMenu,sctdbDataSNMenu, dataManagerSNMenu, ivScanMenu, ddcModuleMenu, probePanelMenu;
00044 private JMenu testDataOptionMenu, panelTestDataOptionMenu, sctdbSCTDAQOptionMenu,sctdbRODDAQOptionMenu,tableDataOptionMenu, ccDataOptionMenu, displayOptionMenu, panelsctdbSCTDAQOptionMenu,panelsctdbRODDAQOptionMenu;
00045 private JMenuItem menuItem;
00046 private JMenuItem[] configOptions = new JMenuItem[configOptionNames.length];
00047
00048
00049
00050
00051 private JMenuItem sctapiPing, sctapiInitialise;
00052 private JMenuItem[] sctapiItems = new JMenuItem[testMenuNames.length];
00053
00054 private JCheckBox sctdbAutoDownload = new JCheckBox("Enable SCTDAQ Auto-Download");
00055 private JCheckBox sctdbAutoUpload = new JCheckBox("Enable SctRodDaq Auto-Upload");
00056
00057 private String[] ccUpdateStrings = {"Update","No-Update","Wait"};
00058 private JCheckBox[] ccUpdateModes = new JCheckBox[ccUpdateStrings.length];
00059 public JCheckBox autoSelectMode = new JCheckBox("AutoSelect New Tests");
00060 public JCheckBox autoAssemblyMode = new JCheckBox("Auto-upload module positions");
00061
00062
00063
00064 private JMenuItem scriptBeanShellItem, scriptJythonItem;
00065 private JMenuItem isTreeItem;
00066 private JCheckBox[] testFilterButtons = new JCheckBox[testMenuNames.length+1];
00067 private JMenu testFilterMenu;
00068
00069 private JMenuItem[] testDataOptions = new JMenuItem[3];
00070
00071 private JMenuItem[] preferenceItem = new JMenuItem[PreferencesInterface.getInstance().getNoPreferences()];
00072
00073 private JMenuItem testReportItem;
00074
00075 private JFrame hardwareWindow = null;
00076
00077 private ModuleCommentPrompt moduleCommentPrompt = null;
00078
00079 private ServiceStatusFrame serviceStatusFrame=null;
00080
00081 int itemIndex;
00082
00083 private DisplayChoiceToolbar displayChoiceToolbar;
00084
00085 private JMenu[] autoTestsMenu = new JMenu[2];
00086
00087 public GuiMenuBar2(gui parent) {
00088 guiControl=parent;
00089 createMenuBar();
00090 }
00091 public String getSelectedSerialNo() {
00092 return serialNumber;
00093 }
00094 public void setSelectedSerialNo(String sn) {
00095 serialNumber=sn;
00096 }
00097
00098 public boolean autoUploadIsEnabled() {
00099 return sctdbAutoUpload.isSelected();
00100 }
00101
00102 private void menuDoTest(Sct_CalibrationController.TestRequest tr){
00103 try{
00104 Sct_CalibrationController.CalibrationController cc = si.getCalibrationController();
00105 if (tr==null){
00106 javax.swing.JOptionPane.showMessageDialog(null,"Attempt to send a null TestRequest to the CalbrationController");
00107 } else {
00108 cc.doTest(tr);
00109 }
00110 }catch(Throwable e){
00111 javax.swing.JOptionPane.showMessageDialog(null,"GUI Error trying to communicate with Calibration Controller! [GuiMenuBar2:menuDoTest]" + e.toString());
00112 }
00113 return;
00114 }
00115
00116 private Sct_CalibrationController.TestRequest menuGetTestByName(String name){
00117 Sct_CalibrationController.CalibrationController cc = si.getCalibrationController();
00118 if (cc==null) javax.swing.JOptionPane.showMessageDialog(null,"Could not get Calibration Controller");
00119 Sct_CalibrationController.TestLibrary tl = cc.getTestLibrary();
00120 if (tl==null) javax.swing.JOptionPane.showMessageDialog(null,"Could not get Test Libarary from Calibration Controller");
00121 Sct_CalibrationController.TestRequest tr = tl.getTestRequestByName(name);
00122 if (tr==null) javax.swing.JOptionPane.showMessageDialog(null,"Could not get test with name "+name+" from library");
00123 return tr;
00124 }
00125
00126 public void createMenuBar() {
00127 si = SystemInterface.getInstance();
00128
00129 getTestDataMenu();
00130 getIVScanMenu();
00131 getSCTDBDataMenu();
00132 getTableDataSNMenu();
00133 getDDCModuleMenu();
00134 getProbeMenu();
00135 getProbePanelMenu();
00136
00137 systemMenu = new JMenu("System");
00138 systemMenu.setBackground(backgroundColor);
00139 systemMenu.setFont(menuFont);
00140 systemMenu.setForeground(menuColor);
00141
00142 menuItem = new JMenuItem("Refresh");
00143 menuItem.setFont(menuFont);
00144 menuItem.addActionListener(new java.awt.event.ActionListener() {
00145 public void actionPerformed(java.awt.event.ActionEvent evt) {
00146 si.refresh();
00147 guiControl.displayPane.refreshDisplay();
00148 }
00149 });
00150 systemMenu.add(menuItem);
00151
00152 menuItem = new JMenuItem("Hardware Configuration...");
00153 menuItem.setFont(menuFont);
00154 menuItem.addActionListener(new java.awt.event.ActionListener() {
00155 public void actionPerformed(java.awt.event.ActionEvent evt) {
00156 if(hardwareWindow==null) {
00157 hardwareWindow = new JFrame("Hardware Configuration");
00158 hardwareWindow.getContentPane().add(new HardwareConfigurationPanel());
00159 hardwareWindow.pack();
00160 java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
00161 java.awt.Dimension WSize = hardwareWindow.getSize();
00162 hardwareWindow.setLocation((screenSize.width-(int)WSize.getWidth())/2,(screenSize.height-(int)WSize.getHeight())/2);
00163 hardwareWindow.addWindowListener(new WindowAdapter() {
00164 public void windowClosing(WindowEvent e) {
00165 hardwareWindow=null;
00166
00167 }
00168 });
00169 }
00170 hardwareWindow.show();
00171 }
00172 });
00173 systemMenu.add(menuItem);
00174
00175 menuItem = new JMenuItem("Service Status...");
00176 menuItem.setFont(menuFont);
00177 menuItem.addActionListener(new java.awt.event.ActionListener() {
00178 public void actionPerformed(java.awt.event.ActionEvent evt) {
00179 if(serviceStatusFrame==null) serviceStatusFrame = new ServiceStatusFrame();
00180 else serviceStatusFrame.refresh();
00181 }
00182 });
00183 systemMenu.add(menuItem);
00184
00185
00186
00187 ccDataOptionMenu = getCCDataOptionMenu();
00188 systemMenu.add(ccDataOptionMenu);
00189 systemMenu.addSeparator();
00190 menuItem = new JMenuItem("Exit SctGUI");
00191 menuItem.setFont(menuFont);
00192 menuItem.addActionListener(new java.awt.event.ActionListener() {
00193 public void actionPerformed(java.awt.event.ActionEvent evt) {
00194 guiControl.exitForm(null);
00195 }
00196 });
00197 systemMenu.add(menuItem);
00198 add(systemMenu);
00199
00200
00201
00202 displayMenu = getDisplayMenu();
00203 displayMenu.addSeparator();
00204 menuItem = new JMenuItem("Toolbar ...");
00205 menuItem.setFont(menuFont);
00206 menuItem.addActionListener(new java.awt.event.ActionListener() {
00207 public void actionPerformed(java.awt.event.ActionEvent evt) {
00208 if(displayChoiceToolbar!=null) displayChoiceToolbar.setVisible(true);
00209 else {
00210 displayChoiceToolbar = new DisplayChoiceToolbar(guiControl);
00211 java.awt.Dimension s = displayChoiceToolbar.getSize();
00212 displayChoiceToolbar.setSize((int)s.getWidth()+1,(int)s.getHeight()+1);
00213 }
00214 }
00215 });
00216 displayMenu.add(menuItem);
00217 add(displayMenu);
00218
00219
00220 panelDisplayMenu = getDisplayMenu();
00221 panelDisplayMenu.setText("Select Display");
00222
00223
00224
00225
00226 for(int i=0;i<2;i++) {
00227 autoTestsMenu[i] = new JMenu("Complete Test List");
00228 autoTestsMenu[i].setFont(menuFont);
00229 buildAutoTestsMenu(i);
00230 }
00231
00232 testMenu = getTestInvokeMenu(autoTestsMenu[0]);
00233 testMenu.setBackground(backgroundColor);
00234 testMenu.setFont(menuFont);
00235 testMenu.setForeground(menuColor);
00236 add(testMenu);
00237
00238 panelTestMenu = getTestInvokeMenu(autoTestsMenu[1]);
00239 panelTestMenu.setText("Invoke Tests");
00240 panelTestMenu.setFont(menuFont);
00241
00242
00243 ivScanOptionMenu = getIVScanOptionMenu();
00244 dcsOptionMenu = getDCSOptionMenu();
00245 displayOptionMenu = getDisplayOptionMenu();
00246 testDataOptionMenu = getTestDataOptionMenu();
00247 tableDataOptionMenu = getTableDataOptionMenu();
00248 sctdbSCTDAQOptionMenu = getDBSCTDAQDataOptionMenu(false);
00249 sctdbRODDAQOptionMenu = getDBRODDAQDataOptionMenu(false);
00250 menu = new JMenu("Options");
00251 menu.setBackground(backgroundColor);
00252 menu.setFont(menuFont);
00253 menu.setForeground(menuColor);
00254
00255 configMenu = new JMenu("Configuration");
00256 configMenu.setFont(menuFont);
00257 for(int i=0;i<configOptionNames.length;i++) {
00258 configOptions[i] = new JMenuItem(configOptionNames[i]);
00259 configOptions[i].setFont(menuFont);
00260 configMenu.add(configOptions[i]);
00261 switch(i) {
00262 case 0:
00263 configOptions[i].addActionListener(new java.awt.event.ActionListener() {
00264 public void actionPerformed(java.awt.event.ActionEvent evt) {
00265 ConfigurationInterface.getInstance().Refresh();
00266 guiControl.displayStatus.setConfigurationMode();
00267 }
00268 });
00269 break;
00270 case 1:
00271 configOptions[i].addActionListener(new java.awt.event.ActionListener() {
00272 public void actionPerformed(java.awt.event.ActionEvent evt) {
00273 guiControl.displayStatus.setModuleGroupSelectionMode();
00274 if(manualConfiguration==null) manualConfiguration = new ManualConfiguration(guiControl);
00275 else manualConfiguration.showFrame();
00276 }
00277 });
00278 default:
00279 }
00280 }
00281 menu.add(configMenu);
00282 menu.add(displayOptionMenu);
00283 menu.add(tableDataOptionMenu);
00284 menu.add(testDataOptionMenu);
00285
00286 JMenu sctdbMenu = new JMenu("SCT Database");
00287 sctdbMenu.setFont(menuFont);
00288 sctdbMenu.add(sctdbSCTDAQOptionMenu);
00289 sctdbMenu.add(sctdbRODDAQOptionMenu);
00290 sctdbMenu.add(getAssemblyOptionMenu());
00291 menu.add(sctdbMenu);
00292 menu.add(dcsOptionMenu);
00293
00294 menu.add(getBookkeepingMenu());
00295
00296 add(menu);
00297
00298 panelTestDataOptionMenu = getTestDataOptionMenu();
00299 panelsctdbSCTDAQOptionMenu = getDBSCTDAQDataOptionMenu(true);
00300 panelsctdbRODDAQOptionMenu = getDBRODDAQDataOptionMenu(true);
00301
00302
00303
00304 menu = new JMenu("Tools");
00305 menu.setBackground(backgroundColor);
00306 menu.setFont(menuFont);
00307 menu.setForeground(menuColor);
00308 isTreeItem = new JMenuItem("IS Tree...");
00309 isTreeItem.setFont(menuFont);
00310 isTreeItem.addActionListener(this);
00311 menu.add(isTreeItem);
00312
00313 JMenu menu2 = new JMenu("Scripting");
00314 menu2.setFont(menuFont);
00315
00316
00317
00318
00319 scriptBeanShellItem = new JMenuItem("BeanShell");
00320 scriptBeanShellItem.setFont(menuFont);
00321 scriptBeanShellItem.addActionListener(this);
00322 menu2.add(scriptBeanShellItem);
00323 scriptJythonItem = new JMenuItem("Jython");
00324 scriptJythonItem.setFont(menuFont);
00325 scriptJythonItem.addActionListener(this);
00326 menu2.add(scriptJythonItem);
00327 menu.add(menu2);
00328
00329 JMenuItem item = new JMenuItem("Run GarbageCollector");
00330 item.setFont(menuFont);
00331 item.addActionListener(new java.awt.event.ActionListener() {
00332 public void actionPerformed(java.awt.event.ActionEvent evt) {
00333 Runtime r = Runtime.getRuntime();
00334 long freeMem = r.freeMemory();
00335 long maxMem = r.maxMemory();
00336 long totalMem = r.totalMemory();
00337 System.out.println("Total Mem: " + totalMem/1024. + ", Max Mem:" + maxMem/1024. + " , Free Mem: " + freeMem/1024.);
00338 r.gc();
00339 try {
00340 Thread.sleep(500);
00341 } catch (InterruptedException ie) {}
00342 r.gc();
00343 freeMem = r.freeMemory();
00344 maxMem = r.maxMemory();
00345 totalMem = r.totalMemory();
00346 System.out.println("Total Mem: " + totalMem/1024. + ", Max Mem:" + maxMem/1024. + " , Free Mem: " + freeMem/1024. );
00347 }
00348 });
00349 menu.add(item);
00350 item = new JMenuItem("Refresh Display");
00351 item.setFont(menuFont);
00352 item.addActionListener(new java.awt.event.ActionListener() {
00353 public void actionPerformed(java.awt.event.ActionEvent evt) {
00354 guiControl.displayPane.setDisplayColors();
00355 guiControl.displayPane.refreshDisplay();
00356 }
00357 });
00358 menu.add(item);
00359
00360 item = new JMenuItem("Launch SctApi GUI");
00361 item.setFont(menuFont);
00362 item.addActionListener(new java.awt.event.ActionListener() {
00363 public void actionPerformed(java.awt.event.ActionEvent evt) {
00364 JFrame frame = new JFrame("SctApi GUI");
00365 frame.getContentPane().add(new GuiComponents.Panels.SctApiGui());
00366
00367 frame.pack();
00368 frame.setVisible(true);
00369 }
00370 });
00371 menu.add(item);
00372
00373 add(menu);
00374
00375
00376 menu = new JMenu("Help");
00377 menu.setBackground(backgroundColor);
00378 menu.setFont(menuFont);
00379 menu.setForeground(menuColor);
00380
00381 JMenuItem helpItem = new JMenuItem("View User Manual");
00382 helpItem.setFont(menuFont);
00383 menu.add(helpItem);
00384 helpItem.addActionListener(new java.awt.event.ActionListener() {
00385 public void actionPerformed(java.awt.event.ActionEvent evt) {
00386 guiControl.htmlViewer.show("http://www.hep.phy.cam.ac.uk/~robinson/DisplayGUI.html","Online manual");
00387 }
00388 });
00389
00390 JMenuItem aboutItem = new JMenuItem("About");
00391 aboutItem.setFont(menuFont);
00392 menu.add(aboutItem);
00393 aboutItem.addActionListener(new java.awt.event.ActionListener() {
00394 public void actionPerformed(java.awt.event.ActionEvent evt) {
00395 String v = Version.instance.getAllInformation();
00396 String s = "SctGui is the user interface for end users. See the manual for more information";
00397 s += "\nSctGui Author: Dave Robinson.";
00398 s += "\nSctDaqRod Authors: Alan Barr, Bruce Gallop, Matthew Palmer, Dave Robinson and Alexander Tricoli";
00399 s += "\n\n" + v;
00400 JOptionPane.showMessageDialog(guiControl, s, "About SctGui", JOptionPane.INFORMATION_MESSAGE);
00401 }
00402 });
00403 add(menu);
00404
00405 add(javax.swing.Box.createHorizontalGlue());
00406
00407
00408 PreferencesInterface prefs = PreferencesInterface.getInstance();
00409 menu = new JMenu("Preferences");
00410 menu.setBackground(backgroundColor);
00411 menu.setFont(menuFont);
00412 menu.setForeground(menuColor);
00413
00414 for(int i=0;i<prefs.getNoPreferences();i++) {
00415 switch(i) {
00416 case PreferencesInterface.SCT_VIEW:
00417 preferenceItem[i] = new JMenuItem(prefs.getDescription(i));
00418 preferenceItem[i].setFont(menuFont);
00419 menu.add(preferenceItem[i]);
00420 preferenceItem[i].addActionListener(new java.awt.event.ActionListener() {
00421 public void actionPerformed(java.awt.event.ActionEvent evt) {
00422 Preference preference = new Preference(guiControl,PreferencesInterface.SCT_VIEW);
00423 guiControl.selectorPane.setSCTView(preference.getValue());
00424 }
00425 });
00426 break;
00427 case PreferencesInterface.INSTITUTE:
00428 preferenceItem[i] = new JMenuItem(prefs.getDescription(i));
00429 preferenceItem[i].setFont(menuFont);
00430 menu.add(preferenceItem[i]);
00431 preferenceItem[i].addActionListener(new java.awt.event.ActionListener() {
00432 public void actionPerformed(java.awt.event.ActionEvent evt) {
00433 Preference preference = new Preference(guiControl,PreferencesInterface.INSTITUTE);
00434 }
00435 });
00436 break;
00437 case PreferencesInterface.PASSWORD:
00438 preferenceItem[i] = new JMenuItem(prefs.getDescription(i));
00439 preferenceItem[i].setFont(menuFont);
00440 menu.add(preferenceItem[i]);
00441 preferenceItem[i].addActionListener(new java.awt.event.ActionListener() {
00442 public void actionPerformed(java.awt.event.ActionEvent evt) {
00443 Preference preference = new Preference(guiControl,PreferencesInterface.PASSWORD);
00444 }
00445 });
00446 break;
00447 case PreferencesInterface.PSVIEWER:
00448 preferenceItem[i] = new JMenuItem(prefs.getDescription(i));
00449 preferenceItem[i].setFont(menuFont);
00450 menu.add(preferenceItem[i]);
00451 preferenceItem[i].addActionListener(new java.awt.event.ActionListener() {
00452 public void actionPerformed(java.awt.event.ActionEvent evt) {
00453 Preference preference = new Preference(guiControl,PreferencesInterface.PSVIEWER);
00454 }
00455 });
00456 break;
00457 case PreferencesInterface.SCRATCH_DIR:
00458 preferenceItem[i] = new JMenuItem(prefs.getDescription(i));
00459 preferenceItem[i].setFont(menuFont);
00460 menu.add(preferenceItem[i]);
00461 preferenceItem[i].addActionListener(new java.awt.event.ActionListener() {
00462 public void actionPerformed(java.awt.event.ActionEvent evt) {
00463 Preference preference = new Preference(guiControl,PreferencesInterface.SCRATCH_DIR);
00464 }
00465 });
00466 break;
00467 case PreferencesInterface.UPLOAD_DIR:
00468 preferenceItem[i] = new JMenuItem(prefs.getDescription(i));
00469 preferenceItem[i].setFont(menuFont);
00470 menu.add(preferenceItem[i]);
00471 preferenceItem[i].addActionListener(new java.awt.event.ActionListener() {
00472 public void actionPerformed(java.awt.event.ActionEvent evt) {
00473 Preference preference = new Preference(guiControl,PreferencesInterface.UPLOAD_DIR);
00474 }
00475 });
00476 break;
00477 case PreferencesInterface.WEB_LOOKUP_DIR:
00478 preferenceItem[i] = new JMenuItem(prefs.getDescription(i));
00479 preferenceItem[i].setFont(menuFont);
00480 menu.add(preferenceItem[i]);
00481 preferenceItem[i].addActionListener(new java.awt.event.ActionListener() {
00482 public void actionPerformed(java.awt.event.ActionEvent evt) {
00483 Preference preference = new Preference(guiControl,PreferencesInterface.WEB_LOOKUP_DIR);
00484 }
00485 });
00486 break;
00487 default:
00488 }
00489
00490 }
00491 add(menu);
00492
00493 testFilterMenu = getTestFilterMenu();
00494
00495 setBorder(javax.swing.BorderFactory.createEmptyBorder());
00496 setBackground(backgroundColor);
00497 }
00498
00499
00500 private void updateToolBar(int i) {
00501 if(displayChoiceToolbar!=null) displayChoiceToolbar.setButton(i);
00502 }
00503
00504
00505 public void actionPerformed(ActionEvent e) {
00506 JMenuItem source = (JMenuItem)(e.getSource());
00507
00508
00509
00510 if(source==scriptBeanShellItem) {
00511 addNewConsole(ScriptingInterface.instance().getBeanShellInterpreter(), "BeanShell");
00512 return;
00513 }
00514
00515
00516
00517
00518 if(source==scriptJythonItem) {
00519 addNewConsole(ScriptingInterface.instance().getJythonInterpreter(), "Jython");
00520 return;
00521 }
00522
00523 if(source==isTreeItem) {
00524 if(isTree==null) isTree = new ISTree(guiControl,guiControl.isInterface.getISTree());
00525 else isTree.setTree(guiControl.isInterface.getISTree());
00526 return;
00527 }
00528
00529
00530 }
00531
00532 public void enableCCMenuItems(boolean enabled) {
00533 java.awt.Component[] component = testMenu.getMenuComponents();
00534 for(int i=0;i<component.length;i++) {
00535 if(component[i].getClass().getName().startsWith("javax.swing.JPopupMenu")) break;
00536 if(!component[i].getClass().getName().startsWith("javax.swing.JMenu")) continue;
00537 JMenu subMenu = (JMenu)component[i];
00538 for(int y=0;y<subMenu.getItemCount();y++) {
00539 JMenuItem item = subMenu.getItem(y);
00540 if(item!=null) item.setEnabled(enabled);
00541 }
00542 }
00543 component = panelTestMenu.getMenuComponents();
00544 for(int i=0;i<component.length;i++) {
00545 if(component[i].getClass().getName().startsWith("javax.swing.JPopupMenu")) break;
00546 if(!component[i].getClass().getName().startsWith("javax.swing.JMenu")) continue;
00547 JMenu subMenu = (JMenu)component[i];
00548 for(int y=0;y<subMenu.getItemCount();y++) {
00549 JMenuItem item = subMenu.getItem(y);
00550 if(item!=null) item.setEnabled(enabled);
00551 }
00552 }
00553 }
00554
00555
00556 public void enableDisplayMenuItems(boolean enabled) {
00557 displayMenu.setEnabled(enabled);
00558 }
00559
00560
00561 protected boolean addNewConsole(Interpreter interpreter, String suffix) {
00562 if (interpreter == null) {
00563 System.out.println("Can only have 1 scripting window open at once\n");
00564 return false;
00565 }
00566 JFrame frame = new JFrame();
00567 JScrollPane scroll = new JScrollPane();
00568 scroll.setViewportView(interpreter.getConsole());
00569 frame.getContentPane().add(scroll);
00570 frame.setTitle("Scripting Window:" + suffix);
00571 frame.show();
00572 frame.setSize(800, 500);
00573 return true;
00574 }
00575
00576
00577 public void showCCPopupMenu(MouseEvent e) {
00578 JPopupMenu pMenu = ccDataOptionMenu.getPopupMenu();
00579 pMenu.show(e.getComponent(),e.getX(),e.getY());
00580 pMenu.setInvoker(ccDataOptionMenu);
00581 }
00582
00583
00584 public void showTablesPopupMenu(int clickedTable, MouseEvent e) {
00585 JPopupMenu pMenu;
00586 switch(clickedTable) {
00587 case 1:
00588 switch(guiControl.displayStatus.getStatus()) {
00589 case DisplayStatus.MODULE_GROUP_SELECTION:
00590 JMenu m = new JMenu("Comments");
00591 JMenuItem item = new JMenuItem("Edit/Add Module Comments...");
00592 item.setFont(menuFont);
00593 item.addActionListener(new java.awt.event.ActionListener() {
00594 public void actionPerformed(java.awt.event.ActionEvent evt) {
00595 showModuleCommentPrompt(getSelectedSerialNo());
00596 }
00597
00598 });
00599 m.add(item);
00600 pMenu = m.getPopupMenu();
00601 pMenu.show(e.getComponent(),e.getX(),e.getY());
00602 break;
00603
00604 case DisplayStatus.IS_MONITOR:
00605 pMenu = dataManagerSNMenu.getPopupMenu();
00606 pMenu.show(e.getComponent(),e.getX(),e.getY());
00607 pMenu.setInvoker(dataManagerSNMenu);
00608 break;
00609 case DisplayStatus.TEST_DATA:
00610 pMenu = testDataMenu.getPopupMenu();
00611 pMenu.show(e.getComponent(),e.getX(),e.getY());
00612 pMenu.setInvoker(testDataMenu);
00613 break;
00614 case DisplayStatus.SCTDB_DATA:
00615 pMenu = sctdbDataSNMenu.getPopupMenu();
00616 pMenu.show(e.getComponent(),e.getX(),e.getY());
00617 pMenu.setInvoker(sctdbDataSNMenu);
00618 break;
00619 case DisplayStatus.SCTDB_RODDAQ_DATA:
00620 pMenu = sctdbDataSNMenu.getPopupMenu();
00621 pMenu.show(e.getComponent(),e.getX(),e.getY());
00622 pMenu.setInvoker(sctdbDataSNMenu);
00623 break;
00624 case DisplayStatus.IV_DATA:
00625 pMenu = ivScanMenu.getPopupMenu();
00626 pMenu.show(e.getComponent(),e.getX(),e.getY());
00627 pMenu.setInvoker(ivScanMenu);
00628 break;
00629 case DisplayStatus.DCS_DATA:
00630 pMenu = ddcModuleMenu.getPopupMenu();
00631 pMenu.show(e.getComponent(),e.getX(),e.getY());
00632 pMenu.setInvoker(ddcModuleMenu);
00633 break;
00634 default:
00635 }
00636 break;
00637 case 0:
00638 switch(guiControl.displayStatus.getStatus()) {
00639 case DisplayStatus.IS_MONITOR:
00640 pMenu = getTable0Menu().getPopupMenu();
00641 pMenu.show(e.getComponent(),e.getX(),e.getY());
00642
00643 break;
00644 case DisplayStatus.TEST_DATA:
00645 pMenu = testFilterMenu.getPopupMenu();
00646 pMenu.show(e.getComponent(),e.getX(),e.getY());
00647 pMenu.setInvoker(testFilterMenu);
00648 break;
00649 default:
00650 }
00651 break;
00652 default:
00653 }
00654
00655 }
00656
00657 public void showPopupMenu(MouseEvent e) {
00658 JPopupMenu pMenu;
00659 JMenu newMenu = new JMenu();
00660 switch(guiControl.displayStatus.getStatus()) {
00661 case DisplayStatus.UNDEFINED:
00662 pMenu = configMenu.getPopupMenu();
00663 pMenu.show(e.getComponent(),e.getX(),e.getY());
00664 pMenu.setInvoker(configMenu);
00665 break;
00666 case DisplayStatus.MODULE_GROUP_SELECTION:
00667 pMenu = displayMenu.getPopupMenu();
00668 pMenu.show(e.getComponent(),e.getX(),e.getY());
00669 pMenu.setInvoker(displayMenu);
00670 break;
00671 case DisplayStatus.IS_MONITOR:
00672 newMenu.add(panelDisplayMenu);
00673 newMenu.add(panelTestMenu);
00674 newMenu.addSeparator();
00675 JMenuItem rItem = new JMenuItem("Retrieve Archived Data");
00676 rItem.setFont(menuFont);
00677 newMenu.add(rItem);
00678 rItem.addActionListener(new java.awt.event.ActionListener() {
00679 public void actionPerformed(java.awt.event.ActionEvent evt) {
00680 ArchiveQueryBox b = new ArchiveQueryBox(guiControl);
00681 b.setLocationRelativeTo(guiControl);
00682 b.setVisible(true);
00683 }
00684 });
00685
00686
00687 pMenu = newMenu.getPopupMenu();
00688 pMenu.show(e.getComponent(),e.getX(),e.getY());
00689
00690 pMenu.setInvoker(newMenu);
00691 break;
00692 case DisplayStatus.TEST_DATA:
00693 newMenu.add(panelDisplayMenu);
00694 newMenu.add(panelTestMenu);
00695 newMenu.add(panelTestDataOptionMenu);
00696
00697 TestSelection testSelection = guiControl.tablesDisplayPane.getTestSelection();
00698 if(testSelection!=null && testSelection.getTestIndex()==TEST_RXTHRESHOLDBASEDONCONFIGREGISTER) {
00699 JMenuItem item = new JMenuItem("RxThreshold Comparison Report...");
00700 item.setFont(menuFont);
00701 item.addActionListener(new java.awt.event.ActionListener() {
00702 public void actionPerformed(java.awt.event.ActionEvent evt) {
00703 String txt = javax.swing.JOptionPane.showInputDialog(null,"List channels with RxThreshold shifted by more than:","10");
00704 if(txt==null) return;
00705 try {
00706 int shift = Integer.valueOf(txt).intValue();
00707 if(shift<0) {
00708 javax.swing.JOptionPane.showMessageDialog(null,"Shift must be a positive number.");
00709 return;
00710 }
00711 java.util.Vector theTable = checkBOCRxThresholds(shift);
00712 if(theTable==null) return;
00713 if(theTable.size()>1) guiUtilities.SpreadsheetViewer.getInstance().update("Comparison of optimised RxThresholds with with XML file settings for channels with RxThreshold shift greater than "+txt,theTable);
00714 else javax.swing.JOptionPane.showMessageDialog(null,"All RxThreshold values in the xml files are within "+shift+" counts of the optimal values.");
00715 }catch(Exception e){javax.swing.JOptionPane.showMessageDialog(null,"You must enter a positive number.");}
00716 }
00717 });
00718 newMenu.add(item);
00719 item = new JMenuItem("Update XML Files...");
00720 item.setFont(menuFont);
00721 item.addActionListener(new java.awt.event.ActionListener() {
00722 public void actionPerformed(java.awt.event.ActionEvent evt) {
00723 String txt = javax.swing.JOptionPane.showInputDialog(null,"Update files if RxThreshold shifted by more than:","10");
00724 if(txt==null) return;
00725 try {
00726 int shift = Integer.valueOf(txt).intValue();
00727 if(shift<0) {
00728 javax.swing.JOptionPane.showMessageDialog(null,"Shift must be a positive number.");
00729 return;
00730 }
00731 java.util.Vector theTable = checkBOCRxThresholds(shift);
00732 if(theTable==null) return;
00733 System.out.println("theTable has size "+theTable.size());
00734 if(theTable.size()>1) {
00735 RxThresholdData rxFileData = RxThresholdData.getInstance();
00736 rxFileData.updateXMLfiles(theTable,shift);
00737 if(rxFileData.getErrorString()!=null) {
00738 javax.swing.JOptionPane.showMessageDialog(null,rxFileData.getErrorString());
00739 return;
00740 }
00741 }
00742 else javax.swing.JOptionPane.showMessageDialog(null,"No updates made. All RxThreshold values in the xml files are within "+shift+" counts of the optimal values.");
00743 }catch(Exception e){javax.swing.JOptionPane.showMessageDialog(null,"You must enter a positive number.");}
00744 }
00745 });
00746 newMenu.add(item);
00747 }
00748
00749 pMenu = newMenu.getPopupMenu();
00750 pMenu.show(e.getComponent(),e.getX(),e.getY());
00751 pMenu.setInvoker(newMenu);
00752 break;
00753 case DisplayStatus.SCTDB_DATA:
00754 newMenu.add(panelDisplayMenu);
00755 newMenu.add(panelsctdbSCTDAQOptionMenu);
00756 pMenu = newMenu.getPopupMenu();
00757 pMenu.show(e.getComponent(),e.getX(),e.getY());
00758 pMenu.setInvoker(newMenu);
00759 break;
00760 case DisplayStatus.SCTDB_RODDAQ_DATA:
00761 newMenu.add(panelDisplayMenu);
00762 newMenu.add(panelsctdbRODDAQOptionMenu);
00763 pMenu = newMenu.getPopupMenu();
00764 pMenu.show(e.getComponent(),e.getX(),e.getY());
00765 pMenu.setInvoker(newMenu);
00766 break;
00767 case DisplayStatus.DCS_DATA:
00768 newMenu.add(panelDisplayMenu);
00769 newMenu.add(panelTestMenu);
00770 newMenu.add(dcsOptionMenu);
00771 pMenu = newMenu.getPopupMenu();
00772 pMenu.show(e.getComponent(),e.getX(),e.getY());
00773 pMenu.setInvoker(newMenu);
00774 break;
00775 case DisplayStatus.IV_DATA:
00776 newMenu.add(panelDisplayMenu);
00777 newMenu.add(ivScanOptionMenu);
00778 pMenu = newMenu.getPopupMenu();
00779 pMenu.show(e.getComponent(),e.getX(),e.getY());
00780 pMenu.setInvoker(newMenu);
00781 break;
00782 case DisplayStatus.PROBE_DATA:
00783 newMenu.add(panelDisplayMenu);
00784 newMenu.add(probeMenu);
00785 pMenu = newMenu.getPopupMenu();
00786 pMenu.show(e.getComponent(),e.getX(),e.getY());
00787 pMenu.setInvoker(newMenu);
00788 break;
00789
00790 default:
00791 }
00792 }
00793
00794 private JMenu getTestDataOptionMenu() {
00795 JMenu thisMenu = new JMenu("Test Results");
00796 thisMenu.setFont(menuFont);
00797 testDataOptions[0] = new JMenuItem("ROD Data");
00798 testDataOptions[0].setFont(menuFont);
00799 testDataOptions[0].addActionListener(new java.awt.event.ActionListener() {
00800 public void actionPerformed(java.awt.event.ActionEvent evt) {
00801 guiControl.displayPane.setDisplayOption(0);
00802 }
00803 });
00804 testDataOptions[1] = new JMenuItem("SCTDAQ Reference Data");
00805 testDataOptions[1].setFont(menuFont);
00806 testDataOptions[1].addActionListener(new java.awt.event.ActionListener() {
00807 public void actionPerformed(java.awt.event.ActionEvent evt) {
00808 guiControl.displayPane.setDisplayOption(1);
00809 }
00810 });
00811
00812 testDataOptions[2] = new JMenuItem("Comparison ROD-SCTDAQ");
00813 testDataOptions[2].setFont(menuFont);
00814 testDataOptions[2].addActionListener(new java.awt.event.ActionListener() {
00815 public void actionPerformed(java.awt.event.ActionEvent evt) {
00816 guiControl.displayPane.setDisplayOption(2);
00817 }
00818 });
00819 thisMenu.add(testDataOptions[0]);
00820 thisMenu.add(testDataOptions[1]);
00821 thisMenu.add(testDataOptions[2]);
00822
00823 thisMenu.addSeparator();
00824
00825 JMenuItem item = new JMenuItem("Summary List...");
00826 item.setFont(menuFont);
00827 item.addActionListener(new java.awt.event.ActionListener() {
00828 public void actionPerformed(java.awt.event.ActionEvent evt) {
00829
00830 TestSelection testSelection = guiControl.tablesDisplayPane.getTestSelection();
00831 IVTestSelection ivTestSelection = guiControl.tablesDisplayPane.getIVTestSelection();
00832 int testIndex = (testSelection!=null) ? testSelection.getTestIndex() : -1;
00833 if(testIndex==-1) {
00834 javax.swing.JOptionPane.showMessageDialog(null,"No test is currently selected.");
00835 return;
00836 }
00837 int parameterIndex = guiControl.selectorPane.getDisplayParameterIndex();
00838 if(parameterIndex<0) {
00839 javax.swing.JOptionPane.showMessageDialog(null,"No test parameter is currently selected.");
00840 return;
00841 }
00842
00843 String header = testSelection.getResultObjectHeader();
00844
00845 java.util.Vector theTable = new java.util.Vector();
00846 java.util.Vector theLine = new java.util.Vector();
00847 theLine.addElement("Serial No");
00848 if(parameterIndex>3) for(int i=4;i<chipOptions.length;i++) theLine.addElement(chipOptions[i]);
00849 else theLine.addElement("Data");
00850 theTable.addElement(theLine);
00851
00852 java.util.Map dcsMap = null;
00853
00854 if(guiControl.tablesDisplayPane.getTestControlObjectName()!=null) dcsMap=guiControl.isInterface.getDCSMap(guiControl.tablesDisplayPane.getTestControlObjectName());
00855
00856
00857
00858 java.util.Set moduleList = guiControl.config.getSortedVector(guiControl.displayPane.getSCTView());
00859 for (java.util.Iterator i = moduleList.iterator(); i.hasNext(); ) {
00860 String sn=(String)i.next();
00861
00862 SummaryReader.DCSInfo dcsInfo = (dcsMap!=null) ? (SummaryReader.DCSInfo)dcsMap.get(sn) : null;
00863 theLine = guiControl.isInterface.getTestDataLine(header,sn,testIndex,dcsInfo);
00864 if(theLine!=null) theTable.addElement(theLine);
00865 }
00866 String param = guiControl.selectorPane.getDisplayParameter();
00867 param+=" Data for "+testNames[testSelection.getTestIndex()]+" Run "+Integer.toString(testSelection.getRunNo())+" Scan "+Integer.toString(testSelection.getScanNo());
00868 guiUtilities.SpreadsheetViewer.getInstance().update(param,theTable);
00869
00870 }
00871 });
00872 thisMenu.add(item);
00873
00874 item = new JMenuItem("SCTDAQ Reference Comparison Report");
00875 item.setFont(menuFont);
00876 item.addActionListener(new java.awt.event.ActionListener() {
00877 public void actionPerformed(java.awt.event.ActionEvent evt) {
00878
00879 makeComparisonReport(true);
00880
00881 }
00882 });
00883 thisMenu.add(item);
00884
00885 item = new JMenuItem("SctRodDaq Reference Comparison Report");
00886 item.setFont(menuFont);
00887 item.addActionListener(new java.awt.event.ActionListener() {
00888 public void actionPerformed(java.awt.event.ActionEvent evt) {
00889
00890 makeComparisonReport(false);
00891
00892 }
00893 });
00894 thisMenu.add(item);
00895
00896
00897 thisMenu.addSeparator();
00898
00899
00900 item = new JMenuItem("Upload to SCT Database");
00901 item.setFont(menuFont);
00902 item.addActionListener(new java.awt.event.ActionListener() {
00903 public void actionPerformed(java.awt.event.ActionEvent evt) {
00904 TestSelection t = guiControl.tablesDisplayPane.getTestSelection();
00905 if(t==null) {
00906 javax.swing.JOptionPane.showMessageDialog(null,"There is no Data to upload!");
00907 return;
00908 }
00909 int response = JOptionPane.showConfirmDialog(null,"Are you sure want to upload the data for Run/Scan "+t.getRunNo()+"/"+t.getScanNo()+"?");
00910 if(response!=javax.swing.JOptionPane.YES_OPTION) return;
00911 UploadManager upload = new UploadManager(guiControl);
00912 }
00913 });
00914 thisMenu.add(item);
00915
00916 return thisMenu;
00917 }
00918
00919 private JMenu getDisplayOptionMenu() {
00920 JMenu thisMenu = new JMenu("Display");
00921 thisMenu.setFont(menuFont);
00922
00923 JMenuItem item = new JMenuItem("Clear Result Cache");
00924 item.setFont(menuFont);
00925 item.addActionListener(new java.awt.event.ActionListener() {
00926 public void actionPerformed(java.awt.event.ActionEvent evt) {
00927 System.out.println("SctGUI: Clearing cache (was "+guiControl.isInterface.cache.size()+" objects deep)");
00928 guiControl.isInterface.cache.clear();
00929 }
00930 });
00931 thisMenu.add(item);
00932
00933 item = new JMenuItem("Reset all Color Scales");
00934 item.setFont(menuFont);
00935 item.addActionListener(new java.awt.event.ActionListener() {
00936 public void actionPerformed(java.awt.event.ActionEvent evt) {
00937 int response = javax.swing.JOptionPane.showConfirmDialog(null,"This will permanently reset all color scales to their defaults. Continue?","Confirm",javax.swing.JOptionPane.YES_NO_OPTION,javax.swing.JOptionPane.INFORMATION_MESSAGE);
00938 if(response==javax.swing.JOptionPane.YES_OPTION) {
00939 ColorScaleManager.getInstance().clearAll();
00940 guiControl.colorScalePane.setColorScale();
00941 guiControl.displayPane.setDisplayColors();
00942 guiControl.displayPane.refreshDisplay();
00943 }
00944
00945 }
00946 });
00947 thisMenu.add(item);
00948
00949 autoSelectMode.setFont(menuFont);
00950 autoSelectMode.setSelected(PreferencesInterface.getInstance().getPreference(PreferencesInterface.AUTO_TEST_SELECT).equals("TRUE"));
00951 thisMenu.add(autoSelectMode);
00952 autoSelectMode.addActionListener(new java.awt.event.ActionListener() {
00953 public void actionPerformed(java.awt.event.ActionEvent evt) {
00954 String status = autoSelectMode.isSelected() ? "TRUE" : "FALSE";
00955 PreferencesInterface.getInstance().setPreference(PreferencesInterface.AUTO_TEST_SELECT,status);
00956 }
00957 });
00958
00959 return thisMenu;
00960 }
00961
00962
00963 private JMenu getBookkeepingMenu() {
00964 JMenu thisMenu = new JMenu("Book-keeping");
00965 thisMenu.setFont(menuFont);
00966
00967 BookKeeper sbk = BookKeeper.getInstance();
00968
00969 sbk.bookkeepingEnabled.setFont(menuFont);
00970 thisMenu.add(sbk.bookkeepingEnabled);
00971
00972
00973 thisMenu.addSeparator();
00974
00975 sbk.runPromptEnabled.setFont(menuFont);
00976 thisMenu.add(sbk.runPromptEnabled);
00977
00978
00979 sbk.testPromptEnabled.setFont(menuFont);
00980 thisMenu.add(sbk.testPromptEnabled);
00981
00982
00983 return thisMenu;
00984 }
00985
00986 private JMenu getTableDataOptionMenu() {
00987 JMenu thisMenu = new JMenu("Data Manager");
00988 thisMenu.setFont(menuFont);
00989
00990 JMenuItem item = new JMenuItem("Plot Selected Data");
00991 item.setFont(menuFont);
00992 item.addActionListener(new java.awt.event.ActionListener() {
00993 public void actionPerformed(java.awt.event.ActionEvent evt) {
00994 switch(guiControl.displayStatus.getStatus()) {
00995 case DisplayStatus.IS_MONITOR:
00996 String objectname;
00997 if((objectname = guiControl.tablesDisplayPane.getSelectedObject())!=null) guiControl.isInterface.launchExternalViewer(objectname);
00998 else javax.swing.JOptionPane.showMessageDialog(null,"No data selected.");
00999 break;
01000 default:
01001 }
01002 }
01003 });
01004 thisMenu.add(item);
01005
01006 item = new JMenuItem("Plot (with Options) Selected Data");
01007 item.setFont(menuFont);
01008 item.addActionListener(new java.awt.event.ActionListener() {
01009 public void actionPerformed(java.awt.event.ActionEvent evt) {
01010 switch(guiControl.displayStatus.getStatus()) {
01011 case DisplayStatus.IS_MONITOR:
01012 String objectname;
01013 if((objectname = guiControl.tablesDisplayPane.getSelectedObject())!=null) guiControl.isInterface.launchExternalViewerWithOptions(objectname);
01014 else javax.swing.JOptionPane.showMessageDialog(null,"No data selected.");
01015 break;
01016 default:
01017 }
01018 }
01019 });
01020 thisMenu.add(item);
01021
01022 item = new JMenuItem("Delete Selected Test(s)");
01023 item.setFont(menuFont);
01024 item.addActionListener(new java.awt.event.ActionListener() {
01025 public void actionPerformed(java.awt.event.ActionEvent evt) {
01026 switch(guiControl.displayStatus.getStatus()) {
01027 case DisplayStatus.IS_MONITOR:
01028 TestSelection testSelection = guiControl.tablesDisplayPane.getTestSelection();
01029 if(testSelection==null) {
01030 javax.swing.JOptionPane.showMessageDialog(null,"No data selected.");
01031 return;
01032 }
01033 int selectedRow = guiControl.tablesDisplayPane.getSelectedTest();
01034 int response = JOptionPane.showConfirmDialog(null,"Delete "+testSelection.getTestName()+" test for Run/Scan "+testSelection.getRunNo()+"/"+testSelection.getScanNo()+"?","Confirm Deletion",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);
01035 if(response==JOptionPane.NO_OPTION) return;
01036 guiControl.isInterface.removeTests(guiControl.tablesDisplayPane.getTestControlObjectNames(),selectedRow,selectedRow);
01037 guiControl.tablesDisplayPane.updateTables();
01038 break;
01039 default:
01040 }
01041 }
01042 });
01043 thisMenu.add(item);
01044
01045
01046 item = new JMenuItem("View Selected IS Object");
01047 item.setFont(menuFont);
01048 item.addActionListener(new java.awt.event.ActionListener() {
01049 public void actionPerformed(java.awt.event.ActionEvent evt) {
01050 switch(guiControl.displayStatus.getStatus()) {
01051 case DisplayStatus.IS_MONITOR:
01052 String objectname;
01053 if((objectname = guiControl.tablesDisplayPane.getSelectedObject())!=null) guiControl.isInterface.viewISData(objectname);
01054 else javax.swing.JOptionPane.showMessageDialog(null,"No data selected.");
01055 break;
01056 default:
01057 }
01058 }
01059 });
01060
01061 thisMenu.add(item);
01062
01063 item = new JMenuItem("View Selected Module Configuration");
01064 item.setFont(menuFont);
01065 item.addActionListener(new java.awt.event.ActionListener() {
01066 public void actionPerformed(java.awt.event.ActionEvent evt) {
01067 String sn = guiControl.tablesDisplayPane.getSelectedSerialNo();
01068 if(sn==null) return;
01069 JFrame frame2 = new JFrame("Module Configuration");
01070 frame2.getContentPane().add(new GuiComponents.Panels.ModuleConfigurationPanel(sn));
01071 frame2.pack();
01072 frame2.show();
01073 }
01074
01075 });
01076 thisMenu.add(item);
01077
01078 item = new JMenuItem("Retrieve Archived Data");
01079 item.setFont(menuFont);
01080 item.addActionListener(new java.awt.event.ActionListener() {
01081 public void actionPerformed(java.awt.event.ActionEvent evt) {
01082 ArchiveQueryBox b = new ArchiveQueryBox(guiControl);
01083 b.setLocationRelativeTo(guiControl);
01084 b.setVisible(true);
01085 }
01086 });
01087 thisMenu.add(item);
01088
01089 return thisMenu;
01090 }
01091
01092 private JMenu getTable0Menu() {
01093 JMenu thisMenu = new JMenu("Data Manager - table0");
01094
01095 thisMenu.setFont(menuFont);
01096
01097 JMenuItem item = new JMenuItem("Add/Edit Run Comments...");
01098 item.setFont(menuFont);
01099 item.addActionListener(new java.awt.event.ActionListener() {
01100 public void actionPerformed(java.awt.event.ActionEvent evt) {
01101 TestSelection testSelection = guiControl.tablesDisplayPane.getTestSelection();
01102 if(testSelection==null) {
01103 javax.swing.JOptionPane.showMessageDialog(null,"No test selected.");
01104 return;
01105 }
01106 BookKeeper.getInstance().showCommentPrompt(testSelection.getRunNo(), testSelection.getScanNo(), null);
01107 }
01108 });
01109 thisMenu.add(item);
01110
01111 item = new JMenuItem("Add/Edit Test Comments...");
01112 item.setFont(menuFont);
01113 item.addActionListener(new java.awt.event.ActionListener() {
01114 public void actionPerformed(java.awt.event.ActionEvent evt) {
01115 TestSelection testSelection = guiControl.tablesDisplayPane.getTestSelection();
01116 if(testSelection==null) {
01117 javax.swing.JOptionPane.showMessageDialog(null,"No test selected.");
01118 return;
01119 }
01120 BookKeeper.getInstance().showCommentPrompt(testSelection.getRunNo(), testSelection.getScanNo(), testSelection.getTestName());
01121 }
01122 });
01123 thisMenu.add(item);
01124
01125 thisMenu.addSeparator();
01126
01127 item = new JMenuItem("Delete Selected Test(s)");
01128 item.setFont(menuFont);
01129 item.addActionListener(new java.awt.event.ActionListener() {
01130 public void actionPerformed(java.awt.event.ActionEvent evt) {
01131 TestSelection testSelection = guiControl.tablesDisplayPane.getTestSelection();
01132 if(testSelection==null) {
01133 javax.swing.JOptionPane.showMessageDialog(null,"No data selected.");
01134 return;
01135 }
01136 int selectedRow = guiControl.tablesDisplayPane.getSelectedTest();
01137 int response = JOptionPane.showConfirmDialog(null,"Delete "+testSelection.getTestName()+" test for Run/Scan "+testSelection.getRunNo()+"/"+testSelection.getScanNo()+"?","Confirm Deletion",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);
01138 if(response==JOptionPane.NO_OPTION) return;
01139 guiControl.isInterface.removeTests(guiControl.tablesDisplayPane.getTestControlObjectNames(),selectedRow,selectedRow);
01140 guiControl.tablesDisplayPane.updateTables();
01141 }
01142 });
01143 thisMenu.add(item);
01144
01145
01146
01147 return thisMenu;
01148 }
01149 private JMenu getDCSOptionMenu() {
01150 JMenu thisMenu = new JMenu("DCS");
01151
01152 thisMenu.setFont(menuFont);
01153
01154 JMenuItem item = new JMenuItem("IS Server Name...");
01155 item.setFont(menuFont);
01156 thisMenu.add(item);
01157 item.addActionListener(new java.awt.event.ActionListener() {
01158 public void actionPerformed(java.awt.event.ActionEvent evt) {
01159 Preference preference = new Preference(guiControl,PreferencesInterface.DCS_SERVER_NAME);
01160 }
01161 });
01162 thisMenu.addSeparator();
01163
01164 item = new JMenuItem("Hard Reset all modules...");
01165 item.setFont(menuFont);
01166 thisMenu.add(item);
01167 item.addActionListener(new java.awt.event.ActionListener() {
01168 public void actionPerformed(java.awt.event.ActionEvent evt) {
01169 int response = JOptionPane.showConfirmDialog(null,"Send hard reset to all modules?","Confirm",javax.swing.JOptionPane.OK_CANCEL_OPTION);
01170 if(response!=javax.swing.JOptionPane.YES_OPTION) return;
01171 try {
01172 Sct_SctApi.SctApiDDCServer api = SystemInterface.getInstance().getSctApiDDCServer();
01173 if(api==null) {
01174 javax.swing.JOptionPane.showMessageDialog(null,"null SctApi pointer");
01175 return;
01176 }
01177 int sctView = guiControl.displayPane.getSCTView();
01178 ConfigurationInterface conf = ConfigurationInterface.getInstance();
01179 java.util.Set crateSet = new java.util.HashSet();
01180 for(java.util.Enumeration e = conf.getSerialNumberMap(sctView).elements(); e.hasMoreElements();) {
01181 ModuleCell thisCell = (ModuleCell) e.nextElement();
01182 String sn = thisCell.getSerialNo();
01183 String crate = conf.getSNInfo(sn,SNInfo.DCS_CRATE);
01184 if(crateSet.contains(crate)) continue;
01185 System.out.println("sctGUI - sending hard reset to DCS crate "+crate);
01186 api.ddcHardResetAll(Integer.valueOf(crate).intValue());
01187 crateSet.add(crate);
01188 }
01189 System.out.println("Hard reset completed.");
01190 }catch(Exception e){javax.swing.JOptionPane.showMessageDialog(null,"Exception "+e.toString());}
01191 }
01192 });
01193
01194 item = new JMenuItem("Send Module Configurations...");
01195 item.setFont(menuFont);
01196 thisMenu.add(item);
01197 item.addActionListener(new java.awt.event.ActionListener() {
01198 public void actionPerformed(java.awt.event.ActionEvent evt) {
01199 int response = JOptionPane.showConfirmDialog(null,"Send configuration to all modules?","Confirm",javax.swing.JOptionPane.OK_CANCEL_OPTION);
01200 if(response!=javax.swing.JOptionPane.YES_OPTION) return;
01201 Sct_SctApi.SctApiIPC api = SystemInterface.getInstance().getSctApi();
01202 if(api==null) {
01203 javax.swing.JOptionPane.showMessageDialog(null,"null SctApi pointer");
01204 return;
01205 }
01206 try {
01207 api.sendABCDModules(Sct_SctApi.BankType.PHYSICS_CONFIG);
01208 } catch(SctApiException s) {
01209 javax.swing.JOptionPane.showMessageDialog(null, "Failed to Configure modules: " + s.detail);
01210 }
01211
01212 }
01213 });
01214
01215 item = new JMenuItem("LV/HV Control for all modules...");
01216 item.setFont(menuFont);
01217 thisMenu.add(item);
01218 item.addActionListener(new java.awt.event.ActionListener() {
01219 public void actionPerformed(java.awt.event.ActionEvent evt) {
01220 int sctView =guiControl.displayPane.getSCTView();
01221 DDCModuleSwitcher ddcModuleSwitcher = new DDCModuleSwitcher(sctView);
01222 ddcModuleSwitcher.setLocationRelativeTo(guiControl);
01223 }
01224 });
01225
01226
01227 return thisMenu;
01228 }
01229
01230 private void getProbeMenu() {
01231 probeMenu = new JMenu("Actions");
01232
01233 probeMenu.setFont(menuFont);
01234
01235 JMenuItem item = new JMenuItem("Probe modules...");
01236 item.setFont(menuFont);
01237 probeMenu.add(item);
01238 item.addActionListener(new java.awt.event.ActionListener() {
01239 public void actionPerformed(java.awt.event.ActionEvent evt) {
01240 int response = JOptionPane.showConfirmDialog(null,"Probe all modules?","Confirm",javax.swing.JOptionPane.OK_CANCEL_OPTION);
01241 if(response!=javax.swing.JOptionPane.YES_OPTION) return;
01242 try {
01243 SctApiInfo.getInstance().probe(guiControl.displayPane.getSCTView());
01244 guiControl.displayPane.setDisplayColors();
01245 guiControl.displayPane.refreshDisplay();
01246 guiControl.tablesDisplayPane.updateTables();
01247 }catch(Exception e){javax.swing.JOptionPane.showMessageDialog(null,"Exception "+e.toString());}
01248 }
01249 });
01250
01251 item = new JMenuItem("Check Modules...");
01252 item.setFont(menuFont);
01253 probeMenu.add(item);
01254 item.addActionListener(new java.awt.event.ActionListener() {
01255 public void actionPerformed(java.awt.event.ActionEvent evt) {
01256 SctApiInfo.getInstance().checkProbe();
01257 }
01258 });
01259
01260 probeMenu.addSeparator();
01261
01262 item = new JMenuItem("Hard Reset all modules...");
01263 item.setFont(menuFont);
01264 probeMenu.add(item);
01265 item.addActionListener(new java.awt.event.ActionListener() {
01266 public void actionPerformed(java.awt.event.ActionEvent evt) {
01267 int response = JOptionPane.showConfirmDialog(null,"Send hard reset to all modules?","Confirm",javax.swing.JOptionPane.OK_CANCEL_OPTION);
01268 if(response!=javax.swing.JOptionPane.YES_OPTION) return;
01269 try {
01270 Sct_SctApi.SctApiDDCServer api = SystemInterface.getInstance().getSctApiDDCServer();
01271 if(api==null) {
01272 javax.swing.JOptionPane.showMessageDialog(null,"null SctApi pointer");
01273 return;
01274 }
01275 int sctView = guiControl.displayPane.getSCTView();
01276 ConfigurationInterface conf = ConfigurationInterface.getInstance();
01277 java.util.Set crateSet = new java.util.HashSet();
01278 for(java.util.Enumeration e = conf.getSerialNumberMap(sctView).elements(); e.hasMoreElements();) {
01279 ModuleCell thisCell = (ModuleCell) e.nextElement();
01280 String sn = thisCell.getSerialNo();
01281 String crate = conf.getSNInfo(sn,SNInfo.DCS_CRATE);
01282 if(crateSet.contains(crate)) continue;
01283 System.out.println("sctGUI - sending hard reset to DCS crate "+crate);
01284 api.ddcHardResetAll(Integer.valueOf(crate).intValue());
01285 crateSet.add(crate);
01286 }
01287 System.out.println("Hard reset completed.");
01288 }catch(Exception e){javax.swing.JOptionPane.showMessageDialog(null,"Exception "+e.toString());}
01289 }
01290 });
01291
01292 item = new JMenuItem("Send Module Configurations...");
01293 item.setFont(menuFont);
01294 probeMenu.add(item);
01295 item.addActionListener(new java.awt.event.ActionListener() {
01296 public void actionPerformed(java.awt.event.ActionEvent evt) {
01297 int response = JOptionPane.showConfirmDialog(null,"Send configuration to all modules?","Confirm",javax.swing.JOptionPane.OK_CANCEL_OPTION);
01298 if(response!=javax.swing.JOptionPane.YES_OPTION) return;
01299 Sct_SctApi.SctApiIPC api = SystemInterface.getInstance().getSctApi();
01300 if(api==null) {
01301 javax.swing.JOptionPane.showMessageDialog(null,"null SctApi pointer");
01302 return;
01303 }
01304 try {
01305 api.sendABCDModules(Sct_SctApi.BankType.PHYSICS_CONFIG);
01306 } catch(SctApiException s) {
01307 javax.swing.JOptionPane.showMessageDialog(null, "Failed to Configure modules: " + s.detail);
01308 }
01309
01310 }
01311 });
01312
01313
01314 }
01315
01316 private JMenu getIVScanOptionMenu() {
01317 JMenu thisMenu = new JMenu("IV scans");
01318
01319 thisMenu.setFont(menuFont);
01320
01321 JMenuItem item = new JMenuItem("IV Scan Data Directory...");
01322 item.setFont(menuFont);
01323 thisMenu.add(item);
01324 item.addActionListener(new java.awt.event.ActionListener() {
01325 public void actionPerformed(java.awt.event.ActionEvent evt) {
01326 Preference preference = new Preference(guiControl,PreferencesInterface.IV_DIRECTORY);
01327 }
01328 });
01329
01330
01331 item = new JMenuItem("Import IV Scans...");
01332 item.setFont(menuFont);
01333 thisMenu.add(item);
01334 item.addActionListener(new java.awt.event.ActionListener() {
01335 public void actionPerformed(java.awt.event.ActionEvent evt) {
01336 new IVScanLister(guiControl.displayPane.getSCTView()).show();
01337 }
01338 });
01339
01340 item = new JMenuItem("Plot Selected IVScans");
01341 item.setFont(menuFont);
01342 thisMenu.add(item);
01343 item.addActionListener(new java.awt.event.ActionListener() {
01344 public void actionPerformed(java.awt.event.ActionEvent evt) {
01345 plotIVScanData(null);
01346 }
01347 });
01348
01349 item = new JMenuItem("Upload to SCT Database");
01350 item.setFont(menuFont);
01351 thisMenu.add(item);
01352 item.addActionListener(new java.awt.event.ActionListener() {
01353 public void actionPerformed(java.awt.event.ActionEvent evt) {
01354 IVTestSelection i = guiControl.tablesDisplayPane.getIVTestSelection();
01355 if(i==null) {
01356 javax.swing.JOptionPane.showMessageDialog(null,"There is no IV scan Data to upload!");
01357 return;
01358 }
01359 int response = JOptionPane.showConfirmDialog(null,"Are you sure want to upload the IV scans for Run/Scan "+i.getRunNo()+"/"+i.getScanNo()+"?");
01360 if(response!=javax.swing.JOptionPane.YES_OPTION) return;
01361 UploadManager upload = new UploadManager(guiControl);
01362 }
01363 });
01364
01365 return thisMenu;
01366 }
01367
01368
01369 private JMenu getAssemblyOptionMenu() {
01370 JMenu thisMenu = new JMenu("Assembly");
01371
01372 thisMenu.setFont(menuFont);
01373
01374
01375 autoAssemblyMode.setFont(menuFont);
01376 autoAssemblyMode.setSelected(PreferencesInterface.getInstance().getPreference(PreferencesInterface.ASSEMBLY_UPLOADS).equals("TRUE"));
01377 thisMenu.add(autoAssemblyMode);
01378 autoAssemblyMode.addActionListener(new java.awt.event.ActionListener() {
01379 public void actionPerformed(java.awt.event.ActionEvent evt) {
01380 String status = autoAssemblyMode.isSelected() ? "TRUE" : "FALSE";
01381 PreferencesInterface.getInstance().setPreference(PreferencesInterface.ASSEMBLY_UPLOADS,status);
01382 }
01383 });
01384
01385 thisMenu.addSeparator();
01386
01387 JMenuItem item = new JMenuItem("Upload Module Assembly Positions");
01388 item.setFont(menuFont);
01389 thisMenu.add(item);
01390 item.addActionListener(new java.awt.event.ActionListener() {
01391 public void actionPerformed(java.awt.event.ActionEvent evt) {
01392 guiControl.isInterface.uploadAssemblyInfo();
01393 }
01394 });
01395
01396 return thisMenu;
01397 }
01398
01399
01400 private JMenu getDBSCTDAQDataOptionMenu(boolean isPanel) {
01401 JMenu thisMenu = new JMenu("SCTDAQ Reference");
01402
01403 thisMenu.setFont(menuFont);
01404
01405 JMenuItem item = new JMenuItem("Download SCTDAQ Reference Data");
01406 item.setFont(menuFont);
01407 thisMenu.add(item);
01408 item.addActionListener(new java.awt.event.ActionListener() {
01409 public void actionPerformed(java.awt.event.ActionEvent evt) {
01410 guiControl.isInterface.downloadTests(-1);
01411 }
01412 });
01413 item = new JMenuItem("SCTDAQ Test Location ...");
01414 item.setFont(menuFont);
01415 thisMenu.add(item);
01416 item.addActionListener(new java.awt.event.ActionListener() {
01417 public void actionPerformed(java.awt.event.ActionEvent evt) {
01418 java.util.Vector listOfLocations = new java.util.Vector();
01419 try {
01420 listOfLocations = ProdDatabase.GeneralUtilities.getLocationList();
01421 }catch(Exception e2){}
01422 listOfLocations.insertElementAt("Any",0);
01423 guiUtilities.userPrompt thisPrompt = new guiUtilities.userPrompt(guiControl,"Any","Institute", listOfLocations);
01424 thisPrompt.pack();
01425 thisPrompt.setLocationRelativeTo(guiControl);
01426 thisPrompt.setVisible(true);
01427 String thisLocation = thisPrompt.getValidatedText();
01428 if (!thisLocation.equals("None")) {
01429 guiControl.isInterface.setLocation(thisLocation);
01430
01431 guiControl.selectorPane.initParamList();
01432 guiControl.colorScalePane.setColorScale();
01433 guiControl.displayPane.setDisplayColors();
01434 guiControl.displayPane.refreshDisplay();
01435 guiControl.tablesDisplayPane.listTestResults();
01436 }
01437
01438 }
01439 });
01440 if(!isPanel) {
01441 sctdbAutoDownload.setFont(menuFont);
01442 thisMenu.add(sctdbAutoDownload);
01443 }
01444 return thisMenu;
01445 }
01446
01447 private JMenu getDBRODDAQDataOptionMenu(boolean isPanel) {
01448 JMenu thisMenu = new JMenu("SctRodDaq Downloads");
01449
01450 thisMenu.setFont(menuFont);
01451
01452
01453 JMenuItem item = new JMenuItem("Download SctRodDaq Data ...");
01454 item.setFont(menuFont);
01455 thisMenu.add(item);
01456 item.addActionListener(new java.awt.event.ActionListener() {
01457 public void actionPerformed(java.awt.event.ActionEvent evt) {
01458 new DatabaseLister().show();
01459 }
01460 });
01461
01462 if(!isPanel) {
01463 sctdbAutoUpload.setFont(menuFont);
01464 thisMenu.add(sctdbAutoUpload);
01465 }
01466 return thisMenu;
01467 }
01468
01469 private JMenu getCCDataOptionMenu() {
01470 JMenu thisMenu = new JMenu("CalibrationController");
01471 thisMenu.setFont(menuFont);
01472 JMenuItem item = new JMenuItem("Ping");
01473 item.setFont(menuFont);
01474 item.addActionListener(new java.awt.event.ActionListener() {
01475 public void actionPerformed(java.awt.event.ActionEvent evt) {
01476 try {
01477 if (si.getCalibrationController() != null) {
01478 ipc.servantPackage.info info = si.getCalibrationController().information();
01479 System.out.println("CalibrationController running: " + info.pid + " by " + info.owner + " on " +info.host + " since " + info.time);
01480 } else System.out.println("CalibrationController not running");
01481 }catch(Exception eNoAbort){System.err.println("Error aborting calibrationController: "+eNoAbort.toString());}
01482 }
01483 });
01484 thisMenu.add(item);
01485
01486 thisMenu.addSeparator();
01487 javax.swing.ButtonGroup thisGroup = new javax.swing.ButtonGroup();
01488 for(int i=0;i<ccUpdateModes.length;i++) {
01489 ccUpdateModes[i] = new JCheckBox(ccUpdateStrings[i]);
01490 thisGroup.add(ccUpdateModes[i]);
01491 ccUpdateModes[i].setFont(menuFont);
01492 thisMenu.add(ccUpdateModes[i]);
01493 }
01494 item = new JMenuItem("Abort");
01495 item.setFont(menuFont);
01496 item.addActionListener(new java.awt.event.ActionListener() {
01497 public void actionPerformed(java.awt.event.ActionEvent evt) {
01498 try {
01499
01500 si.getCalibrationController().abort();
01501 }catch(Exception eNoAbort){System.err.println("Error aborting calibrationController: "+eNoAbort.toString());}
01502 }
01503 });
01504 thisMenu.addSeparator();
01505 thisMenu.add(item);
01506
01507
01508 ccUpdateModes[0].setSelected(true);
01509 for(int i=0;i<ccUpdateModes.length;i++) {
01510
01511 switch(i) {
01512 case 0:
01513 ccUpdateModes[i].addActionListener(new java.awt.event.ActionListener() {
01514 public void actionPerformed(java.awt.event.ActionEvent evt) {
01515 try {
01516 si.getCalibrationController().setUpdateOption(UpdateOption.update);
01517 checkCCUpdateMode();
01518 }catch(Exception e){System.err.println("Error : "+e.toString());}
01519 }
01520 });
01521 break;
01522 case 1:
01523 ccUpdateModes[i].addActionListener(new java.awt.event.ActionListener() {
01524 public void actionPerformed(java.awt.event.ActionEvent evt) {
01525 try {
01526 si.getCalibrationController().setUpdateOption(UpdateOption.noupdate);
01527 checkCCUpdateMode();
01528 }catch(Exception e){System.err.println("Error : "+e.toString());}
01529 }
01530 });
01531 break;
01532 case 2:
01533 ccUpdateModes[i].addActionListener(new java.awt.event.ActionListener() {
01534 public void actionPerformed(java.awt.event.ActionEvent evt) {
01535 try {
01536 si.getCalibrationController().setUpdateOption(UpdateOption._wait);
01537 checkCCUpdateMode();
01538 }catch(Exception e){System.err.println("Error : "+e.toString());}
01539 }
01540 });
01541 break;
01542 default:
01543 }
01544 }
01545 return thisMenu;
01546 }
01547
01548 public void checkCCUpdateMode() {
01549 if(guiControl.calibrationControllerPanel==null || guiControl.calibrationControllerPanel.status==null) {
01550 System.out.println("CalibrationControllerPanel.status object not yet available... update mode not yet known");
01551 return;
01552 }
01553 String updateMode = guiControl.calibrationControllerPanel.status.updateOption;
01554 if(updateMode.equals("NOUPDATE")) ccUpdateModes[1].setSelected(true);
01555 else if(updateMode.equals("WAIT")) ccUpdateModes[2].setSelected(true);
01556 else ccUpdateModes[0].setSelected(true);
01557 }
01558
01559
01560 private JMenu getTestFilterMenu() {
01561 JMenu thisMenu = new JMenu("Test Filter");
01562 thisMenu.setFont(menuFont);
01563
01564 JMenuItem item = new JMenuItem("Add/Edit Run Comments...");
01565 item.setFont(menuFont);
01566 item.addActionListener(new java.awt.event.ActionListener() {
01567 public void actionPerformed(java.awt.event.ActionEvent evt) {
01568 TestSelection testSelection = guiControl.tablesDisplayPane.getTestSelection();
01569 if(testSelection==null) {
01570 javax.swing.JOptionPane.showMessageDialog(null,"No test selected.");
01571 return;
01572 }
01573 BookKeeper.getInstance().showCommentPrompt(testSelection.getRunNo(), testSelection.getScanNo(), null);
01574 }
01575 });
01576 thisMenu.add(item);
01577
01578 item = new JMenuItem("Add/Edit Test Comments...");
01579 item.setFont(menuFont);
01580 item.addActionListener(new java.awt.event.ActionListener() {
01581 public void actionPerformed(java.awt.event.ActionEvent evt) {
01582 TestSelection testSelection = guiControl.tablesDisplayPane.getTestSelection();
01583 if(testSelection==null) {
01584 javax.swing.JOptionPane.showMessageDialog(null,"No test selected.");
01585 return;
01586 }
01587 BookKeeper.getInstance().showCommentPrompt(testSelection.getRunNo(), testSelection.getScanNo(), testSelection.getTestName());
01588 }
01589 });
01590 thisMenu.add(item);
01591
01592 thisMenu.addSeparator();
01593
01594 javax.swing.ButtonGroup thisGroup = new javax.swing.ButtonGroup();
01595 testFilterButtons[0] = new JCheckBox("All tests");
01596 thisGroup.add(testFilterButtons[0]);
01597 testFilterButtons[0].setFont(menuFont);
01598 testFilterButtons[0].addActionListener(new java.awt.event.ActionListener() {
01599 public void actionPerformed(java.awt.event.ActionEvent evt) {
01600 switch(guiControl.displayStatus.getStatus()) {
01601 case DisplayStatus.TEST_DATA:
01602 guiControl.displayStatus.setTestDataMode(-1);
01603 break;
01604 case DisplayStatus.SCTDB_DATA:
01605 guiControl.displayStatus.setSCTDBDataMode(-1);
01606 break;
01607 case DisplayStatus.SCTDB_RODDAQ_DATA:
01608 guiControl.displayStatus.setSCTDBRodDaqMode(-1);
01609 break;
01610 default:
01611 }
01612 }
01613 });
01614 thisMenu.add(testFilterButtons[0]);
01615 for(int i=1;i<testFilterButtons.length;i++) {
01616 if(!testIsDefined[i-1]) continue;
01617 testFilterButtons[i] = new JCheckBox(testNames[i-1]);
01618 thisGroup.add(testFilterButtons[i]);
01619 testFilterButtons[i].setFont(menuFont);
01620 thisMenu.add(testFilterButtons[i]);
01621 }
01622 testFilterButtons[0].setSelected(true);
01623
01624 for(int i=1;i<testFilterButtons.length;i++) {
01625 if(!testIsDefined[i-1]) continue;
01626 switch(i-1) {
01627 case TEST_FULLBYPASS:
01628 testFilterButtons[i].addActionListener(new java.awt.event.ActionListener() {
01629 public void actionPerformed(java.awt.event.ActionEvent evt) {
01630 switch(guiControl.displayStatus.getStatus()) {
01631 case DisplayStatus.TEST_DATA:
01632 guiControl.displayStatus.setTestDataMode(TEST_FULLBYPASS);
01633 break;
01634 case DisplayStatus.SCTDB_DATA:
01635 guiControl.displayStatus.setSCTDBDataMode(TEST_FULLBYPASS);
01636 break;
01637 case DisplayStatus.SCTDB_RODDAQ_DATA:
01638 guiControl.displayStatus.setSCTDBRodDaqMode(TEST_FULLBYPASS);
01639 break;
01640 default:
01641 }
01642 }
01643 });
01644 break;
01645 case TEST_PIPELINE:
01646 testFilterButtons[i].addActionListener(new java.awt.event.ActionListener() {
01647 public void actionPerformed(java.awt.event.ActionEvent evt) {
01648 switch(guiControl.displayStatus.getStatus()) {
01649 case DisplayStatus.TEST_DATA:
01650 guiControl.displayStatus.setTestDataMode(TEST_PIPELINE);
01651 break;
01652 case DisplayStatus.SCTDB_DATA:
01653 guiControl.displayStatus.setSCTDBDataMode(TEST_PIPELINE);
01654 break;
01655 case DisplayStatus.SCTDB_RODDAQ_DATA:
01656 guiControl.displayStatus.setSCTDBRodDaqMode(TEST_PIPELINE);
01657 break;
01658 default:
01659 }
01660 }
01661 });
01662 break;
01663 case TEST_STROBEDELAY:
01664 testFilterButtons[i].addActionListener(new java.awt.event.ActionListener() {
01665 public void actionPerformed(java.awt.event.ActionEvent evt) {
01666 switch(guiControl.displayStatus.getStatus()) {
01667 case DisplayStatus.TEST_DATA:
01668 guiControl.displayStatus.setTestDataMode(TEST_STROBEDELAY);
01669 break;
01670 case DisplayStatus.SCTDB_DATA:
01671 guiControl.displayStatus.setSCTDBDataMode(TEST_STROBEDELAY);
01672 break;
01673 case DisplayStatus.SCTDB_RODDAQ_DATA:
01674 guiControl.displayStatus.setSCTDBRodDaqMode(TEST_STROBEDELAY);
01675 break;
01676 default:
01677 }
01678 }
01679 });
01680 break;
01681 case TEST_3PTGAIN:
01682 testFilterButtons[i].addActionListener(new java.awt.event.ActionListener() {
01683 public void actionPerformed(java.awt.event.ActionEvent evt) {
01684 switch(guiControl.displayStatus.getStatus()) {
01685 case DisplayStatus.TEST_DATA:
01686 guiControl.displayStatus.setTestDataMode(TEST_3PTGAIN);
01687 break;
01688 case DisplayStatus.SCTDB_DATA:
01689 guiControl.displayStatus.setSCTDBDataMode(TEST_3PTGAIN);
01690 break;
01691 case DisplayStatus.SCTDB_RODDAQ_DATA:
01692 guiControl.displayStatus.setSCTDBRodDaqMode(TEST_3PTGAIN);
01693 break;
01694 default:
01695 }
01696 }
01697 });
01698 break;
01699 case TEST_TRIM:
01700 testFilterButtons[i].addActionListener(new java.awt.event.ActionListener() {
01701 public void actionPerformed(java.awt.event.ActionEvent evt) {
01702 switch(guiControl.displayStatus.getStatus()) {
01703 case DisplayStatus.TEST_DATA:
01704 guiControl.displayStatus.setTestDataMode(TEST_TRIM);
01705 break;
01706 case DisplayStatus.SCTDB_DATA:
01707 guiControl.displayStatus.setSCTDBDataMode(TEST_TRIM);
01708 break;
01709 case DisplayStatus.SCTDB_RODDAQ_DATA:
01710 guiControl.displayStatus.setSCTDBRodDaqMode(TEST_TRIM);
01711 break;
01712 default:
01713 }
01714 }
01715 });
01716 break;
01717 case TEST_NPTGAIN:
01718 testFilterButtons[i].addActionListener(new java.awt.event.ActionListener() {
01719 public void actionPerformed(java.awt.event.ActionEvent evt) {
01720 switch(guiControl.displayStatus.getStatus()) {
01721 case DisplayStatus.TEST_DATA:
01722 guiControl.displayStatus.setTestDataMode(TEST_NPTGAIN);
01723 break;
01724 case DisplayStatus.SCTDB_DATA:
01725 guiControl.displayStatus.setSCTDBDataMode(TEST_NPTGAIN);
01726 break;
01727 case DisplayStatus.SCTDB_RODDAQ_DATA:
01728 guiControl.displayStatus.setSCTDBRodDaqMode(TEST_NPTGAIN);
01729 break;
01730 default:
01731 }
01732 }
01733 });
01734 break;
01735 case TEST_NOISE:
01736 testFilterButtons[i].addActionListener(new java.awt.event.ActionListener() {
01737 public void actionPerformed(java.awt.event.ActionEvent evt) {
01738 switch(guiControl.displayStatus.getStatus()) {
01739 case DisplayStatus.TEST_DATA:
01740 guiControl.displayStatus.setTestDataMode(TEST_NOISE);
01741 break;
01742 case DisplayStatus.SCTDB_DATA:
01743 guiControl.displayStatus.setSCTDBDataMode(TEST_NOISE);
01744 break;
01745 case DisplayStatus.SCTDB_RODDAQ_DATA:
01746 guiControl.displayStatus.setSCTDBRodDaqMode(TEST_NOISE);
01747 break;
01748 default:
01749 }
01750 }
01751 });
01752 break;
01753 case TEST_TIMEWALK:
01754 testFilterButtons[i].addActionListener(new java.awt.event.ActionListener() {
01755 public void actionPerformed(java.awt.event.ActionEvent evt) {
01756 switch(guiControl.displayStatus.getStatus()) {
01757 case DisplayStatus.TEST_DATA:
01758 guiControl.displayStatus.setTestDataMode(TEST_TIMEWALK);
01759 break;
01760 case DisplayStatus.SCTDB_DATA:
01761 guiControl.displayStatus.setSCTDBDataMode(TEST_TIMEWALK);
01762 break;
01763 case DisplayStatus.SCTDB_RODDAQ_DATA:
01764 guiControl.displayStatus.setSCTDBRodDaqMode(TEST_TIMEWALK);
01765 break;
01766 default:
01767 }
01768 }
01769 });
01770 break;
01771 case TEST_NMASK:
01772 testFilterButtons[i].addActionListener(new java.awt.event.ActionListener() {
01773 public void actionPerformed(java.awt.event.ActionEvent evt) {
01774 switch(guiControl.displayStatus.getStatus()) {
01775 case DisplayStatus.TEST_DATA:
01776 guiControl.displayStatus.setTestDataMode(TEST_NMASK);
01777 break;
01778 case DisplayStatus.SCTDB_DATA:
01779 guiControl.displayStatus.setSCTDBDataMode(TEST_NMASK);
01780 break;
01781 case DisplayStatus.SCTDB_RODDAQ_DATA:
01782 guiControl.displayStatus.setSCTDBRodDaqMode(TEST_NMASK);
01783 break;
01784 default:
01785 }
01786 }
01787 });
01788 break;
01789 case TEST_RXTHRESHOLD:
01790 testFilterButtons[i].addActionListener(new java.awt.event.ActionListener() {
01791 public void actionPerformed(java.awt.event.ActionEvent evt) {
01792 switch(guiControl.displayStatus.getStatus()) {
01793 case DisplayStatus.TEST_DATA:
01794 guiControl.displayStatus.setTestDataMode(TEST_RXTHRESHOLD);
01795 break;
01796 case DisplayStatus.SCTDB_DATA:
01797 guiControl.displayStatus.setSCTDBDataMode(TEST_RXTHRESHOLD);
01798 break;
01799 case DisplayStatus.SCTDB_RODDAQ_DATA:
01800 guiControl.displayStatus.setSCTDBRodDaqMode(TEST_RXTHRESHOLD);
01801 break;
01802 default:
01803 }
01804 }
01805 });
01806 break;
01807 case TEST_RXTHRESHOLDBASEDONCONFIGREGISTER:
01808 testFilterButtons[i].addActionListener(new java.awt.event.ActionListener() {
01809 public void actionPerformed(java.awt.event.ActionEvent evt) {
01810 switch(guiControl.displayStatus.getStatus()) {
01811 case DisplayStatus.TEST_DATA:
01812 guiControl.displayStatus.setTestDataMode(TEST_RXTHRESHOLDBASEDONCONFIGREGISTER);
01813 break;
01814 case DisplayStatus.SCTDB_DATA:
01815 guiControl.displayStatus.setSCTDBDataMode(TEST_RXTHRESHOLDBASEDONCONFIGREGISTER);
01816 break;
01817 case DisplayStatus.SCTDB_RODDAQ_DATA:
01818 guiControl.displayStatus.setSCTDBRodDaqMode(TEST_RXTHRESHOLDBASEDONCONFIGREGISTER);
01819 break;
01820 default:
01821 }
01822 }
01823 });
01824 break;
01825 case TEST_RXDELAY:
01826 testFilterButtons[i].addActionListener(new java.awt.event.ActionListener() {
01827 public void actionPerformed(java.awt.event.ActionEvent evt) {
01828 switch(guiControl.displayStatus.getStatus()) {
01829 case DisplayStatus.TEST_DATA:
01830 guiControl.displayStatus.setTestDataMode(TEST_RXDELAY);
01831 break;
01832 case DisplayStatus.SCTDB_DATA:
01833 guiControl.displayStatus.setSCTDBDataMode(TEST_RXDELAY);
01834 break;
01835 case DisplayStatus.SCTDB_RODDAQ_DATA:
01836 guiControl.displayStatus.setSCTDBRodDaqMode(TEST_RXDELAY);
01837 break;
01838 default:
01839 }
01840 }
01841 });
01842 break;
01843 default:
01844 }
01845 }
01846 return thisMenu;
01847 }
01848
01849 public void resetTestListFilter() {
01850 testFilterButtons[0].setSelected(true);
01851 }
01852
01853 private JMenu getTestInvokeMenu(JMenu ccAutoMenu) {
01854 JMenu thisMenu = new JMenu("Tests");
01855 JMenuItem menuItem;
01856
01857
01858
01859 JMenu bocTestsMenu = new JMenu("Boc Setup");
01860 bocTestsMenu.setFont(menuFont);
01861 menuItem = new JMenuItem("Raw Scan");
01862 menuItem.setFont(menuFont);
01863 menuItem.addActionListener(new java.awt.event.ActionListener() {
01864 public void actionPerformed(java.awt.event.ActionEvent evt) {
01865 try{
01866 si.getCalibrationController().doScan(si.getCalibrationController().getScanLibrary().rawScan(10,false));
01867 }catch(Throwable e){
01868 System.err.println("Error communicating with Calibration Controller [GuiMenuBar2:RawScan]");
01869 }
01870 }
01871 });
01872
01873 bocTestsMenu.add(menuItem);
01874
01875
01876
01877
01878
01879
01880
01881
01882
01883
01884
01885
01886
01887 menuItem = new JMenuItem("RX Threshold (Config Register)");
01888 menuItem.setFont(menuFont);
01889 menuItem.addActionListener(new java.awt.event.ActionListener() {
01890 public void actionPerformed(java.awt.event.ActionEvent evt) {
01891 menuDoTest(menuGetTestByName("RxThresholdBasedOnConfigRegister") );
01892 }
01893 });
01894 bocTestsMenu.add(menuItem);
01895
01896 menuItem = new JMenuItem("RX Delay");
01897 menuItem.setFont(menuFont);
01898 menuItem.addActionListener(new java.awt.event.ActionListener() {
01899 public void actionPerformed(java.awt.event.ActionEvent evt) {
01900
01901
01902
01903 menuDoTest(menuGetTestByName("RxDelay") );
01904 }
01905 });
01906 bocTestsMenu.add(menuItem);
01907
01908
01909
01910
01911
01912
01913
01914
01915
01916
01917
01918
01919 menuItem = new JMenuItem("TX Current (Config Register)");
01920 menuItem.setFont(menuFont);
01921 menuItem.addActionListener(new java.awt.event.ActionListener() {
01922 public void actionPerformed(java.awt.event.ActionEvent evt) {
01923 menuDoTest(menuGetTestByName("TxCurrent") );
01924 }
01925 });
01926 bocTestsMenu.add(menuItem);
01927
01928
01929 menuItem = new JMenuItem("Mark-space ratio");
01930 menuItem.setFont(menuFont);
01931 menuItem.addActionListener(new java.awt.event.ActionListener() {
01932 public void actionPerformed(java.awt.event.ActionEvent evt) {
01933 menuDoTest(menuGetTestByName("MarkSpaceRatio") );
01934 }
01935 });
01936 bocTestsMenu.add(menuItem);
01937
01938
01939 thisMenu.add(bocTestsMenu);
01940
01941
01942
01943 JMenu digitalTestsMenu = new JMenu("Digital Tests");
01944 digitalTestsMenu.setFont(menuFont);
01945
01946 menuItem = new JMenuItem("NMask");
01947 menuItem.setFont(menuFont);
01948
01949 menuItem.addActionListener(new java.awt.event.ActionListener() {
01950 public void actionPerformed(java.awt.event.ActionEvent evt) {
01951
01952 menuDoTest(menuGetTestByName("NMask"));
01953 }
01954 });
01955
01956
01957 digitalTestsMenu.add(menuItem);
01958
01959 menuItem = new JMenuItem("Pipeline");
01960 menuItem.setFont(menuFont);
01961 menuItem.addActionListener(new java.awt.event.ActionListener() {
01962 public void actionPerformed(java.awt.event.ActionEvent evt) {
01963
01964 menuDoTest(menuGetTestByName("Pipeline"));
01965 }
01966 });
01967
01968 digitalTestsMenu.add(menuItem);
01969
01970 menuItem = new JMenuItem("FullByPass (Barrel)");
01971 menuItem.setFont(menuFont);
01972 menuItem.addActionListener(new java.awt.event.ActionListener() {
01973 public void actionPerformed(java.awt.event.ActionEvent evt) {
01974
01975 menuDoTest(menuGetTestByName("FullBypassBarrel") );
01976 }
01977 });
01978
01979 digitalTestsMenu.add(menuItem);
01980
01981 menuItem = new JMenuItem("FullByPass (Endcap)");
01982 menuItem.setFont(menuFont);
01983 menuItem.addActionListener(new java.awt.event.ActionListener() {
01984 public void actionPerformed(java.awt.event.ActionEvent evt) {
01985
01986 menuDoTest(menuGetTestByName("FullBypassEndcap") );
01987 }
01988 });
01989
01990 digitalTestsMenu.add(menuItem);
01991
01992 menuItem = new JMenuItem("Chip Counters");
01993 menuItem.setFont(menuFont);
01994 menuItem.addActionListener(new java.awt.event.ActionListener() {
01995 public void actionPerformed(java.awt.event.ActionEvent evt) {
01996
01997 menuDoTest(menuGetTestByName("ChipCounter") );
01998 }
01999 });
02000
02001 digitalTestsMenu.add(menuItem);
02002
02003
02004 thisMenu.add(digitalTestsMenu);
02005
02006
02007
02008
02009 JMenu analogueTestsMenu = new JMenu("Analogue Tests");
02010 analogueTestsMenu.setFont(menuFont);
02011
02012
02013 menuItem = new JMenuItem("Strobe Delay");
02014 menuItem.setFont(menuFont);
02015 menuItem.addActionListener(new java.awt.event.ActionListener() {
02016 public void actionPerformed(java.awt.event.ActionEvent evt) {
02017
02018 menuDoTest(menuGetTestByName("StrobeDelay"));
02019 }
02020 });
02021
02022 analogueTestsMenu.add(menuItem);
02023
02024 menuItem = new JMenuItem("3PtGain");
02025 menuItem.setFont(menuFont);
02026 menuItem.addActionListener(new java.awt.event.ActionListener() {
02027 public void actionPerformed(java.awt.event.ActionEvent evt) {
02028
02029 menuDoTest(menuGetTestByName("ThreePointGain"));
02030 }
02031 });
02032
02033 analogueTestsMenu.add(menuItem);
02034
02035 menuItem = new JMenuItem("Trim");
02036 menuItem.setFont(menuFont);
02037 menuItem.addActionListener(new java.awt.event.ActionListener() {
02038 public void actionPerformed(java.awt.event.ActionEvent evt) {
02039
02040 menuDoTest(menuGetTestByName("TrimRange") );
02041 }
02042 });
02043
02044 analogueTestsMenu.add(menuItem);
02045
02046 menuItem = new JMenuItem("ResponseCurve");
02047 menuItem.setFont(menuFont);
02048 menuItem.addActionListener(new java.awt.event.ActionListener() {
02049 public void actionPerformed(java.awt.event.ActionEvent evt) {
02050
02051 menuDoTest(menuGetTestByName("ResponseCurve"));
02052 }
02053 });
02054
02055 analogueTestsMenu.add(menuItem);
02056
02057 menuItem = new JMenuItem("Noise Occupancy");
02058 menuItem.setFont(menuFont);
02059 menuItem.addActionListener(new java.awt.event.ActionListener() {
02060 public void actionPerformed(java.awt.event.ActionEvent evt) {
02061
02062 menuDoTest(menuGetTestByName("NoiseOccupancy") );
02063 }
02064 });
02065
02066 analogueTestsMenu.add(menuItem);
02067
02068 menuItem = new JMenuItem("Time Walk");
02069 menuItem.setFont(menuFont);
02070 menuItem.addActionListener(new java.awt.event.ActionListener() {
02071 public void actionPerformed(java.awt.event.ActionEvent evt) {
02072
02073 menuDoTest(menuGetTestByName("TimeWalk"));
02074 }
02075 });
02076
02077 analogueTestsMenu.add(menuItem);
02078
02079 menuItem = new JMenuItem("Double Trigger Noise");
02080 menuItem.setFont(menuFont);
02081 menuItem.addActionListener(new java.awt.event.ActionListener() {
02082 public void actionPerformed(java.awt.event.ActionEvent evt) {
02083
02084 menuDoTest(menuGetTestByName("DoubleTriggerNoise"));
02085 }
02086 });
02087
02088 analogueTestsMenu.add(menuItem);
02089
02090 menuItem = new JMenuItem("Synch Trigger Noise");
02091 menuItem.setFont(menuFont);
02092 menuItem.addActionListener(new java.awt.event.ActionListener() {
02093 public void actionPerformed(java.awt.event.ActionEvent evt) {
02094 menuDoTest(menuGetTestByName("SynchTriggerNoise"));
02095 }
02096 });
02097
02098 analogueTestsMenu.add(menuItem);
02099
02100 thisMenu.add(analogueTestsMenu);
02101
02102
02103
02104
02105 JMenu quickTestsMenu = new JMenu("Quick Tests");
02106 quickTestsMenu.setFont(menuFont);
02107
02108 menuItem = new JMenuItem("Quick NMask");
02109 menuItem.setFont(menuFont);
02110 menuItem.addActionListener(new java.awt.event.ActionListener() {
02111 public void actionPerformed(java.awt.event.ActionEvent evt) {
02112 menuDoTest(menuGetTestByName("QuickNMask"));
02113 }
02114 });
02115 quickTestsMenu.add(menuItem);
02116
02117 menuItem = new JMenuItem("Five point gain");
02118 menuItem.setFont(menuFont);
02119 menuItem.addActionListener(new java.awt.event.ActionListener() {
02120 public void actionPerformed(java.awt.event.ActionEvent evt) {
02121 menuDoTest(menuGetTestByName("FivePointGain"));
02122 }
02123 });
02124 quickTestsMenu.add(menuItem);
02125
02126 menuItem = new JMenuItem("QuickTrim");
02127 menuItem.setFont(menuFont);
02128 menuItem.addActionListener(new java.awt.event.ActionListener() {
02129 public void actionPerformed(java.awt.event.ActionEvent evt) {
02130 menuDoTest(menuGetTestByName("QuickTrimRange") );
02131 }
02132 });
02133
02134 quickTestsMenu.add(menuItem);
02135
02136 thisMenu.add(quickTestsMenu);
02137
02138 thisMenu.add(ccAutoMenu);
02139
02140
02141
02142
02143 JMenu sequencesMenu = new JMenu("Sequences");
02144 sequencesMenu.setFont(menuFont);
02145
02146 menuItem = new JMenuItem("Characterization");
02147 menuItem.setFont(menuFont);
02148 menuItem.addActionListener(new java.awt.event.ActionListener() {
02149 public void actionPerformed(java.awt.event.ActionEvent evt) {
02150 try{
02151 si.getCalibrationController().doSequence(si.getCalibrationController().getSequenceLibrary().characterizationSequence());
02152 }catch(Throwable e){
02153 System.out.println("Error communicating with CalibrationController [GuiMenuBar2:CharacterizationSequence]");
02154 };
02155 };
02156 });
02157
02158 sequencesMenu.add(menuItem);
02159
02160 thisMenu.add(sequencesMenu);
02161
02162 thisMenu.addSeparator();
02163 thisMenu.add(getSCTDAQMenu());
02164
02165 return thisMenu;
02166 }
02167
02168 public void buildAutoTestsMenu() {
02169 for(int i=0;i<2;i++) buildAutoTestsMenu(i);
02170 }
02171
02172 public void buildAutoTestsMenu(int mIndex){
02173
02174 if(autoTestsMenu[mIndex].getItemCount()>1) return;
02175 autoTestsMenu[mIndex].removeAll();
02176 if (si!=null) {
02177 Sct_CalibrationController.CalibrationController cc = si.getCalibrationController();
02178 if (cc!=null) {
02179 Sct_CalibrationController.TestLibrary tl = cc.getTestLibrary();
02180 if (tl!=null) {
02181 String[] testNames = si.getCalibrationController().getTestLibrary().getTestNames();
02182 for (int i=0; i<testNames.length; ++i) {
02183 final String name = testNames[i];
02184 JMenuItem menuItem = new JMenuItem(name);
02185 menuItem.setFont(menuFont);
02186 menuItem.addActionListener(new java.awt.event.ActionListener() {
02187 public void actionPerformed(java.awt.event.ActionEvent evt) {
02188 menuDoTest(menuGetTestByName(name));
02189 }
02190 });
02191
02192 autoTestsMenu[mIndex].add(menuItem);
02193 };
02194 };
02195 };
02196 };
02197
02198 if (autoTestsMenu[mIndex].getItemCount()==0){
02199 menuItem = new JMenuItem("Not available");
02200 menuItem.setFont(menuFont);
02201 autoTestsMenu[mIndex].add(menuItem);
02202 }
02203 }
02204
02205 public void updateMenuStates() {
02206 switch(guiControl.displayStatus.getStatus()) {
02207 case DisplayStatus.IS_MONITOR:
02208 enableDataManagerItems(true);
02209 break;
02210 default:
02211 enableDataManagerItems(false);
02212 }
02213 }
02214
02215
02216
02217 private void enableDataManagerItems(boolean isEnabled) {
02218 for(int i=0;i<tableDataOptionMenu.getItemCount();i++) tableDataOptionMenu.getItem(i).setEnabled(isEnabled);
02219 }
02220
02221 private JMenu getSCTDAQMenu() {
02222 JMenu sctdaqmenu = new JMenu("SCTDAQ Exerciser");
02223
02224 sctdaqmenu.setFont(menuFont);
02225
02226 menuItem = new JMenuItem("Ping");
02227 menuItem.setFont(menuFont);
02228 menuItem.addActionListener(new java.awt.event.ActionListener() {
02229 public void actionPerformed(java.awt.event.ActionEvent evt) {
02230
02231
02232 }
02233 });
02234 sctdaqmenu.add(menuItem);
02235 sctdaqmenu.addSeparator();
02236
02237
02238 for(int i=0;i<sctapiItems.length;i++) {
02239 if(!testIsDefined[i] || !testIsSCTDAQ[i]) continue;
02240 sctapiItems[i] = new JMenuItem(testMenuNames[i]);
02241 sctapiItems[i].setFont(menuFont);
02242 sctdaqmenu.add(sctapiItems[i]);
02243 switch(i) {
02244 case TEST_FULLBYPASS:
02245 sctapiItems[i].addActionListener(new java.awt.event.ActionListener() {
02246 public void actionPerformed(java.awt.event.ActionEvent evt) {
02247 guiControl.displayStatus.setTestDataMode(-1);
02248 try {
02249 if((si.getTestHighLevelApi())!=null) si.getTestHighLevelApi().fullBypass();
02250 } catch (SctTestApi.NoDataException nde) {}
02251
02252 if(sctdbAutoDownload.isSelected()) guiControl.isInterface.downloadTests(TEST_FULLBYPASS);
02253 }
02254 });
02255 case TEST_PIPELINE:
02256 sctapiItems[i].addActionListener(new java.awt.event.ActionListener() {
02257 public void actionPerformed(java.awt.event.ActionEvent evt) {
02258
02259 try {
02260 if((si.getTestHighLevelApi())!=null) si.getTestHighLevelApi().pipeline();
02261 } catch (SctTestApi.NoDataException nde) {}
02262
02263 if(sctdbAutoDownload.isSelected()) guiControl.isInterface.downloadTests(TEST_PIPELINE);
02264 }
02265 });
02266 break;
02267 case TEST_STROBEDELAY:
02268 sctapiItems[i].addActionListener(new java.awt.event.ActionListener() {
02269 public void actionPerformed(java.awt.event.ActionEvent evt) {
02270
02271 try {
02272 if((si.getTestHighLevelApi())!=null) si.getTestHighLevelApi().strobeDelay();
02273 } catch (SctTestApi.NoDataException nde) {}
02274
02275 if(sctdbAutoDownload.isSelected()) guiControl.isInterface.downloadTests(TEST_STROBEDELAY);
02276 }
02277 });
02278 break;
02279 case TEST_3PTGAIN:
02280 sctapiItems[i].addActionListener(new java.awt.event.ActionListener() {
02281 public void actionPerformed(java.awt.event.ActionEvent evt) {
02282
02283 try {
02284 if((si.getTestHighLevelApi())!=null) si.getTestHighLevelApi().threePointGain();
02285 } catch (SctTestApi.NoDataException nde) {}
02286
02287 if(sctdbAutoDownload.isSelected()) guiControl.isInterface.downloadTests(TEST_3PTGAIN);
02288 }
02289 });
02290 break;
02291 case TEST_TRIM:
02292 sctapiItems[i].addActionListener(new java.awt.event.ActionListener() {
02293 public void actionPerformed(java.awt.event.ActionEvent evt) {
02294
02295 try {
02296 if((si.getTestHighLevelApi())!=null) si.getTestHighLevelApi().trim();
02297 } catch (SctTestApi.NoDataException nde) {}
02298
02299 if(sctdbAutoDownload.isSelected()) guiControl.isInterface.downloadTests(TEST_TRIM);
02300 }
02301 });
02302 break;
02303 case TEST_NPTGAIN:
02304 sctapiItems[i].addActionListener(new java.awt.event.ActionListener() {
02305 public void actionPerformed(java.awt.event.ActionEvent evt) {
02306
02307 try {
02308 if((si.getTestHighLevelApi())!=null) si.getTestHighLevelApi().responseCurve();
02309 } catch (SctTestApi.NoDataException nde) {}
02310
02311 if(sctdbAutoDownload.isSelected()) guiControl.isInterface.downloadTests(TEST_NPTGAIN);
02312 }
02313 });
02314 break;
02315 case TEST_NOISE:
02316 sctapiItems[i].addActionListener(new java.awt.event.ActionListener() {
02317 public void actionPerformed(java.awt.event.ActionEvent evt) {
02318
02319 try {
02320 if((si.getTestHighLevelApi())!=null) si.getTestHighLevelApi().noiseOccupancy();
02321 } catch (SctTestApi.NoDataException nde) {}
02322
02323 if(sctdbAutoDownload.isSelected()) guiControl.isInterface.downloadTests(TEST_NOISE);
02324 }
02325 });
02326 break;
02327 case TEST_TIMEWALK:
02328 sctapiItems[i].addActionListener(new java.awt.event.ActionListener() {
02329 public void actionPerformed(java.awt.event.ActionEvent evt) {
02330
02331 try {
02332 if((si.getTestHighLevelApi())!=null) si.getTestHighLevelApi().timeWalk();
02333 } catch (SctTestApi.NoDataException nde) {}
02334
02335 if(sctdbAutoDownload.isSelected()) guiControl.isInterface.downloadTests(TEST_TIMEWALK);
02336 }
02337 });
02338 break;
02339 default:
02340 }
02341 }
02342 return sctdaqmenu;
02343 }
02344
02345
02346
02347
02348
02349 private void getProbePanelMenu() {
02350 probePanelMenu = new JMenu("DDC Commands");
02351 probePanelMenu.setFont(menuFont);
02352 JMenuItem item1 = new JMenuItem("Hard Reset...");
02353 item1.setFont(menuFont);
02354 probePanelMenu.add(item1);
02355 item1.addActionListener(new java.awt.event.ActionListener() {
02356 public void actionPerformed(java.awt.event.ActionEvent evt) {
02357 String sn = getSelectedSerialNo();
02358 ConfigurationInterface conf = ConfigurationInterface.getInstance();
02359 String crate = conf.getSNInfo(sn,SNInfo.DCS_CRATE);
02360 String channel = conf.getSNInfo(sn,SNInfo.DCS_CHANNEL);
02361 int response = JOptionPane.showConfirmDialog(null,"Hard Reset "+sn+" (Crate "+crate+", Channel "+channel+")?","Confirm Hard Reset request",javax.swing.JOptionPane.OK_CANCEL_OPTION);
02362 if(response!=javax.swing.JOptionPane.YES_OPTION) return;
02363 try {
02364 Sct_SctApi.SctApiDDCServer api = SystemInterface.getInstance().getSctApiDDCServer();
02365 if(api!=null) api.ddcHardReset(Integer.valueOf(crate).intValue(), Integer.valueOf(channel).intValue());
02366 else javax.swing.JOptionPane.showMessageDialog(null,"null SctApi pointer");
02367 }catch(Exception e){javax.swing.JOptionPane.showMessageDialog(null,"Exception "+e.toString());}
02368
02369 }
02370 });
02371 }
02372
02373
02374 private void getDDCModuleMenu() {
02375 ddcModuleMenu = new JMenu("DDC Commands");
02376 ddcModuleMenu.setFont(menuFont);
02377 JMenuItem item1 = new JMenuItem("Hard Reset...");
02378 item1.setFont(menuFont);
02379 ddcModuleMenu.add(item1);
02380 item1.addActionListener(new java.awt.event.ActionListener() {
02381 public void actionPerformed(java.awt.event.ActionEvent evt) {
02382 String sn = getSelectedSerialNo();
02383 ConfigurationInterface conf = ConfigurationInterface.getInstance();
02384 String crate = conf.getSNInfo(sn,SNInfo.DCS_CRATE);
02385 String channel = conf.getSNInfo(sn,SNInfo.DCS_CHANNEL);
02386 int response = JOptionPane.showConfirmDialog(null,"Hard Reset "+sn+" (Crate "+crate+", Channel "+channel+")?","Confirm Hard Reset request",javax.swing.JOptionPane.OK_CANCEL_OPTION);
02387 if(response!=javax.swing.JOptionPane.YES_OPTION) return;
02388 try {
02389 Sct_SctApi.SctApiDDCServer api = SystemInterface.getInstance().getSctApiDDCServer();
02390 if(api!=null) api.ddcHardReset(Integer.valueOf(crate).intValue(), Integer.valueOf(channel).intValue());
02391 else javax.swing.JOptionPane.showMessageDialog(null,"null SctApi pointer");
02392 }catch(Exception e){javax.swing.JOptionPane.showMessageDialog(null,"Exception "+e.toString());}
02393
02394 }
02395 });
02396 item1 = new JMenuItem("LV/HV Control...");
02397 item1.setFont(menuFont);
02398 ddcModuleMenu.add(item1);
02399 item1.addActionListener(new java.awt.event.ActionListener() {
02400 public void actionPerformed(java.awt.event.ActionEvent evt) {
02401 String sn = getSelectedSerialNo();
02402 int sctView =guiControl.displayPane.getSCTView();
02403 DDCModuleSwitcher ddcModuleSwitcher = new DDCModuleSwitcher(sctView,sn);
02404 ddcModuleSwitcher.setLocationRelativeTo(guiControl);
02405 }
02406 });
02407
02408 }
02409
02410
02411 private void getTestDataMenu() {
02412 testDataMenu = new JMenu("Test Data Options");
02413 testDataMenu.setFont(menuFont);
02414
02415 JMenuItem item1 = new JMenuItem("Test Report");
02416 item1.setFont(menuFont);
02417 testDataMenu.add(item1);
02418 item1.addActionListener(new java.awt.event.ActionListener() {
02419 public void actionPerformed(java.awt.event.ActionEvent evt) {
02420
02421 TestSelection testSelection = guiControl.tablesDisplayPane.getTestSelection();
02422 if(testSelection==null) {
02423 javax.swing.JOptionPane.showMessageDialog(null,"No data selected.");
02424 return;
02425 }
02426 java.util.Map dcsMap = null;
02427 if(guiControl.tablesDisplayPane.getTestControlObjectName()!=null) dcsMap=guiControl.isInterface.getDCSMap(guiControl.tablesDisplayPane.getTestControlObjectName());
02428 SummaryReader.DCSInfo dcsInfo = (dcsMap!=null) ? (SummaryReader.DCSInfo) dcsMap.get(getSelectedSerialNo()) : null;
02429 SummaryReader.Test testResult = (SummaryReader.Test) guiControl.isInterface.getTest(testSelection.getResultObjectHeader(),getSelectedSerialNo(), dcsInfo);
02430 if(testResult!=null) SummaryReader.ReaderReportUtilities.showTestReport(getSelectedSerialNo(),testResult);
02431 else javax.swing.JOptionPane.showMessageDialog(null,"No data for this module");
02432 }
02433 });
02434 item1 = new JMenuItem("Analysis Plots");
02435 item1.setFont(menuFont);
02436 testDataMenu.add(item1);
02437 item1.addActionListener(new java.awt.event.ActionListener() {
02438 public void actionPerformed(java.awt.event.ActionEvent evt) {
02439 TestSelection testSelection = guiControl.tablesDisplayPane.getTestSelection();
02440 if(testSelection==null) {
02441 javax.swing.JOptionPane.showMessageDialog(null,"No data selected.");
02442 return;
02443 }
02444 String objectname;
02445 if((objectname = testSelection.getTestObjectHeader())!=null) {
02446 guiControl.isInterface.launchExternalViewer(objectname+getSelectedSerialNo());
02447 }
02448 }
02449 });
02450 item1 = new JMenuItem("Raw Data Plots");
02451 item1.setFont(menuFont);
02452 testDataMenu.add(item1);
02453 item1.addActionListener(new java.awt.event.ActionListener() {
02454 public void actionPerformed(java.awt.event.ActionEvent evt) {
02455 TestSelection testSelection = guiControl.tablesDisplayPane.getTestSelection();
02456 if(testSelection==null) {
02457 javax.swing.JOptionPane.showMessageDialog(null,"No data selected.");
02458 return;
02459 }
02460 java.util.Vector oVector = guiControl.isInterface.getDataObjectList(getSelectedSerialNo(), 0);
02461 if(oVector==null || oVector.size()==0) {
02462 javax.swing.JOptionPane.showMessageDialog(null,"No raw data objects available for plotting.");
02463 return;
02464 }
02465 String objectname = null;
02466 if(oVector.size()==1) objectname=(String)oVector.elementAt(0);
02467 else {
02468 guiUtilities.ChoiceDialog cd = new guiUtilities.ChoiceDialog(guiControl,"Select Raw Data object",100,16,oVector.toArray(),false);
02469 cd.pack();
02470 cd.setLocationRelativeTo(guiControl);
02471 cd.setVisible(true);
02472 Object[] objectnames = cd.getSelectedObjects();
02473 if(objectnames==null || objectnames.length!=1) return;
02474 objectname = (String)objectnames[0];
02475 }
02476 if(objectname==null) return;
02477 guiControl.isInterface.launchExternalViewer(objectname);
02478 }
02479 });
02480 item1 = new JMenuItem("Fitted Data Plots");
02481 item1.setFont(menuFont);
02482 testDataMenu.add(item1);
02483 item1.addActionListener(new java.awt.event.ActionListener() {
02484 public void actionPerformed(java.awt.event.ActionEvent evt) {
02485 TestSelection testSelection = guiControl.tablesDisplayPane.getTestSelection();
02486 if(testSelection==null) {
02487 javax.swing.JOptionPane.showMessageDialog(null,"No data selected.");
02488 return;
02489 }
02490 java.util.Vector oVector = guiControl.isInterface.getDataObjectList(getSelectedSerialNo(), 1);
02491 if(oVector==null || oVector.size()==0) {
02492 javax.swing.JOptionPane.showMessageDialog(null,"No fit data objects available for plotting.");
02493 return;
02494 }
02495 String objectname = null;
02496 if(oVector.size()==1) objectname=(String)oVector.elementAt(0);
02497 else {
02498 guiUtilities.ChoiceDialog cd = new guiUtilities.ChoiceDialog(guiControl,"Select Fit Data object",100,16,oVector.toArray(),false);
02499 cd.pack();
02500 cd.setLocationRelativeTo(guiControl);
02501 cd.setVisible(true);
02502 Object[] objectnames = cd.getSelectedObjects();
02503 if(objectnames==null || objectnames.length!=1) return;
02504 objectname = (String)objectnames[0];
02505 }
02506 if(objectname==null) return;
02507 guiControl.isInterface.launchExternalViewer(objectname);
02508
02509
02510 }
02511 });
02512 item1 = new JMenuItem("Analysis Plots (with Options)");
02513 item1.setFont(menuFont);
02514 testDataMenu.add(item1);
02515 item1.addActionListener(new java.awt.event.ActionListener() {
02516 public void actionPerformed(java.awt.event.ActionEvent evt) {
02517 TestSelection testSelection = guiControl.tablesDisplayPane.getTestSelection();
02518 if(testSelection==null) {
02519 javax.swing.JOptionPane.showMessageDialog(null,"No data selected.");
02520 return;
02521 }
02522 String objectname;
02523 if((objectname = testSelection.getTestObjectHeader())!=null) {
02524 guiControl.isInterface.launchExternalViewerWithOptions(objectname+getSelectedSerialNo());
02525 }
02526 }
02527 });
02528
02529
02530 item1 = new JMenuItem("Module Configuration");
02531 item1.setFont(menuFont);
02532 testDataMenu.add(item1);
02533 item1.addActionListener(new java.awt.event.ActionListener() {
02534 public void actionPerformed(java.awt.event.ActionEvent evt) {
02535 JFrame frame2 = new JFrame("Module Configuration");
02536 frame2.getContentPane().add(new GuiComponents.Panels.ModuleConfigurationPanel(getSelectedSerialNo()));
02537 frame2.pack();
02538 frame2.show();
02539 }
02540
02541 });
02542 item1 = new JMenuItem("Dump test result");
02543 item1.setFont(menuFont);
02544 testDataMenu.add(item1);
02545 item1.addActionListener(new java.awt.event.ActionListener() {
02546 public void actionPerformed(java.awt.event.ActionEvent evt) {
02547 TestSelection testSelection = guiControl.tablesDisplayPane.getTestSelection();
02548 if(testSelection==null) {
02549 javax.swing.JOptionPane.showMessageDialog(null,"No data selected.");
02550 return;
02551 }
02552 String resultObject=testSelection.getResultObjectHeader()+getSelectedSerialNo();
02553 if(!Sct.IS.SctNames.getISRepository().contains(resultObject)) {
02554 javax.swing.JOptionPane.showMessageDialog(null,"No result for "+getSelectedSerialNo());
02555 return;
02556 }
02557 TestSummaryIS result = new TestSummaryIS();
02558 Sct.IS.SctNames.getISRepository().getValue(resultObject, result);
02559 java.util.Vector thisData = new java.util.Vector();
02560 thisData.addElement(getSelectedSerialNo()+".txt");
02561 thisData.addElement(result.dataString);
02562 guiUtilities.RawDataViewer.getInstance().showNewData(thisData,"Result String for "+resultObject);
02563 }
02564
02565 });
02566 item1 = new JMenuItem("Full SCTDB Module Report");
02567 item1.setFont(menuFont);
02568 testDataMenu.add(item1);
02569 item1.addActionListener(new java.awt.event.ActionListener() {
02570 public void actionPerformed(java.awt.event.ActionEvent evt) {
02571 String sn = getSelectedSerialNo();
02572 ProdDatabase.ReportDownloader d = new ProdDatabase.ReportDownloader(guiUtilities.HTMLViewer.MODULESUMMARY,sn,0);
02573 if(d.isOkToStart()) d.start();
02574 }
02575
02576 });
02577 item1 = new JMenuItem("Edit/Add Module Comments...");
02578 item1.setFont(menuFont);
02579 item1.addActionListener(new java.awt.event.ActionListener() {
02580 public void actionPerformed(java.awt.event.ActionEvent evt) {
02581 showModuleCommentPrompt(getSelectedSerialNo());
02582 }
02583
02584 });
02585 testDataMenu.add(item1);
02586
02587
02588 }
02589 private void getIVScanMenu() {
02590 ivScanMenu = new JMenu("IVScan");
02591 ivScanMenu.setFont(menuFont);
02592 JMenuItem item1 = new JMenuItem("Test Report");
02593 item1.setFont(menuFont);
02594 ivScanMenu.add(item1);
02595 item1.addActionListener(new java.awt.event.ActionListener() {
02596 public void actionPerformed(java.awt.event.ActionEvent evt) {
02597
02598 IVTestSelection ivTestSelection = guiControl.tablesDisplayPane.getIVTestSelection();
02599 if(ivTestSelection==null) {
02600 javax.swing.JOptionPane.showMessageDialog(null,"No data selected.");
02601 return;
02602 }
02603 SummaryReader.Test testResult = (SummaryReader.Test) guiControl.isInterface.getTest(ivTestSelection.getResultObjectHeader(),getSelectedSerialNo(),null);
02604 if(testResult!=null) SummaryReader.ReaderReportUtilities.showIVTestReport(getSelectedSerialNo(),testResult);
02605 else javax.swing.JOptionPane.showMessageDialog(null,"No data for "+getSelectedSerialNo());
02606 }
02607 });
02608
02609 item1 = new JMenuItem("Plot IVScan");
02610 item1.setFont(menuFont);
02611 ivScanMenu.add(item1);
02612 item1.addActionListener(new java.awt.event.ActionListener() {
02613 public void actionPerformed(java.awt.event.ActionEvent evt) {
02614 plotIVScanData(guiControl.tablesDisplayPane.getSelectedSerialNo());
02615 }
02616 });
02617
02618 item1 = new JMenuItem("Dump test result");
02619 item1.setFont(menuFont);
02620 ivScanMenu.add(item1);
02621 item1.addActionListener(new java.awt.event.ActionListener() {
02622 public void actionPerformed(java.awt.event.ActionEvent evt) {
02623 IVTestSelection ivTestSelection = guiControl.tablesDisplayPane.getIVTestSelection();
02624 if(ivTestSelection==null) {
02625 javax.swing.JOptionPane.showMessageDialog(null,"No data selected.");
02626 return;
02627 }
02628 String resultObject=ivTestSelection.getResultObjectHeader()+getSelectedSerialNo();
02629 if(!Sct.IS.SctNames.getISRepository().contains(resultObject)) {
02630 javax.swing.JOptionPane.showMessageDialog(null,"No data for "+getSelectedSerialNo());
02631 return;
02632 }
02633 TestSummaryIS result = new TestSummaryIS();
02634 Sct.IS.SctNames.getISRepository().getValue(resultObject, result);
02635 java.util.Vector thisData = new java.util.Vector();
02636 thisData.addElement(getSelectedSerialNo()+".txt");
02637 thisData.addElement(result.dataString);
02638 guiUtilities.RawDataViewer.getInstance().showNewData(thisData,"Result String for "+resultObject);
02639 }
02640
02641 });
02642 item1 = new JMenuItem("Full SCTDB Module Report");
02643 item1.setFont(menuFont);
02644 ivScanMenu.add(item1);
02645 item1.addActionListener(new java.awt.event.ActionListener() {
02646 public void actionPerformed(java.awt.event.ActionEvent evt) {
02647 String sn = getSelectedSerialNo();
02648 ProdDatabase.ReportDownloader d = new ProdDatabase.ReportDownloader(guiUtilities.HTMLViewer.MODULESUMMARY,sn,0);
02649 if(d.isOkToStart()) d.start();
02650 }
02651
02652 });
02653 item1 = new JMenuItem("Edit/Add Module Comments...");
02654 item1.setFont(menuFont);
02655 item1.addActionListener(new java.awt.event.ActionListener() {
02656 public void actionPerformed(java.awt.event.ActionEvent evt) {
02657 showModuleCommentPrompt(getSelectedSerialNo());
02658 }
02659
02660 });
02661 ivScanMenu.add(item1);
02662
02663
02664 }
02665
02666 private void getSCTDBDataMenu() {
02667 sctdbDataSNMenu = new JMenu("Data Options");
02668 sctdbDataSNMenu.setFont(menuFont);
02669
02670 JMenuItem item1 = new JMenuItem("Test Report");
02671 item1.setFont(menuFont);
02672 sctdbDataSNMenu.add(item1);
02673 item1.addActionListener(new java.awt.event.ActionListener() {
02674 public void actionPerformed(java.awt.event.ActionEvent evt) {
02675 TestSelection testSelection = guiControl.tablesDisplayPane.getTestSelection();
02676 if(testSelection==null) {
02677 javax.swing.JOptionPane.showMessageDialog(null,"No data selected.");
02678 return;
02679 }
02680 String resultObject= (testSelection.isSCTDBRodDaqData()) ? testSelection.getSCTDBRodDaqObjectHeader()+getSelectedSerialNo() : testSelection.getSCTDBObjectHeader()+getSelectedSerialNo();
02681 if(!Sct.IS.SctNames.getISRepository().contains(resultObject)) {
02682 javax.swing.JOptionPane.showMessageDialog(null,"No data for "+getSelectedSerialNo());
02683 return;
02684 }
02685 SCTDB_Data result = new SCTDB_Data();
02686 Sct.IS.SctNames.getISRepository().getValue(resultObject, result);
02687 ProdDatabase.ReportDownloader d = new ProdDatabase.ReportDownloader(guiUtilities.HTMLViewer.SCTDAQTESTDATA, result.testNumber, 0);
02688 if(d.isOkToStart()) d.start();
02689 }
02690
02691 });
02692 item1 = new JMenuItem("Full Module Report");
02693 item1.setFont(menuFont);
02694 sctdbDataSNMenu.add(item1);
02695 item1.addActionListener(new java.awt.event.ActionListener() {
02696 public void actionPerformed(java.awt.event.ActionEvent evt) {
02697 String sn = getSelectedSerialNo();
02698 ProdDatabase.ReportDownloader d = new ProdDatabase.ReportDownloader(guiUtilities.HTMLViewer.MODULESUMMARY,sn,0);
02699 if(d.isOkToStart()) d.start();
02700 }
02701
02702 });
02703
02704
02705 }
02706
02707
02708 private void getTableDataSNMenu() {
02709 dataManagerSNMenu = new JMenu("Data Manager");
02710 dataManagerSNMenu.setFont(menuFont);
02711
02712 JMenuItem item = new JMenuItem("Plot Selected Data");
02713 item.setFont(menuFont);
02714 item.addActionListener(new java.awt.event.ActionListener() {
02715 public void actionPerformed(java.awt.event.ActionEvent evt) {
02716 switch(guiControl.displayStatus.getStatus()) {
02717 case DisplayStatus.IS_MONITOR:
02718 String objectname;
02719 if((objectname = guiControl.tablesDisplayPane.getSelectedObject())!=null) guiControl.isInterface.launchExternalViewer(objectname);
02720 else javax.swing.JOptionPane.showMessageDialog(null,"No plot data available.");
02721 break;
02722 default:
02723 }
02724 }
02725 });
02726 dataManagerSNMenu.add(item);
02727
02728 item = new JMenuItem("Plot Selected Data (with Options)");
02729 item.setFont(menuFont);
02730 item.addActionListener(new java.awt.event.ActionListener() {
02731 public void actionPerformed(java.awt.event.ActionEvent evt) {
02732 switch(guiControl.displayStatus.getStatus()) {
02733 case DisplayStatus.IS_MONITOR:
02734 String objectname;
02735 if((objectname = guiControl.tablesDisplayPane.getSelectedObject())!=null) guiControl.isInterface.launchExternalViewerWithOptions(objectname);
02736 else javax.swing.JOptionPane.showMessageDialog(null,"No plot data available.");
02737 break;
02738 default:
02739 }
02740 }
02741 });
02742 dataManagerSNMenu.add(item);
02743
02744
02745
02746 item = new JMenuItem("View Selected IS Object");
02747 item.setFont(menuFont);
02748 item.addActionListener(new java.awt.event.ActionListener() {
02749 public void actionPerformed(java.awt.event.ActionEvent evt) {
02750 switch(guiControl.displayStatus.getStatus()) {
02751 case DisplayStatus.IS_MONITOR:
02752 String objectname;
02753 if((objectname = guiControl.tablesDisplayPane.getSelectedObject())!=null) guiControl.isInterface.viewISData(objectname);
02754 else javax.swing.JOptionPane.showMessageDialog(null,"No data available.");
02755 break;
02756 default:
02757 }
02758 }
02759 });
02760
02761 dataManagerSNMenu.add(item);
02762 item = new JMenuItem("View Module Configuration");
02763 item.setFont(menuFont);
02764 item.addActionListener(new java.awt.event.ActionListener() {
02765 public void actionPerformed(java.awt.event.ActionEvent evt) {
02766 JFrame frame2 = new JFrame("Module Configuration");
02767 frame2.getContentPane().add(new GuiComponents.Panels.ModuleConfigurationPanel(getSelectedSerialNo()));
02768 frame2.pack();
02769 frame2.show();
02770 }
02771
02772 });
02773 dataManagerSNMenu.add(item);
02774
02775 item = new JMenuItem("Edit/Add Module Comments...");
02776 item.setFont(menuFont);
02777 item.addActionListener(new java.awt.event.ActionListener() {
02778 public void actionPerformed(java.awt.event.ActionEvent evt) {
02779 showModuleCommentPrompt(getSelectedSerialNo());
02780 }
02781
02782 });
02783
02784 dataManagerSNMenu.add(item);
02785 }
02786
02787 private JMenu getDisplayMenu() {
02788 JMenu menu = new JMenu("Display");
02789 menu.setBackground(backgroundColor);
02790 menu.setFont(menuFont);
02791 menu.setForeground(menuColor);
02792
02793 JMenuItem item;
02794 for(int i=1;i<DisplayStatus.statusNames.length;i++) {
02795 item = new JMenuItem(DisplayStatus.statusNames[i]);
02796 item.setFont(menuFont);
02797 switch(i) {
02798 case DisplayStatus.MODULE_GROUP_SELECTION:
02799 item.addActionListener(new java.awt.event.ActionListener() {
02800 public void actionPerformed(java.awt.event.ActionEvent evt) {
02801 guiControl.displayStatus.setModuleGroupSelectionMode();
02802 updateToolBar(DisplayStatus.MODULE_GROUP_SELECTION);
02803 }
02804 });
02805 break;
02806 case DisplayStatus.IS_MONITOR:
02807 item.addActionListener(new java.awt.event.ActionListener() {
02808 public void actionPerformed(java.awt.event.ActionEvent evt) {
02809 guiControl.displayStatus.setISMode();
02810 updateToolBar(DisplayStatus.IS_MONITOR);
02811 }
02812 });
02813 break;
02814 case DisplayStatus.TEST_DATA:
02815 item.addActionListener(new java.awt.event.ActionListener() {
02816 public void actionPerformed(java.awt.event.ActionEvent evt) {
02817 guiControl.displayStatus.setTestDataMode(-1);
02818 updateToolBar(DisplayStatus.TEST_DATA);
02819 }
02820 });
02821 break;
02822 case DisplayStatus.SCTDB_DATA:
02823 item.addActionListener(new java.awt.event.ActionListener() {
02824 public void actionPerformed(java.awt.event.ActionEvent evt) {
02825 guiControl.displayStatus.setSCTDBDataMode(-1);
02826 updateToolBar(DisplayStatus.SCTDB_DATA);
02827 }
02828 });
02829 break;
02830 case DisplayStatus.DCS_DATA:
02831 item.addActionListener(new java.awt.event.ActionListener() {
02832 public void actionPerformed(java.awt.event.ActionEvent evt) {
02833 guiControl.displayStatus.setDCSDataMode();
02834 updateToolBar(DisplayStatus.DCS_DATA);
02835 }
02836 });
02837 break;
02838 case DisplayStatus.SCTDB_RODDAQ_DATA:
02839 item.addActionListener(new java.awt.event.ActionListener() {
02840 public void actionPerformed(java.awt.event.ActionEvent evt) {
02841 guiControl.displayStatus.setSCTDBRodDaqMode(-1);
02842 updateToolBar(DisplayStatus.SCTDB_RODDAQ_DATA);
02843 }
02844 });
02845 break;
02846 case DisplayStatus.IV_DATA:
02847 item.addActionListener(new java.awt.event.ActionListener() {
02848 public void actionPerformed(java.awt.event.ActionEvent evt) {
02849 String ivdirectory = PreferencesInterface.getInstance().getPreference(PreferencesInterface.IV_DIRECTORY);
02850 if(ivdirectory.equals(PreferencesInterface.unDefinedString)) javax.swing.JOptionPane.showMessageDialog(null,"You have not defined the IV data directory. You need to do this before importing IV scan data.");
02851 guiControl.displayStatus.setIVDataMode();
02852 updateToolBar(DisplayStatus.IV_DATA);
02853 }
02854 });
02855 break;
02856 case DisplayStatus.PROBE_DATA:
02857 item.addActionListener(new java.awt.event.ActionListener() {
02858 public void actionPerformed(java.awt.event.ActionEvent evt) {
02859 guiControl.displayStatus.setProbeDataMode();
02860 updateToolBar(DisplayStatus.PROBE_DATA);
02861 }
02862 });
02863 break;
02864 default:
02865 }
02866 menu.add(item);
02867
02868 }
02869 return menu;
02870 }
02871
02872 private void plotIVScanData(String serialNo) {
02873 IVTestSelection ivTestSelection = guiControl.tablesDisplayPane.getIVTestSelection();
02874 if(ivTestSelection==null) {
02875 javax.swing.JOptionPane.showMessageDialog(null,"No IV Scan selected.");
02876 return;
02877 }
02878 String summary = "IV Scan Plots for Run "+Integer.toString(ivTestSelection.getRunNo())+", Scan "+Integer.toString(ivTestSelection.getScanNo());
02879 DisplayGUI.plotters.IVScansData ivScansData = new DisplayGUI.plotters.IVScansData(summary);
02880 for(java.util.Enumeration e = ConfigurationInterface.getInstance().getSerialNumberMap(guiControl.displayPane.getSCTView()).elements(); e.hasMoreElements();) {
02881 ModuleCell thisCell = (ModuleCell) e.nextElement();
02882 String sn = thisCell.getSerialNo();
02883 SummaryReader.IVData ivData = guiControl.isInterface.getIVData(ivTestSelection.getResultObjectHeader(),thisCell.getSerialNo());
02884 if(ivData!=null) ivScansData.add(sn,ivData.getDataPointSet());
02885 }
02886 DisplayGUI.plotters.IVPlotDisplay ivPlotDisplay = new DisplayGUI.plotters.IVPlotDisplay();
02887 ivPlotDisplay.showData(ivScansData,serialNo);
02888 }
02889 private void showModuleCommentPrompt(String serialNo) {
02890 if(moduleCommentPrompt==null) moduleCommentPrompt=new ModuleCommentPrompt(serialNo);
02891 else moduleCommentPrompt.update(serialNo);
02892 }
02893
02894 private java.util.Vector checkBOCRxThresholds(int shift) {
02895 TestSelection testSelection = guiControl.tablesDisplayPane.getTestSelection();
02896 int testIndex = (testSelection!=null) ? testSelection.getTestIndex() : -1;
02897 if(testIndex==-1) {
02898 javax.swing.JOptionPane.showMessageDialog(null,"No test is currently selected.");
02899 return null;
02900 }
02901
02902
02903 RxThresholdData rxFileData = RxThresholdData.getInstance();
02904 rxFileData.refresh();
02905 if(rxFileData.getErrorString()!=null) {
02906 javax.swing.JOptionPane.showMessageDialog(null,rxFileData.getErrorString());
02907 return null;
02908 }
02909 java.util.Vector theTable = new java.util.Vector();
02910 java.util.Vector theLine = new java.util.Vector();
02911 theLine.addElement("Serial No");
02912 theLine.addElement("Stream");
02913 theLine.addElement("MUR");
02914 theLine.addElement("Module ID");
02915 theLine.addElement("Optimal RxThr");
02916 theLine.addElement("File Value");
02917 theLine.addElement("Shift");
02918 theTable.addElement(theLine);
02919
02920
02921 java.util.Set moduleList = guiControl.config.getSortedVector(guiControl.displayPane.getSCTView());
02922 for (java.util.Iterator i = moduleList.iterator(); i.hasNext(); ) {
02923
02924 String sn=(String)i.next();
02925 for(int stream=0;stream<2;stream++) {
02926 theLine = new java.util.Vector();
02927 theLine.addElement(sn);
02928 theLine.addElement(new Integer(stream));
02929 theLine.addElement(rxFileData.getMurID(sn));
02930 theLine.addElement(rxFileData.getModuleID(sn));
02931 String resultObjectHeader = testSelection.getResultObjectHeader();
02932 SummaryReader.Test testResult = guiControl.isInterface.getTest(resultObjectHeader,sn,null);
02933 Double rxData = testResult.getLinkInfo().get(stream,2);
02934 int rxDataInt = (int)rxData.doubleValue();
02935 theLine.addElement(Integer.toString(rxDataInt));
02936 String fileData = rxFileData.getStreamFileData(sn,stream);
02937 if(fileData==null)continue;
02938 theLine.addElement(fileData);
02939 Integer fileDataInteger = guiUtilities.DaveUtils.getIntFromHex(fileData);
02940 if(fileDataInteger==null) continue;
02941 int diff = (rxDataInt==-1) ? -1 : rxDataInt - fileDataInteger.intValue();
02942 if(Math.abs(diff)<=shift) continue;
02943 theLine.addElement(new Integer(diff));
02944
02945 theTable.addElement(theLine);
02946 }
02947 }
02948 return theTable;
02949 }
02950
02951
02952
02953
02954
02955
02956
02957 private void makeComparisonReport(boolean isSCTDAQ) {
02958 Object[] runList=null;
02959 TestSelection testSelection = guiControl.tablesDisplayPane.getTestSelection();
02960 int testIndex = (testSelection!=null) ? testSelection.getTestIndex() : -1;
02961 if(testIndex==-1) {
02962 javax.swing.JOptionPane.showMessageDialog(null,"No test is currently selected.");
02963 return;
02964 }
02965 if(!testIsSCTDAQ[testIndex]) {
02966 javax.swing.JOptionPane.showMessageDialog(null,testNames[testIndex]+" is not a SCTDAQ test - no reference comparison is possible.");
02967 return;
02968 }
02969 java.util.Vector sctdbObjectHeaderList = new java.util.Vector();
02970 if(isSCTDAQ) sctdbObjectHeaderList.addElement(testSelection.getSCTDBObjectHeader());
02971 else {
02972 java.util.Vector vTest = new java.util.Vector();
02973 String[] objectList = guiControl.isInterface.getDBISObjects(testIndex);
02974
02975 if(objectList.length==0) {
02976 javax.swing.JOptionPane.showMessageDialog(null,"There is no "+testNames[testIndex]+" SctRodDaq reference data yet downloaded\nPlease download data from the Options menu or via the SctRodDaq Reference display.");
02977 return;
02978 }
02979 guiUtilities.ChoiceDialog rnd = new guiUtilities.ChoiceDialog(guiControl,"Choose Reference Data",90,16,objectList,true);
02980 rnd.pack();
02981 rnd.setLocationRelativeTo(guiControl);
02982 rnd.setVisible(true);
02983 runList = rnd.getSelectedObjects();
02984 if(runList==null || runList.length==0) return;
02985
02986 for(int k=0;k<runList.length;k++) {
02987 String sctdbObject = (String)runList[k];
02988
02989 java.util.regex.Matcher matcher = ISInterface.SctRodDaqRefPattern.matcher(sctdbObject);
02990 if(matcher.matches()) {
02991
02992 TestSelection thisSel = new TestSelection(sctdbObject,sctdbObject.substring(matcher.start(ISInterface.LOCATION),matcher.end(ISInterface.LOCATION)));
02993
02994 sctdbObjectHeaderList.addElement(thisSel.getSCTDBRodDaqObjectHeader());
02995 }
02996 }
02997 }
02998
02999 String header = testSelection.getResultObjectHeader();
03000
03001 java.util.Vector theTable = new java.util.Vector();
03002 java.util.Vector theLine = new java.util.Vector();
03003 theLine.addElement("Serial No");
03004 theLine.addElement("Parameter");
03005 theLine.addElement("Tolerance");
03006 theLine.addElement("SctRodDaq Data");
03007 theLine.addElement("Reference Data");
03008 theLine.addElement("Comments");
03009 theTable.addElement(theLine);
03010
03011 String resultObjectHeader = testSelection.getResultObjectHeader();
03012 java.util.regex.Pattern defectPattern = java.util.regex.Pattern.compile("^[^-]+-(.*)");
03013 java.util.regex.Matcher matcher;
03014
03015
03016
03017
03018 java.util.Set moduleList = guiControl.config.getSortedVector(guiControl.displayPane.getSCTView());
03019 for (java.util.Iterator i = moduleList.iterator(); i.hasNext(); ) {
03020
03021 String sn=(String)i.next();
03022 ModuleConfiguration mConfig=null;
03023 try {
03024 Sct_SctApi.SctApiIPC api = SystemInterface.getInstance().getSctApi();
03025 if (api != null) {
03026 int mid = api.findModuleSerial(sn);
03027 ABCDModule data = api.retrieveModule(mid);
03028 mConfig = new ModuleConfiguration(data);
03029 }
03030 }catch(Exception e2){System.err.println("SctGUI: Cannot access module config for module "+sn);}
03031
03032 SummaryReader.Test newTestResult = guiControl.isInterface.getTest(resultObjectHeader,sn,null);
03033 if(newTestResult==null) continue;
03034 SummaryReader.Test refTestResult = null;
03035 HEADERLOOP:
03036 for(int j=0;j<sctdbObjectHeaderList.size();j++) {
03037 String sctdbObject = (String)sctdbObjectHeaderList.elementAt(j)+sn;
03038
03039 if(SctNames.getISRepository().contains(sctdbObject)) {
03040 refTestResult = guiControl.isInterface.getSCTDBTest(sctdbObject);
03041 break HEADERLOOP;
03042 }
03043 }
03044
03045
03046 if(refTestResult==null) {
03047 theLine = new java.util.Vector();
03048 theLine.addElement(sn);
03049 theLine.addElement("n/a");
03050 theLine.addElement("n/a");
03051 theLine.addElement("n/a");
03052 theLine.addElement("NO DATA");
03053 theLine.addElement("Please download reference data");
03054 theTable.addElement(theLine);
03055 continue;
03056 }
03057
03058
03059
03060 java.util.Map refDefectKeys = new java.util.HashMap();
03061 for(int k=0;k<refTestResult.getNoDefects();k++) {
03062 SummaryReader.DefectInfo defectInfo = refTestResult.getDefectInfo(k);
03063 String defectKey = defectInfo.getDefectKey();
03064 matcher = defectPattern.matcher(defectKey);
03065 String chans = matcher.matches() ? defectKey.substring(matcher.start(1),matcher.end(1)) : defectKey;
03066 refDefectKeys.put(chans,defectInfo.getName());
03067
03068 }
03069 for(int k=0;k<newTestResult.getNoDefects();k++) {
03070 SummaryReader.DefectInfo defectInfo = newTestResult.getDefectInfo(k);
03071 String newKey = defectInfo.getDefectKey();
03072 matcher = defectPattern.matcher(newKey);
03073 String chans = matcher.matches() ? newKey.substring(matcher.start(1),matcher.end(1)) : newKey;
03074 String newName = defectInfo.getName();
03075
03076 if(refDefectKeys.containsKey(chans)) {
03077
03078 String name = (String)refDefectKeys.get(chans);
03079 if(name.equals(newName)) continue;
03080
03081 theLine = new java.util.Vector();
03082 theLine.addElement(sn);
03083 theLine.addElement("Defects");
03084 theLine.addElement("Zero");
03085 theLine.addElement(chans+" ("+newName+")");
03086 theLine.addElement(chans+" ("+name+")");
03087 theLine.addElement("Different defect type");
03088 theTable.addElement(theLine);
03089 continue;
03090 }
03091 theLine = new java.util.Vector();
03092 theLine.addElement(sn);
03093 theLine.addElement("Defects");
03094 theLine.addElement("Zero");
03095 theLine.addElement(chans+" ("+newName+")");
03096 theLine.addElement("Not Present");
03097 theLine.addElement("NEW DEFECT");
03098 theTable.addElement(theLine);
03099 }
03100
03101 java.util.Map newDefectKeys = new java.util.HashMap();
03102 for(int k=0;k<newTestResult.getNoDefects();k++) {
03103 SummaryReader.DefectInfo defectInfo = newTestResult.getDefectInfo(k);
03104 String defectKey = defectInfo.getDefectKey();
03105 matcher = defectPattern.matcher(defectKey);
03106 String chans = matcher.matches() ? defectKey.substring(matcher.start(1),matcher.end(1)) : defectKey;
03107 newDefectKeys.put(chans,defectInfo.getName());
03108 }
03109 for(int k=0;k<refTestResult.getNoDefects();k++) {
03110 SummaryReader.DefectInfo defectInfo = refTestResult.getDefectInfo(k);
03111 String refKey = defectInfo.getDefectKey();
03112 matcher = defectPattern.matcher(refKey);
03113 String chans = matcher.matches() ? refKey.substring(matcher.start(1),matcher.end(1)) : refKey;
03114 String refName = defectInfo.getName();
03115 if(!newDefectKeys.containsKey(chans)) {
03116 theLine = new java.util.Vector();
03117 theLine.addElement(sn);
03118 theLine.addElement("Defects");
03119 theLine.addElement("Zero");
03120 theLine.addElement("Not Present");
03121 theLine.addElement(chans+" ("+refName+")");
03122 theLine.addElement("Old defect no longer present");
03123 theTable.addElement(theLine);
03124 }
03125 }
03126
03127 PARAMLOOP:
03128 for(int parameterIndex=0;parameterIndex<testParameters[testIndex].length;parameterIndex++) {
03129 if(!testIsDefined[testIndex]) continue;
03130 if(!doComparisons[testIndex][parameterIndex]) continue;
03131 for(int k=4;k<chipOptions.length;k++) {
03132 Double newData = newTestResult.getLastDataBlock().get(k,parameterIndex-parameterOffset);
03133 Double refData = (refTestResult!=null) ? refTestResult.getLastDataBlock().get(k,parameterIndex-parameterOffset) : null;
03134 if(refData==null) {
03135 theLine = new java.util.Vector();
03136 theLine.addElement(sn);
03137 theLine.addElement(testParameters[testIndex][parameterIndex]);
03138 theLine.addElement(Double.toString(testDataTolerances[testIndex][parameterIndex]));
03139 theLine.addElement(newData.toString());
03140 theLine.addElement("NO DATA");
03141 theLine.addElement("Please download reference data!");
03142 theTable.addElement(theLine);
03143 break PARAMLOOP;
03144 }
03145 double referenceData = refData.doubleValue();
03146 if(isSCTDAQ) {
03147 try {
03148
03149 switch(testIndex) {
03150 case TEST_3PTGAIN:
03151 case TEST_NPTGAIN:
03152 if(mConfig!=null) {
03153 double cfactor = (double)mConfig.getChipConfiguration(k-4).getCalFactor();
03154 if(parameterIndex==11) referenceData *= cfactor;
03155 else if(parameterIndex==6) referenceData /= cfactor;
03156 }
03157 break;
03158 case TEST_NOISE:
03159 if(mConfig!=null && parameterIndex==7) {
03160 double cfactor = (double)mConfig.getChipConfiguration(k-4).getCalFactor();
03161 referenceData *= cfactor;
03162 }
03163 break;
03164 default:
03165 }
03166 }catch(Exception e3){System.err.println("Exception retrieving cfactor for chip "+Integer.toString(k-4)+", module "+sn);}
03167 }
03168
03169
03170 double diff = newData.doubleValue()-referenceData;
03171 if(Math.abs(diff)>testDataTolerances[testIndex][parameterIndex]) {
03172 theLine = new java.util.Vector();
03173 theLine.addElement(sn);
03174 theLine.addElement(testParameters[testIndex][parameterIndex]);
03175 theLine.addElement(Double.toString(testDataTolerances[testIndex][parameterIndex]));
03176 theLine.addElement(newData.toString());
03177 theLine.addElement(refData.toString());
03178 String label = (diff>0.) ? "too high" : "too Low";
03179 theLine.addElement(chipOptions[k]+" data "+label);
03180 theTable.addElement(theLine);
03181 }
03182 }
03183 }
03184 }
03185 if(theTable.size()==1) {
03186 StringBuffer b = new StringBuffer("SctRodDaq in good agreement with SCTDAQ Reference Data");
03187 b.append("\nfor "+testNames[testSelection.getTestIndex()]+" Run "+Integer.toString(testSelection.getRunNo())+" Scan "+Integer.toString(testSelection.getScanNo()));
03188 b.append("\nParameters compared:");
03189 for(int parameterIndex=0;parameterIndex<testParameters[testIndex].length;parameterIndex++) {
03190 if(testIsDefined[testIndex] && doComparisons[testIndex][parameterIndex]) b.append("\n"+testParameters[testIndex][parameterIndex]);
03191 }
03192 javax.swing.JOptionPane.showMessageDialog(null,b.toString());
03193 return;
03194 }
03195 String param = "None";
03196 if(isSCTDAQ) param = "SctRodDaq/SCTDAQ Discrepancy List for "+testNames[testSelection.getTestIndex()]+" Run "+Integer.toString(testSelection.getRunNo())+" Scan "+Integer.toString(testSelection.getScanNo());
03197 else {
03198 StringBuffer dText = new StringBuffer();
03199 for(int k=0;k<runList.length;k++) {
03200 String ob = (String)runList[k];
03201 matcher = ISInterface.SctRodDaqRefPattern.matcher(ob);
03202 if(matcher.matches()) {
03203 if(k<0) dText.append(" and Run/Scan ");
03204 else dText.append(",");
03205 dText.append(ob.substring(matcher.start(ISInterface.RUNNO),matcher.end(ISInterface.RUNNO))+"/"+ob.substring(matcher.start(ISInterface.SCANNO),matcher.end(ISInterface.SCANNO)));
03206 }
03207 }
03208 param =testNames[testSelection.getTestIndex()]+" Comparison between new data (Run/Scan "+Integer.toString(testSelection.getRunNo())+"/"+Integer.toString(testSelection.getScanNo())+") and "+dText.toString();
03209 }
03210 guiUtilities.SpreadsheetViewer.getInstance().update(param,theTable);
03211 }
03212
03213
03214 }
03215