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

TablesDisplayPane.java

00001 /*
00002  * TablesDisplayPane.java
00003  *
00004  * Created on 23 June 2003, 15:43
00005  */
00006 
00007 package DisplayGUI;
00008 import javax.swing.JTable;
00009 import javax.swing.event.*;
00010 import javax.swing.ListSelectionModel;
00011 import javax.swing.table.TableModel;
00012 import java.awt.event.KeyListener;
00013 import java.awt.event.KeyEvent;
00014 import javax.swing.event.ListSelectionListener;
00015 import javax.swing.event.ListSelectionEvent;
00016 import javax.swing.JOptionPane;
00017 import java.util.Vector;
00018 import java.util.Hashtable;
00019 import java.util.Collections;
00020 import Sct_CalibrationController.TestData;
00021 import GuiComponents.System.*;
00026 public class TablesDisplayPane extends javax.swing.JPanel implements TestDataInfo,TableModelListener,ListSelectionListener,displayParams {
00027     gui guiControl;
00028     public javax.swing.JScrollPane jScrollPane1;
00029     private javax.swing.JScrollPane jScrollPane2;
00030     public javax.swing.JLabel table1Title;
00031     public javax.swing.JLabel table2Title;
00032     guiTableAdapter[] resultTable = new guiTableAdapter[2];
00033     JTable[] table = new JTable[2];
00034     Vector[] objectNames = new Vector[2];
00035     ListSelectionModel[] rowSM = new ListSelectionModel[2];
00036     String table1,table2;
00037     boolean selectionListenerIsActive=true;
00038     private GuiComponents.System.ISInterface is;
00039 
00040     private TestSelection testSelection;
00041     private IVTestSelection ivTestSelection;
00042 
00043     public TablesDisplayPane(gui parent) {
00044         guiControl=parent;
00045         testSelection=null;
00046         ivTestSelection=null;
00047         is = GuiComponents.System.ISInterface.getInstance();
00048         for(int i=0;i<2;i++) {
00049           resultTable[i] = new guiTableAdapter();
00050           resultTable[i].addTableModelListener(this);
00051           table[i] = new JTable(resultTable[i]) {
00052              public String getToolTipText(java.awt.event.MouseEvent e) {
00053                TableModel model = getModel();
00054                int rowSelect = this.rowAtPoint(new java.awt.Point(e.getX(),e.getY()));
00055                if(rowSelect<0) return null;
00056                String sn = (String)model.getValueAt(rowSelect,0);
00057                if(sn.matches("\\d{14}")) {
00058                  ModuleCell thisCell = guiControl.config.getModuleCell(guiControl.displayPane.getSCTView(),sn);
00059                  StringBuffer infoString = new StringBuffer(sn+" - ");
00060                  infoString.append("MUR "+thisCell.getMUR()+", Row "+thisCell.getRow()+", Position "+thisCell.getPosition());
00061                  infoString.append(", ROD Crate "+guiControl.config.getSNInfo(sn,SNInfo.ROD_CRATE)+", ROD Slot "+guiControl.config.getSNInfo(sn,SNInfo.ROD_NUMBER)+", ROD Channel "+guiControl.config.getSNInfo(sn,SNInfo.ROD_CHANNEL));
00062                  infoString.append(", PS Crate "+guiControl.config.getSNInfo(sn,SNInfo.DCS_CRATE)+", PS Channel "+guiControl.config.getSNInfo(sn,SNInfo.DCS_CHANNEL));
00063                  return infoString.toString();
00064                  }
00065                else return null;
00066                  }
00067              };
00068           table[i].setFont(tableFont);
00069           rowSM[i] = table[i].getSelectionModel();
00070           rowSM[i].addListSelectionListener(this);
00071         }
00072 
00073         table[0].setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
00074         table[1].setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
00075 
00076         table1 = null;
00077         table2 = null;
00078 
00079         initComponents();
00080 
00081         table[0].addMouseListener(new tables0MouseAdapter());  // popup menu on second table only
00082         table[1].addMouseListener(new tables1MouseAdapter());  // popup menu on second table only
00083         setBorder(new javax.swing.border.TitledBorder(null, "Data", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Arial", 0, 11), new java.awt.Color(0, 0, 153)));
00084  
00085     }
00086     
00087     private void initComponents() {
00088         java.awt.GridBagConstraints gridBagConstraints;
00089 
00090         jScrollPane1 = new javax.swing.JScrollPane(table[0]);
00091         table1Title = new javax.swing.JLabel();
00092         jScrollPane2 = new javax.swing.JScrollPane(table[1]);
00093         table2Title = new javax.swing.JLabel();
00094 
00095         setLayout(new java.awt.GridBagLayout());
00096 
00097         setBackground(new java.awt.Color(255, 255, 255));
00098         jScrollPane1.setBackground(new java.awt.Color(255, 255, 255));
00099         jScrollPane1.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.LOWERED));
00100         jScrollPane1.setMinimumSize(new java.awt.Dimension(300, 150));
00101         jScrollPane1.setPreferredSize(new java.awt.Dimension(300, 200));
00102         gridBagConstraints = new java.awt.GridBagConstraints();
00103         gridBagConstraints.gridx = 0;
00104         gridBagConstraints.gridy = 1;
00105         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
00106         gridBagConstraints.ipadx = 2;
00107         gridBagConstraints.ipady = 4;
00108         gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
00109         gridBagConstraints.weighty = 0.4;
00110         add(jScrollPane1, gridBagConstraints);
00111 
00112         table1Title.setFont(new java.awt.Font("Arial", 0, 12));
00113         table1Title.setForeground(new java.awt.Color(51, 0, 153));
00114         table1Title.setText("Table 1");
00115         gridBagConstraints = new java.awt.GridBagConstraints();
00116         gridBagConstraints.gridx = 0;
00117         gridBagConstraints.gridy = 0;
00118         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
00119         gridBagConstraints.weighty = 0.05;
00120         add(table1Title, gridBagConstraints);
00121 
00122         jScrollPane2.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.LOWERED));
00123         jScrollPane2.setMinimumSize(new java.awt.Dimension(300, 150));
00124         jScrollPane2.setPreferredSize(new java.awt.Dimension(300, 200));
00125         gridBagConstraints = new java.awt.GridBagConstraints();
00126         gridBagConstraints.gridx = 0;
00127         gridBagConstraints.gridy = 3;
00128         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
00129         gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
00130         gridBagConstraints.weighty = 0.4;
00131         add(jScrollPane2, gridBagConstraints);
00132 
00133         table2Title.setFont(new java.awt.Font("Arial", 0, 12));
00134         table2Title.setForeground(new java.awt.Color(51, 0, 153));
00135         table2Title.setText("Table 2");
00136         gridBagConstraints = new java.awt.GridBagConstraints();
00137         gridBagConstraints.gridx = 0;
00138         gridBagConstraints.gridy = 2;
00139         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
00140         gridBagConstraints.weighty = 0.05;
00141         add(table2Title, gridBagConstraints);
00142 
00143         jScrollPane1.addMouseListener(new tables0MouseAdapter());  // popup menu on second table only
00144         jScrollPane2.addMouseListener(new tables1MouseAdapter());  // popup menu on second table only
00145 
00146     }//GEN-END:initComponents
00147   
00148     public java.awt.Insets getInsets() {
00149         return new java.awt.Insets(10,10,10, 10);
00150     }
00151     
00152     public void tableChanged(javax.swing.event.TableModelEvent e) {
00153         table1Title.setText((table1==null) ? "" : table1+" : "+Integer.toString(resultTable[0].getRowCount()));
00154         table2Title.setText((table2==null) ? "" : table2+" : "+Integer.toString(resultTable[1].getRowCount()));
00155     }
00156     public void setTableTitles(String title1, String title2) {
00157         table1=title1;
00158         table2=title2;
00159         table1Title.setText((title1==null) ? "" : table1+" : "+Integer.toString(resultTable[0].getRowCount()));
00160         table2Title.setText((title2==null) ? "" : table2+" : "+Integer.toString(resultTable[1].getRowCount()));        
00161     }
00162     public int getRowCount(int table) {
00163         if(resultTable[table]==null) return 0;
00164         return resultTable[table].getRowCount();
00165         }
00166     public void setTable1Title(String title) {
00167         table2 = new String(title);
00168         table2Title.setText(table2+" : "+Integer.toString(resultTable[1].getRowCount()));        
00169     }  
00170     public void refresh(int thisModuleGroup, java.util.Vector tableContents) {
00171         selectionListenerIsActive=false;
00172         resultTable[thisModuleGroup].reTable(tableContents);
00173         selectionListenerIsActive=true;
00174         javax.swing.table.TableColumn column = table[thisModuleGroup].getColumnModel().getColumn(0);
00175         column.setPreferredWidth(100);
00176         }
00177     public void refresh(Vector[] tableContents, int table0RowSelect, int table1RowSelect) {
00178         selectionListenerIsActive=false;
00179         
00180         for(int i=0;i<2;i++) {
00181                resultTable[i].reTable(tableContents[i]);
00182                 javax.swing.table.TableColumn column = table[i].getColumnModel().getColumn(0);
00183                 column.setPreferredWidth(110);
00184                 }
00185         selectionListenerIsActive=true;
00186         if(table0RowSelect!=-1) rowSM[0].setSelectionInterval(table0RowSelect,table0RowSelect);
00187         if(table1RowSelect!=-1) rowSM[1].setSelectionInterval(table1RowSelect,table1RowSelect);
00188         }
00189     public void refresh1(Vector newObjectNames, Vector tableContents, String title) {
00190         int oldSelect = rowSM[1].getMinSelectionIndex();
00191         objectNames[1] = new Vector(newObjectNames);
00192         selectionListenerIsActive=false;
00193         resultTable[1].reTable(tableContents);
00194         if(oldSelect>=0 && oldSelect<=tableContents.size()-1) rowSM[1].setSelectionInterval(oldSelect,oldSelect);
00195         selectionListenerIsActive=true;
00196         javax.swing.table.TableColumn column = table[1].getColumnModel().getColumn(0);
00197         column.setPreferredWidth(110);       
00198         setTable1Title(title); 
00199         }
00200     public void refresh1(Vector tableContents, String title) {   // no update of objectNames[1]
00201         selectionListenerIsActive=false;
00202         int oldSelect = rowSM[1].getMinSelectionIndex();
00203         resultTable[1].reTable(tableContents);
00204         if(oldSelect>=0 && oldSelect<=tableContents.size()-1) rowSM[1].setSelectionInterval(oldSelect,oldSelect);
00205         selectionListenerIsActive=true;
00206         javax.swing.table.TableColumn column = table[1].getColumnModel().getColumn(0);
00207         column.setPreferredWidth(110);       
00208         setTable1Title(title); 
00209         }
00210 
00211 
00212     public String getSelectedObject() {
00213        return getSelectedObject(1);
00214        }
00215 
00216     public String getSelectedObject(int tableIndex) {
00217         int selectedRow = rowSM[tableIndex].getMinSelectionIndex();
00218         if(objectNames[tableIndex]==null) return null;
00219         int arraySize = objectNames[tableIndex].size();
00220         if(selectedRow==-1 || arraySize==0 || selectedRow>arraySize-1) return null;
00221         return (String)objectNames[tableIndex].elementAt(selectedRow);
00222         }
00223     public String getSelectedSerialNo() {
00224         int selectedRow = rowSM[1].getMinSelectionIndex();
00225         if(selectedRow==-1) return null;
00226         return (String)resultTable[1].getValueAt(selectedRow,0);
00227         }
00228     public void setSelectedSerialNo(String sn, boolean changeSelection) {
00229         int is = rowSM[1].getMinSelectionIndex();
00230         if(is!=-1 && !changeSelection) return;
00231         for(int i=0;i<resultTable[1].getRowCount();i++) {
00232            if(sn.equals((String)resultTable[1].getValueAt(i,0))) {
00233                        rowSM[1].setSelectionInterval(i,i); 
00234                        break;
00235                        }
00236            }
00237 
00238        }
00239               
00240 
00241     public int getSelectedTest() {
00242         return rowSM[0].getMinSelectionIndex();
00243         }
00244     public Vector getTestControlObjectNames() {
00245         return objectNames[0];
00246        }
00247     public String getTestControlObjectName() {
00248         int selectedRow = rowSM[0].getMinSelectionIndex();
00249         if(selectedRow==-1) return null;
00250         if(objectNames[0]==null) return null;
00251         if(selectedRow>=objectNames[0].size()) return null;
00252         return (String)objectNames[0].elementAt(selectedRow);
00253         }
00254 
00255     
00257     public void valueChanged(ListSelectionEvent e) {
00258               if(!selectionListenerIsActive) {
00259 //                         selectionListenerIsActive=true;
00260                          return;
00261                          }
00262 
00263               if (e.getValueIsAdjusting()) return;
00264 
00265               ListSelectionModel lsm = (ListSelectionModel)e.getSource();
00266               int thisTable = (lsm==rowSM[0]) ? 0 : 1;
00267         
00268               if (lsm.isSelectionEmpty()) {
00269                  //no rows are selected
00270                   if(thisTable==0) {   
00271                        testSelection=null;
00272                        ivTestSelection=null;
00273                        guiControl.displayPane.setDisplayColors();
00274                        guiControl.displayPane.refreshDisplay();  
00275                        guiControl.selectorPane.initParamList();
00276                        }
00277                    return;
00278                    }
00279 
00280               int minRow=lsm.getMinSelectionIndex();
00281               int maxRow=lsm.getMaxSelectionIndex();   
00282               int nselected = maxRow-minRow+1;  
00283 
00284               int displayStatus=guiControl.displayStatus.getStatus();
00285               switch(displayStatus) {
00286                  case DisplayStatus.MODULE_GROUP_SELECTION:
00287                    if(nselected>0) lsm.setSelectionInterval(minRow,minRow);
00288                    if(thisTable==0) guiControl.selectorPane.setMouseClickIndex(minRow);
00289                    guiControl.displayPane.setDisplayColors();
00290                    guiControl.displayPane.refreshDisplay();
00291                    break;
00292                  case DisplayStatus.IS_MONITOR:
00293 // if more than one row is selected, assume they want to delete them
00294                    if(nselected>1) {
00295                        int response = JOptionPane.showConfirmDialog(null,"Are you sure you want to delete these "+nselected+" objects from IS?","Confirm Deletion Request",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);
00296                        if(response==JOptionPane.NO_OPTION) {
00297                              lsm.setSelectionInterval(minRow,minRow);
00298                              return; 
00299                              }
00300                      // delete the objects
00301                        if(thisTable==0) guiControl.isInterface.removeTests(objectNames[0],minRow,maxRow);
00302 //                     else deleteSelectedDataObjects();
00303                        updateTables();
00304                        return;
00305                        } 
00306                     if(thisTable!=0) return;
00307                     if(objectNames[0]!=null && objectNames[0].size()>0) testSelection = new TestSelection((String)objectNames[0].elementAt(minRow),guiControl.isInterface.getLocation());
00308 
00309                     String runScanRegex = testSelection.getRunScanRegex();
00310                     if(runScanRegex!=null) guiControl.isInterface.setISCounter(runScanRegex);
00311 //                    guiControl.isInterface.setTestFilter((String)objectNames[0].elementAt(minRow)); 
00312                     guiControl.selectorPane.initParamList(); // maybe require change of parameter menu
00313 
00314                     if(testSelection.isRetrievedData()) checkForRetrievedObjects();
00315 
00316                     guiControl.colorScalePane.setColorScale(); 
00317                     guiControl.displayPane.setDisplayColors();      
00318                     ModuleCell lastClickedCell;
00319                     if((lastClickedCell=guiControl.displayPane.getLastClickedCell())!=null) listISObjects(lastClickedCell);
00320                     guiControl.displayPane.refreshDisplay();
00321                     break;
00322                  case DisplayStatus.TEST_DATA:
00323                 if(thisTable!=0) return; // only interest in changes to the first table 
00324                     if(objectNames[0]!=null && objectNames[0].size()>0) testSelection = new TestSelection((String)objectNames[0].elementAt(minRow),guiControl.isInterface.getLocation());
00325 //                   guiControl.isInterface.setTestFilter((String)objectNames[0].elementAt(minRow)); 
00326                    guiControl.selectorPane.initParamList(); // maybe require change of parameter menu
00327 
00328                    if(testSelection.isRetrievedData()) checkForRetrievedObjects(2);   // publish test data object, if not already done
00329 
00330                    guiControl.colorScalePane.setColorScale(); 
00331                    guiControl.displayPane.setDisplayColors();      
00332                    guiControl.displayPane.refreshDisplay();
00333                    listTestResults();
00334                    break;
00335                  case DisplayStatus.SCTDB_DATA:
00336                  case DisplayStatus.SCTDB_RODDAQ_DATA:
00337                    if(thisTable!=0) return; // only interest in changes to the first table 
00338                     if(objectNames[0]!=null && objectNames[0].size()>0) testSelection = new TestSelection((String)objectNames[0].elementAt(minRow),guiControl.isInterface.getLocation());
00339 //                   guiControl.isInterface.setTestFilter((String)objectNames[0].elementAt(minRow)); 
00340                    guiControl.selectorPane.initParamList(); // maybe require change of parameter menu
00341                    guiControl.colorScalePane.setColorScale(); 
00342                    guiControl.displayPane.setDisplayColors();      
00343                    guiControl.displayPane.refreshDisplay();
00344                    listTestResults();
00345                    break;
00346                  case DisplayStatus.IV_DATA:
00347                    if(thisTable!=0) return; // only interest in changes to the first table 
00348                    if(objectNames[0]!=null && objectNames[0].size()>0) ivTestSelection = new IVTestSelection((String)objectNames[0].elementAt(minRow));
00349                    guiControl.selectorPane.initParamList(); // maybe require change of parameter menu
00350                    guiControl.colorScalePane.setColorScale(); 
00351                    guiControl.displayPane.setDisplayColors();      
00352                    guiControl.displayPane.refreshDisplay();
00353                    listTestResults();
00354                    break;
00355                   default:
00356                  }
00357             }
00358 
00359     public TestSelection getTestSelection() {
00360            return testSelection;
00361            }
00362     public IVTestSelection getIVTestSelection() {
00363            return ivTestSelection;
00364            }
00365 
00366     public void listISObjects(ModuleCell thisCell) {
00367        String title = "No module selected";
00368 
00369        if(thisCell!=null) {
00370             title =guiControl.selectorPane.getDisplayParameter()+" for "+thisCell.getSerialNo();
00371             refresh1(getISTableList(thisCell),title);
00372             }
00373         }
00374 
00375     public Vector getISTableList(ModuleCell thisCell) {
00376 
00377        Vector theLine;
00378        java.util.SortedMap m = new java.util.TreeMap();
00379 
00380        if(thisCell!=null && testSelection!=null && testSelection.getRunScanRegex()!=null) {
00381        String thisSN = thisCell.getSerialNo();
00382        java.util.List isList = (java.util.List)guiControl.isInterface.isCounter.getModuleList(guiControl.selectorPane.getDisplayParameterIndex(),testSelection.getRunScanRegex(),thisSN,testSelection.isRetrievedData());
00383        if(isList==null) objectNames[1] = new Vector();
00384        else {
00385          objectNames[1] = new Vector(isList);
00386          for(int i=0;i<objectNames[1].size();i++) {
00387             String[] objectParts = ((String)objectNames[1].elementAt(i)).split("\\.");
00388             theLine = new Vector();
00389             String sn = objectParts[4];
00390             Integer runNo = Integer.valueOf(objectParts[2]);
00391             Integer scanNo = Integer.valueOf(objectParts[3]);
00392             String fname = objectParts[1];
00393             theLine.add(sn);
00394             theLine.add(runNo);
00395             theLine.add(scanNo);
00396             theLine.add(fname);
00397             m.put(new Integer(runNo.intValue()*10000 + scanNo.intValue()),theLine);
00398             }
00399           }
00400          }
00401          Vector tableContents = new Vector(m.values());
00402          theLine=new Vector();
00403          theLine.addElement("Serial No");
00404          theLine.addElement("Run No");
00405          theLine.addElement("Scan No");
00406          theLine.addElement("Data");
00407          tableContents.insertElementAt(theLine,0);
00408          return tableContents;
00409         }
00410      public void listTestResults() {
00411 
00412         int status = guiControl.displayStatus.getStatus();
00413         int displayParameter = guiControl.selectorPane.getDisplayParameterIndex();
00414         String testParameter = (displayParameter==2 && status!=DisplayStatus.DCS_DATA) ? guiControl.selectorPane.getOption() : guiControl.selectorPane.getDisplayParameter();
00415         if(status==DisplayStatus.IV_DATA) {
00416               if(ivTestSelection==null) return;
00417               switch(displayParameter) {
00418                 case 1:
00419                  testParameter = guiControl.selectorPane.getIVParameter();
00420                  break;
00421                 case 2:                 
00422                  testParameter = guiControl.selectorPane.getOption();
00423                  break;
00424                 default:
00425                  testParameter = guiControl.selectorPane.getDisplayParameter();
00426                 }
00427               }
00428         else if(status!=DisplayStatus.DCS_DATA && testSelection==null) return;
00429 
00430         java.util.Set moduleList = guiControl.config.getSortedVector(guiControl.displayPane.getSCTView());
00431         int index = guiControl.selectorPane.getMouseClickIndex();
00432         Vector theLine = new Vector();
00433         Vector table = new Vector();
00434         Vector objectsVector = new Vector();
00435         theLine.addElement("Serial No");
00436         switch(status) {
00437            case DisplayStatus.SCTDB_DATA:
00438             theLine.addElement("Location");
00439             theLine.addElement("Date");
00440             break;
00441            case DisplayStatus.SCTDB_RODDAQ_DATA:
00442               theLine.addElement("Date");
00443              break;
00444            default:
00445            }
00446         theLine.addElement(testParameter);
00447         table.addElement(theLine);
00448 
00449         SummaryReader.Test testResult;
00450 
00451         for (java.util.Iterator i = moduleList.iterator(); i.hasNext(); ) {
00452            String thisSN=(String)i.next();
00453 
00454                  ModuleCell thisCell = (ModuleCell)guiControl.config.getModuleCell(guiControl.displayPane.getSCTView(),thisSN);
00455                  theLine=new Vector();
00456                  theLine.addElement(thisSN);
00457 
00458                  switch(status) {
00459                    case DisplayStatus.SCTDB_DATA:
00460                      if(testSelection.getSCTDBObjectHeader()==null) continue;
00461                      testResult = guiControl.isInterface.getSCTDBTest(testSelection.getSCTDBObjectHeader()+thisSN);
00462                      if(testResult==null) {
00463                        theLine.addElement(" - ");
00464                        theLine.addElement(" - ");
00465                        }
00466                      else {
00467                        theLine.addElement(testResult.getDAQInfo().get(SummaryReader.DAQInfo.LOCATION));
00468                        theLine.addElement(testResult.getDAQInfo().get(SummaryReader.DAQInfo.DATE));
00469                        }
00470                      break;
00471                    case DisplayStatus.SCTDB_RODDAQ_DATA:
00472                      testResult = guiControl.isInterface.getSCTDBTest(testSelection.getSCTDBRodDaqObjectHeader()+thisSN);
00473                      if(testResult==null) theLine.addElement(" - ");
00474                      else theLine.addElement(testResult.getDAQInfo().get(SummaryReader.DAQInfo.DATE));
00475                      break;
00476                    default:
00477                    }
00478 
00479                  ColorScale thisColorScale;
00480                  if((thisColorScale = guiControl.colorScalePane.getColorScale())!=null) theLine.addElement(thisColorScale.getLabel(thisCell.getData()));
00481                  else theLine.addElement("No Data");
00482                  table.addElement(theLine);
00483                  }      
00484           String title = (status==DisplayStatus.TEST_DATA && guiControl.displayPane.getDisplayOption()==2) ? testParameter+" Comparisons" : testParameter+" Results ";
00485           refresh1(objectsVector,table,title);     
00486          }   
00487 
00488     public void updateTables(boolean keepSelections) {
00489          changeTables(keepSelections);
00490          }
00491     public void updateTables() {
00492          changeTables(!guiControl.menuBar.autoSelectMode.isSelected());
00493          }
00494 
00495     private void changeTables(boolean keepSelections) {
00496 
00497       testSelection=null;
00498       ivTestSelection=null;
00499 
00500       Vector theLine = new Vector();
00501       int table0Select=-1;
00502       int table1Select=-1;
00503       String selectedObject0 = getSelectedObject(0);
00504       String selectedObject1 = getSelectedObject(1);
00505       if(keepSelections) {
00506         table0Select = (selectedObject0!=null) ? objectNames[0].indexOf(selectedObject0) : -1;
00507         }
00508       table1Select = (selectedObject1!=null) ? objectNames[1].indexOf(selectedObject1) : -1;
00509         
00510       String title0=null;
00511       String title1=null;
00512       Vector[] tableContents = new Vector[2];
00513       tableContents[0] = new Vector();
00514       tableContents[1] = new Vector();
00515 
00516       int previousSelection = keepSelections ? getSelectedTest() : -1;
00517 
00518       int view = guiControl.displayPane.getSCTView();
00519 
00520       switch(guiControl.displayStatus.getStatus()) {
00521           case DisplayStatus.MODULE_GROUP_SELECTION :
00522              title0 = "ModuleGroups";
00523              String option = guiControl.selectorPane.getOption();
00524              title1 = (option!=null) ? option+" modules" : null;
00525              theLine.addElement("Serial No");
00526              String title = (view<4) ? "Row" : "Quadrant";
00527              theLine.addElement(title);
00528              theLine.addElement("Posn");
00529              theLine.addElement("MUR");
00530              tableContents[1].addElement(theLine);
00531              theLine = new Vector();
00532              theLine.addElement("Group");
00533              theLine.addElement("# Modules");
00534              tableContents[0].addElement(theLine);
00535 
00536              java.util.Set moduleList = guiControl.config.getSortedVector(view);
00537              java.util.Map groupCounts = new java.util.HashMap();
00538 
00539              int selectedGroup = guiControl.selectorPane.getMouseClickIndex();
00540              table0Select = selectedGroup;
00541              for (java.util.Iterator i = moduleList.iterator(); i.hasNext(); ) {
00542                String thisSN=(String)i.next();
00543                ModuleCell thisCell = (ModuleCell)guiControl.config.getModuleCell(view,thisSN);
00544                int thisGroup = thisCell.getModuleGroup();
00545                if(thisGroup<0) continue;
00546 
00547                Integer iThisGroup = new Integer(thisGroup);
00548                Integer c;
00549                if((c = (Integer)groupCounts.get(iThisGroup))==null) groupCounts.put(iThisGroup,new Integer(1));
00550                else groupCounts.put(iThisGroup,new Integer(c.intValue()+1));
00551 
00552                if(thisGroup!=selectedGroup) continue;
00553                theLine = new Vector();
00554                theLine.addElement(thisSN);
00555                if(view<4) {
00556                     theLine.addElement(Integer.toString(thisCell.getRow()));
00557                     theLine.addElement(Integer.toString(thisCell.getPosition()));
00558                     }
00559                else {
00560                     theLine.addElement(thisCell.getQuadrant());
00561                     theLine.addElement(thisCell.getEndCapPosition());
00562                     }
00563 
00564                theLine.addElement(Integer.toString(thisCell.getMUR()));
00565                tableContents[1].addElement(theLine);
00566                }
00567                for(int i=0;i<8;i++) {
00568                   theLine = new Vector();
00569                   theLine.addElement("ModuleGroup "+i);
00570                   Integer c;
00571                   if((c=(Integer)groupCounts.get(new Integer(i)))==null) theLine.addElement(new Integer(0));
00572                   else theLine.addElement(c);
00573                   tableContents[0].addElement(theLine);
00574                   }
00575              break;
00576            case DisplayStatus.IS_MONITOR:
00577                title0 = "Tests";
00578                title1 = guiControl.selectorPane.getDisplayParameter();
00579                tableContents[1] = getISTableList(guiControl.displayPane.getLastClickedCell());
00580                tableContents[0] = getTestTableList();             
00581                break;
00582            case DisplayStatus.IV_DATA:
00583                title0 = "IV scans";
00584                title1 = "IV Data";
00585                tableContents[0] = getIVScanList();
00586                theLine = new Vector();
00587                theLine.addElement("Serial No");
00588                theLine.addElement(guiControl.selectorPane.getIVParameter());
00589                tableContents[1].addElement(theLine);
00590                break;
00591            case DisplayStatus.TEST_DATA:
00592            case DisplayStatus.SCTDB_DATA:
00593            case DisplayStatus.SCTDB_RODDAQ_DATA:
00594                int testType = guiControl.isInterface.getListFilterIndex();
00595                title0 = (testType==-1) ? "Number of Tests " : "Number of "+testMenuNames[testType]+" Tests ";
00596                String testParameter = guiControl.selectorPane.getDisplayParameter();
00597                title1 = testParameter+ " Results";
00598                theLine = new Vector();
00599                theLine.addElement("Serial No");
00600                theLine.addElement(testParameter);
00601                tableContents[1].addElement(theLine);
00602                tableContents[0]=getTestTableList();
00603                if(tableContents[0].size()>1) {
00604                      if(previousSelection<=tableContents[0].size()-2 && previousSelection>=0) table0Select=previousSelection;
00605                      else table0Select=tableContents[0].size()-2; // remember titles!!   
00606                      }
00607 
00608                break;
00609            case DisplayStatus.DCS_DATA:
00610                table0Select=-1;
00611                table1Select=-1;
00612                title0 = "Server Info";
00613                title1 = guiControl.selectorPane.getDisplayParameter()+ " Data";
00614                theLine = new Vector();
00615                theLine.addElement("Serial No");
00616                theLine.addElement(guiControl.selectorPane.getDisplayParameter());
00617                tableContents[1].addElement(theLine);
00618                theLine = new Vector();
00619                theLine.addElement("Server");
00620                theLine.addElement("Last Update");
00621                tableContents[0].addElement(theLine);
00622                theLine = new Vector();
00623                theLine.addElement(Preferences.PreferencesInterface.getInstance().getPreference(Preferences.PreferencesInterface.DCS_SERVER_NAME));
00624                theLine.addElement(guiControl.isInterface.isRequestBuffer.getLastUpdateTime());
00625                tableContents[0].addElement(theLine);
00626                break;
00627            default:
00628                return;
00629               }      
00630         if(table0Select==-1 && tableContents[0].size()>1) table0Select=tableContents[0].size()-2; // remember titles!!  
00631         if(table1Select==-1 && tableContents[1].size()>1) table1Select=tableContents[1].size()-2; // remember titles!!  
00632         refresh(tableContents,table0Select,table1Select);
00633         setTableTitles(title0,title1);
00634 
00635         if(getSelectedTest()==-1) {  // no test now selected, so need to update display manually (otherwise selection listener would do it)
00636 //              guiControl.isInterface.setTestFilter(null);
00637               testSelection=null;
00638               ivTestSelection=null;
00639               guiControl.displayPane.setDisplayColors();
00640               guiControl.displayPane.refreshDisplay();
00641               guiControl.selectorPane.initParamList();
00642                }
00643 // for DCS, there is no selection in the test table that will fill the bottom table, so do it here manually
00644         if(guiControl.displayStatus.getStatus()==DisplayStatus.DCS_DATA) {
00645               testSelection=null;
00646               ivTestSelection=null;
00647               guiControl.displayPane.setDisplayColors();
00648               guiControl.displayPane.refreshDisplay();
00649               listTestResults();
00650               }
00651     }
00652 
00653     public void setTestTable(Vector ISTests) {
00654            objectNames[0] = ISTests;
00655            updateTables(true);
00656            }
00657     public void addNewTest(String theObjectName) {
00658            if(objectNames[0]==null) return;
00659            if(!objectNames[0].contains(theObjectName)) objectNames[0].addElement(theObjectName);
00660            }
00661     public void removeTest(String theObjectName) {
00662            if(objectNames[0].contains(theObjectName)) {
00663                 objectNames[0].removeElement(theObjectName);
00664                 updateTables(true);
00665                 }
00666            }
00667 
00668    public Vector getTestTableList() {
00669 // generate the test table list ordered by run numer and scan number
00670        Vector theLine = new Vector();        // each line of the table
00671        Vector tableContent = new Vector();   // vector of table lines
00672        Vector orderVector = new Vector();      // vector for re-ordering based on runno and scanno
00673        Hashtable orderHash = new Hashtable();// hashtable to map order runno/scanno to table lines
00674        Hashtable objectOrderHash = new Hashtable();
00675 
00676        theLine.addElement("Test");
00677        theLine.addElement("Status");
00678        theLine.addElement("Run");
00679        theLine.addElement("Scan");
00680        theLine.addElement("#Scans");
00681        theLine.addElement("Source");
00682        tableContent.addElement(theLine);
00683        int exceptionCount=0;
00684        for(int i=0;i<objectNames[0].size();i++) {
00685            String thisObject = (String)objectNames[0].elementAt(i);
00686            TestData testData = new TestData(); 
00687            try {
00688            is.getRepository().getValue(thisObject, testData); 
00689            theLine=new Vector();
00690            if(testData.testName.equals("NPtGainTest") && testData.nScans==3) testData.testName = "3PtGainTest";
00691            theLine.addElement(testData.testName);
00692            switch(testData.status) {
00693              case 0:
00694                  theLine.addElement("Executing");
00695                  break;
00696              case 1:
00697                  theLine.addElement("Completed");
00698                  break;
00699              case 2:
00700                  theLine.addElement("Aborted");
00701                  break;
00702              default:
00703                  theLine.addElement("Unknown");
00704              }
00705            theLine.addElement(new Integer(testData.runNumber));
00706            theLine.addElement(new Integer(testData.startScanNumber));
00707            theLine.addElement(new Integer(testData.nScans));
00708 
00709            int offsetCount = (thisObject.matches("RetrievedData.*")) ? 0 : 100000000;
00710            Integer runScanNumber = new Integer(testData.runNumber*10000 + testData.startScanNumber +offsetCount); 
00711 
00712            if(thisObject.matches("RetrievedData.*")) theLine.addElement("Archive");
00713            else if(thisObject.matches("SCTDBData.*")) theLine.addElement("SCTDB");
00714            else theLine.addElement("New");        
00715 
00716            orderVector.addElement(runScanNumber);
00717            orderHash.put(runScanNumber,theLine);
00718            objectOrderHash.put(runScanNumber,thisObject);
00719            }catch(Exception e){exceptionCount++;}
00720 
00721            }
00722 
00723        Collections.sort(orderVector);
00724        objectNames[0]=new Vector();
00725        for(int i=0;i<orderVector.size();i++) {
00726             Integer runscan= (Integer)orderVector.elementAt(i);
00727             objectNames[0].addElement((String)objectOrderHash.get(orderVector.elementAt(i)));          // re-order object names appropriately
00728             tableContent.addElement((Vector)orderHash.get(orderVector.elementAt(i))); // and the same for the table entries
00729             }
00730        if(exceptionCount>0) System.err.println("SctGUI::TablesDisplayPane - exception reading retrieving IS data.");
00731        return tableContent;
00732     }
00733 
00734    public Vector getIVScanList() {
00735 // generate the test table list ordered by run numer and scan number
00736        Vector theLine = new Vector();        // each line of the table
00737        Vector tableContent = new Vector();   // vector of table lines
00738        Vector orderVector = new Vector();      // vector for re-ordering based on runno and scanno
00739        Hashtable orderHash = new Hashtable();// hashtable to map order runno/scanno to table lines
00740        Hashtable objectOrderHash = new Hashtable();
00741 
00742        theLine.addElement("Run");
00743        theLine.addElement("Scan");
00744        theLine.addElement("Date");
00745        theLine.addElement("Time");
00746        theLine.addElement("#Modules");
00747        theLine.addElement("Source");
00748        tableContent.addElement(theLine);
00749        for(int i=0;i<objectNames[0].size();i++) {
00750            String thisObject = (String)objectNames[0].elementAt(i);
00751            IVScanControl iv = new IVScanControl();
00752            is.getRepository().getValue(thisObject, iv); 
00753            theLine=new Vector();
00754            theLine.addElement(new Integer(iv.runNo));
00755            theLine.addElement(new Integer(iv.scanNo));
00756            theLine.addElement(iv.scanDate);
00757            theLine.addElement(iv.scanTime);
00758            theLine.addElement(new Integer(iv.modules.length));
00759 
00760            int offsetCount = (thisObject.matches("RetrievedData.*")) ? 0 : 100000000;
00761            Integer runScanNumber = new Integer(iv.runNo*10000 + iv.scanNo +offsetCount); 
00762 
00763            if(thisObject.matches("SCTDBData.*")) theLine.addElement("SCTDB");
00764            else theLine.addElement("DCS");        
00765 
00766            orderVector.addElement(runScanNumber);
00767            orderHash.put(runScanNumber,theLine);
00768            objectOrderHash.put(runScanNumber,thisObject);
00769 
00770            }
00771 
00772        Collections.sort(orderVector);
00773        objectNames[0]=new Vector();
00774        for(int i=0;i<orderVector.size();i++) {
00775             Integer runscan= (Integer)orderVector.elementAt(i);
00776             objectNames[0].addElement((String)objectOrderHash.get(orderVector.elementAt(i)));          // re-order object names appropriately
00777             tableContent.addElement((Vector)orderHash.get(orderVector.elementAt(i))); // and the same for the table entries
00778             }
00779        return tableContent;
00780     }
00781 
00782     public void updateTest(String testObjectName) {
00783            if(objectNames[0]==null) return;
00784            if(!objectNames[0].contains(testObjectName)) return;
00785            int rowNumber=objectNames[0].indexOf(testObjectName);
00786            try {
00787            TestData testData = new TestData(); 
00788            Sct.IS.SctNames.getISRepository().getValue(testObjectName, testData); 
00789            switch(testData.status) {
00790                case 0:
00791                  resultTable[0].setValueAt("Executing",rowNumber,1);
00792                  break;
00793                case 1:
00794                  resultTable[0].setValueAt("Completed",rowNumber,1);
00795                  break;
00796                case 2:
00797                  resultTable[0].setValueAt("Aborted",rowNumber,1);
00798                  break;
00799                default:
00800                  resultTable[0].setValueAt("Unknown",rowNumber,1);
00801                }
00802              resultTable[0].fireTableCellUpdated(rowNumber,1);
00803              if(testData.status==1 && guiControl.menuBar.autoUploadIsEnabled() && !testData.testName.equals("NMaskTest")) {
00804                     UploadManager upload = new UploadManager(guiControl);  // upload the data!
00805                     }
00806             }catch(Exception updateE){System.err.println("***ERROR updating test status in table list : "+updateE.toString());}
00807            
00808          }
00809 
00810     public void updateTestTable(String testObjectName, int rowNumber) {
00811            if(rowNumber==-1) return;
00812            try {
00813            TestData testData = new TestData(); 
00814            Sct.IS.SctNames.getISRepository().getValue(testObjectName, testData); 
00815            switch(testData.status) {
00816                case 0:
00817                  resultTable[0].setValueAt("Executing",rowNumber,1);
00818                  break;
00819                case 1:
00820                  resultTable[0].setValueAt("Completed",rowNumber,1);
00821                  break;
00822                case 2:
00823                  resultTable[0].setValueAt("Aborted",rowNumber,1);
00824                  break;
00825                default:
00826                  resultTable[0].setValueAt("Unknown",rowNumber,1);
00827                }
00828              resultTable[0].fireTableCellUpdated(rowNumber,1);
00829             }catch(Exception updateE){System.err.println("***ERROR updating test status in table list : "+updateE.toString());}
00830          }
00831 
00832 
00833     class tables1MouseAdapter extends java.awt.event.MouseAdapter {
00834             public void mouseClicked(java.awt.event.MouseEvent e) {
00835                switch(e.getModifiers()) {
00836                  case java.awt.event.InputEvent.BUTTON2_MASK:
00837                  case java.awt.event.InputEvent.BUTTON3_MASK:
00838                        int rowSelect = table[1].rowAtPoint(new java.awt.Point(e.getX(),e.getY()));
00839                        rowSM[1].setSelectionInterval(rowSelect,rowSelect);
00840                        if(rowSelect<0) return;
00841                        guiControl.menuBar.setSelectedSerialNo((String)resultTable[1].getValueAt(rowSelect,0));
00842                        guiControl.menuBar.showTablesPopupMenu(1,e);
00843                        break;
00844                  default:
00845                  }
00846             }
00847     }
00848     class tables0MouseAdapter extends java.awt.event.MouseAdapter {
00849             public void mouseClicked(java.awt.event.MouseEvent e) {
00850                switch(e.getModifiers()) {
00851                  case java.awt.event.InputEvent.BUTTON2_MASK:
00852                  case java.awt.event.InputEvent.BUTTON3_MASK:
00853                        int rowSelect = table[0].rowAtPoint(new java.awt.Point(e.getX(),e.getY()));
00854                        rowSM[0].setSelectionInterval(rowSelect,rowSelect);  
00855                        guiControl.menuBar.showTablesPopupMenu(0,e);
00856                        break;
00857                  default:
00858                  }
00859             }
00860     }
00861     public void checkForRetrievedObjects() {
00862          checkForRetrievedObjects(-1);
00863          }
00864 
00865     public void checkForRetrievedObjects(int serverIndex) {
00866          if(testSelection==null || !testSelection.isRetrievedData()) return;
00867          if(serverIndex==-1) serverIndex = guiControl.selectorPane.getDisplayParameterIndex();
00868          if(guiControl.isInterface.isCounter.archivedObjectsRetrievedOk(serverIndex,testSelection.getRunScanRegex())) return;
00869          System.out.println("SctGUI - Retrieving archived data files...");
00870          String oName;
00871          switch(serverIndex) {
00872                           case 1:
00873                               oName = "SctData::FitScanResult";
00874                               break;
00875                           case 2:
00876                               oName = "SctData::*TestResult";
00877                               break;
00878                           default:
00879                               oName = "SctData::RawScanResult";
00880                               }
00881                       
00882          try {
00883 //           System.out.println("retrieve("+testSelection.getRunNo()+","+testSelection.getScanNo()+","+oName+","+"*"+")");
00884            ArchivingServiceI.ArchivingServiceInterface a = SystemInterface.getInstance().getArchivingService(); 
00885            int scan=testSelection.getScanNo(); 
00886            if(serverIndex==2) a.retrieve(Integer.toString(testSelection.getRunNo()),Integer.toString(scan),oName,"*");
00887            else {
00888                for(int i = 0;i<testSelection.getNoScans();i++) a.retrieve(Integer.toString(testSelection.getRunNo()),Integer.toString(scan+i),oName,"*");
00889                }
00890          }catch(Exception e2) {System.err.println("SctGUI::TablesDisplayPane - Exception from retrieving from ArchiveService: "+e2.toString());}
00891 
00892               }
00893 
00894 
00895 
00896     
00897 }
00898 

Generated on Fri Jan 14 12:49:57 2005 for SCT DAQ/DCS Software - Java by doxygen 1.3.5