Main Page | Packages | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

GuiMenuBar2.java

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 //    private String[] displayOptionNames={"ModuleGroup Selection","Data Manager","Test Results","SCTDAQ Reference","SctRodDaq Reference","DCS Info"};
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 //    private JMenuItem[] displayOptions = new JMenuItem[DisplayStatus.statusNames.length-1];
00048 //     private JMenuItem ccPingItem, ccNMaskItem, ccStrobeDelayItem, ccThreePointGainItem, ccTrimItem, ccResponseCurveItem, ccNoiseItem, ccFullBypassItem, ccPipelineItem, ccTimeWalkItem;
00049  //    private JMenuItem ccCharacterisationItem;
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 //    private JCheckBox dcsEnabled = new JCheckBox("Enable DCS Monitoring");
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 //                                e.getWindow().dispose();
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 // Display menu
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 // display menu for right mouse clicks on main display panel
00220        panelDisplayMenu = getDisplayMenu();
00221        panelDisplayMenu.setText("Select Display");
00222 
00223 // All tests
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 // Options menu
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 // Tools menu
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        /*scriptJavaScriptItem = new JMenuItem("JavaScript");
00316        scriptJavaScriptItem.setFont(menuFont);
00317        scriptJavaScriptItem.addActionListener(this);
00318        menu2.add(scriptJavaScriptItem);*/
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 // Help menu
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 // Preferences menu
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 // Scripting
00510         if(source==scriptBeanShellItem) {
00511             addNewConsole(ScriptingInterface.instance().getBeanShellInterpreter(), "BeanShell");
00512             return;
00513         }        
00514         /*if(source==scriptJavaScriptItem) {
00515             addNewConsole(ScriptingInterface.instance().getJavaScriptInterpreter(), "JavaScript");
00516             return;
00517             }*/
00518         if(source==scriptJythonItem) {
00519             addNewConsole(ScriptingInterface.instance().getJythonInterpreter(), "Jython");
00520             return;
00521             }
00522 // Tools
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 // popup menus for tables
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 //              pMenu.setInvoker(tableDataOptionMenu);
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 //           pMenu = testMenu.getPopupMenu();
00687            pMenu = newMenu.getPopupMenu();
00688            pMenu.show(e.getComponent(),e.getX(),e.getY());
00689 //           pMenu.setInvoker(testMenu);
00690            pMenu.setInvoker(newMenu);
00691            break;  
00692         case DisplayStatus.TEST_DATA:
00693            newMenu.add(panelDisplayMenu);
00694            newMenu.add(panelTestMenu);
00695            newMenu.add(panelTestDataOptionMenu);
00696            // special options for RxThreshold---------------
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 //       if(displayStatus==DisplayStatus.DCS_DATA && guiControl.tablesDisplayPane.getTestControlObjectName()!=null) dcsMap=guiControl.isInterface.getDCSMap(guiControl.tablesDisplayPane.getTestControlObjectName());
00854                  if(guiControl.tablesDisplayPane.getTestControlObjectName()!=null) dcsMap=guiControl.isInterface.getDCSMap(guiControl.tablesDisplayPane.getTestControlObjectName());
00855 
00856 // enumerate through all modules
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 //       thisMenu.setBackground(backgroundColor);
01372        thisMenu.setFont(menuFont);
01373 //       thisMenu.setForeground(menuColor);
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 //       thisMenu.setBackground(backgroundColor);
01403        thisMenu.setFont(menuFont);
01404 //       thisMenu.setForeground(menuColor);
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 //                      guiControl.isInterface.setTestFilter(guiControl.tablesDisplayPane.getTestControlObjectName());
01431                       guiControl.selectorPane.initParamList(); // maybe require change of parameter menu
01432                       guiControl.colorScalePane.setColorScale(); // ditto for color scale
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 //       thisMenu.setBackground(backgroundColor);
01450        thisMenu.setFont(menuFont);
01451 //       thisMenu.setForeground(menuColor);
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 //*************************************************************************************************8
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 //                       System.out.println("abort of CC not yet implemented");
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            // ccUpdateModes[i].setEnabled(false);   
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) {   // why is this necessary????
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 //*************************************************************************************************8
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        /*       menuItem = new JMenuItem("RX Threshold (Old Clk/2)");
01876        menuItem.setFont(menuFont);
01877        menuItem.addActionListener(new java.awt.event.ActionListener() {
01878                public void actionPerformed(java.awt.event.ActionEvent evt) {
01879                    //Sct_CalibrationController.ScanRequest request = si.getCalibrationController().getScanLibrary().rawScan(10);
01880                    //request.getScan().configure((short)50, 0., 200., 5.);
01881                    //si.getCalibrationController().doScan( request );
01882                    menuDoTest(si.getCalibrationController().getTestLibrary().getTestRequestByName("RxThreshold")  );
01883                }
01884            });
01885            bocTestsMenu.add(menuItem); */
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                    //Sct_CalibrationController.ScanRequest request = si.getCalibrationController().getScanLibrary().rawScan(10);
01901                    //request.getScan().configure((short)20, 0., 24., 1.);
01902                    //si.getCalibrationController().doScan( request );
01903                    menuDoTest(menuGetTestByName("RxDelay")  );
01904                }
01905            });
01906        bocTestsMenu.add(menuItem);
01907 
01908        /*menuItem = new JMenuItem("TX Current (old, no analysis)");
01909        menuItem.setFont(menuFont);
01910        menuItem.addActionListener(new java.awt.event.ActionListener() {
01911                public void actionPerformed(java.awt.event.ActionEvent evt) {
01912                    Sct_CalibrationController.ScanRequest request = si.getCalibrationController().getScanLibrary().rawScan(10,false);
01913                    request.getScanCorba().configure((short)53, 60., 200., 10.);
01914                    si.getCalibrationController().doScan( request );
01915                }
01916            });
01917            bocTestsMenu.add(menuItem);*/
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 //                    guiControl.displayStatus.setTestDataMode(-1); 
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  //                    guiControl.displayStatus.setTestDataMode(-1); 
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  //                    guiControl.displayStatus.setTestDataMode(-1); 
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  //                    guiControl.displayStatus.setTestDataMode(-1); 
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  //                    guiControl.displayStatus.setTestDataMode(-1); 
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  //                    guiControl.displayStatus.setTestDataMode(-1); 
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  //                    guiControl.displayStatus.setTestDataMode(-1); 
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  //                    guiControl.displayStatus.setTestDataMode(-1); 
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  //                    guiControl.displayStatus.setTestDataMode(-1); 
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  //                    guiControl.displayStatus.setTestDataMode(-1); 
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  //                    guiControl.displayStatus.setTestDataMode(-1); 
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  //                    guiControl.displayStatus.setTestDataMode(-1); 
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        // Quick tests menu
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        //thisMenu.addSeparator();
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        //System.out.println("Rebuilding auto tests menu...");
02174       if(autoTestsMenu[mIndex].getItemCount()>1) return;  // already done
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       //System.out.println("Auto Tests Menu has "+autoTestsMenu.getItemCount()+" items");
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                      //There is no ping method atm
02231                      //System.out.println(si.getTestApi().ping(""));
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 //                   System.out.println("Start full bypass test via sct_api_server");   
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 //                    guiControl.displayStatus.setTestDataMode(-1);
02259                     try {
02260                         if((si.getTestHighLevelApi())!=null) si.getTestHighLevelApi().pipeline();
02261                     } catch (SctTestApi.NoDataException nde) {}
02262 //                   System.out.println("Start pipeline test via sct_api_server");   
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 //                    guiControl.displayStatus.setTestDataMode(-1); 
02271                     try {
02272                         if((si.getTestHighLevelApi())!=null) si.getTestHighLevelApi().strobeDelay();
02273                     } catch (SctTestApi.NoDataException nde) {}
02274 //                    System.out.println("Start strobe delay test via sct_api_server");
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 //                    guiControl.displayStatus.setTestDataMode(-1); 
02283                     try {
02284                         if((si.getTestHighLevelApi())!=null) si.getTestHighLevelApi().threePointGain();
02285                     } catch (SctTestApi.NoDataException nde) {}
02286 //                    System.out.println("Start 3PtGain test via sct_api_server");
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 //                    guiControl.displayStatus.setTestDataMode(-1); 
02295                     try {
02296                         if((si.getTestHighLevelApi())!=null) si.getTestHighLevelApi().trim();
02297                     } catch (SctTestApi.NoDataException nde) {}
02298                    //System.out.println("Start Trim Range test via sct_api_server");
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 //                    guiControl.displayStatus.setTestDataMode(-1); 
02307                     try {
02308                         if((si.getTestHighLevelApi())!=null) si.getTestHighLevelApi().responseCurve();
02309                     } catch (SctTestApi.NoDataException nde) {}
02310                    //System.out.println("Start NPtGain test via sct_api_server");
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 //                    guiControl.displayStatus.setTestDataMode(-1); 
02319                     try {
02320                         if((si.getTestHighLevelApi())!=null) si.getTestHighLevelApi().noiseOccupancy();
02321                     } catch (SctTestApi.NoDataException nde) {}
02322                    //System.out.println("Start Noise test via sct_api_server");
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 //                    guiControl.displayStatus.setTestDataMode(-1); 
02331                     try {
02332                         if((si.getTestHighLevelApi())!=null) si.getTestHighLevelApi().timeWalk();
02333                     } catch (SctTestApi.NoDataException nde) {}
02334                    //System.out.println("Start TimeWalk test via sct_api_server");
02335                    if(sctdbAutoDownload.isSelected()) guiControl.isInterface.downloadTests(TEST_TIMEWALK);
02336                    }
02337               });
02338              break;
02339              default:
02340              }
02341          }
02342     return sctdaqmenu;
02343     }
02344 
02345 //   public boolean dcsIsEnabled() {
02346 //      return dcsEnabled.isSelected();
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 //                System.out.println("Selected "+popupCell.getSerialNo());
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 //                System.out.println("Selected "+popupCell.getSerialNo());
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:  // ModuleGroup 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:  // Data Manager
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:   // Test Results
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:    // 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:    // 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:    // SctRodDaq Archive 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:    // SctRodDaq Archive 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:    // SctRodDaq Archive 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");    // string
02912                   theLine.addElement("Stream");       // Integer
02913                   theLine.addElement("MUR");          // String
02914                   theLine.addElement("Module ID");    // String
02915                   theLine.addElement("Optimal RxThr");// String
02916                   theLine.addElement("File Value");   // String
02917                   theLine.addElement("Shift");        // Integer
02918                   theTable.addElement(theLine);
02919 
02920 // enumerate through all modules
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);  // link 0, 2 is Best Rx Threshold
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); // fileData might be an integer or in hex
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                          //System.out.println("adding ref "+sctdbObject);
02989                          java.util.regex.Matcher matcher = ISInterface.SctRodDaqRefPattern.matcher(sctdbObject);
02990                          if(matcher.matches()) {
02991                          // control object name, followed by institute name
02992                             TestSelection thisSel = new TestSelection(sctdbObject,sctdbObject.substring(matcher.start(ISInterface.LOCATION),matcher.end(ISInterface.LOCATION)));
02993                             //System.out.println("adding "+thisSel.getSCTDBRodDaqObjectHeader());
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 // enumerate through all modules
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 //                  refTestResult = guiControl.isInterface.getSCTDBTest(sctdbObjectHeader+sn);
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                     // first look for defects
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                 //       System.out.println(sn+" ref defect: "+defectInfo.getDefectKey()+" with name "+defectInfo.getName());
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                 //      System.out.println(sn+" new defect "+newKey+" with name "+newName);
03076                       if(refDefectKeys.containsKey(chans)) {
03077                 //        System.out.println("**matches refdata");
03078                         String name = (String)refDefectKeys.get(chans);
03079                         if(name.equals(newName)) continue;
03080                 //      System.out.println("** with different name");
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                         // apply cfactor corrections if appropriate, as sctdaq was taken with cfactor=1.0
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                        } // loop on chip
03183                     } // loop on parameterIndex
03184                   } // loop on moduleList
03185                   if(theTable.size()==1) { // titles only!
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 

Generated on Fri Sep 16 18:05:56 2005 for SCT DAQ/DCS Software - Java by doxygen 1.3.5