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 
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                    if(thisTable!=0) return; // only interest in changes to the first table
00337                     if(objectNames[0]!=null && objectNames[0].size()>0) testSelection = new TestSelection((String)objectNames[0].elementAt(minRow),guiControl.isInterface.getLocation());
00338 //                   guiControl.isInterface.setTestFilter((String)objectNames[0].elementAt(minRow));
00339                    guiControl.selectorPane.initParamList(); // maybe require change of parameter menu
00340                    guiControl.colorScalePane.setColorScale();
00341                    guiControl.displayPane.setDisplayColors();
00342                    guiControl.displayPane.refreshDisplay();
00343                    listTestResults();
00344                    break;
00345                  case DisplayStatus.SCTDB_RODDAQ_DATA:
00346 // if more than one row is selected, assume they want to delete them
00347                    if(nselected>1) {
00348                        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);
00349                        if(response==JOptionPane.NO_OPTION) {
00350                              lsm.setSelectionInterval(minRow,minRow);
00351                              return;
00352                              }
00353                      // delete the objects
00354                        if(thisTable==0) guiControl.isInterface.removeTests(objectNames[0],minRow,maxRow);
00355 //                     else deleteSelectedDataObjects();
00356                        updateTables();
00357                        return;
00358                        }
00359                    if(thisTable!=0) return; // only interest in changes to the first table
00360                    if(objectNames[0]!=null && objectNames[0].size()>0) {
00361                         String objectName = (String)objectNames[0].elementAt(minRow);
00362                         java.util.regex.Matcher matcher = ISInterface.SctRodDaqRefPattern.matcher(objectName);
00363                         String locn = matcher.matches() ? objectName.substring(matcher.start(ISInterface.LOCATION),matcher.end(ISInterface.LOCATION)) : "Unknown";
00364                         testSelection = new TestSelection(objectName,locn);
00365                         }
00366 //                   guiControl.isInterface.setTestFilter((String)objectNames[0].elementAt(minRow));
00367                    guiControl.selectorPane.initParamList(); // maybe require change of parameter menu
00368                    guiControl.colorScalePane.setColorScale();
00369                    guiControl.displayPane.setDisplayColors();
00370                    guiControl.displayPane.refreshDisplay();
00371                    listTestResults();
00372                    break;
00373                  case DisplayStatus.IV_DATA:
00374                    if(thisTable!=0) return; // only interest in changes to the first table 
00375                    if(objectNames[0]!=null && objectNames[0].size()>0) ivTestSelection = new IVTestSelection((String)objectNames[0].elementAt(minRow));
00376                    guiControl.selectorPane.initParamList(); // maybe require change of parameter menu
00377                    guiControl.colorScalePane.setColorScale();
00378                    guiControl.displayPane.setDisplayColors();
00379                    guiControl.displayPane.refreshDisplay();
00380                    listTestResults();
00381                    break;
00382                   default:
00383                  }
00384             }
00385 
00386     public TestSelection getTestSelection() {
00387            return testSelection;
00388            }
00389     public IVTestSelection getIVTestSelection() {
00390            return ivTestSelection;
00391            }
00392 
00393     public void listISObjects(ModuleCell thisCell) {
00394        String title = "No module selected";
00395 
00396        if(thisCell!=null) {
00397             title =guiControl.selectorPane.getDisplayParameter()+" for "+thisCell.getSerialNo();
00398             refresh1(getISTableList(thisCell),title);
00399             }
00400         }
00401 
00402     public Vector getISTableList(ModuleCell thisCell) {
00403 
00404        Vector theLine;
00405        java.util.SortedMap m = new java.util.TreeMap();
00406 
00407        if(thisCell!=null && testSelection!=null && testSelection.getRunScanRegex()!=null) {
00408        String thisSN = thisCell.getSerialNo();
00409        java.util.List isList = (java.util.List)guiControl.isInterface.isCounter.getModuleList(guiControl.selectorPane.getDisplayParameterIndex(),testSelection.getRunScanRegex(),thisSN,testSelection.isRetrievedData());
00410        if(isList==null) objectNames[1] = new Vector();
00411        else {
00412          objectNames[1] = new Vector(isList);
00413          for(int i=0;i<objectNames[1].size();i++) {
00414             String[] objectParts = ((String)objectNames[1].elementAt(i)).split("\\.");
00415             theLine = new Vector();
00416             String sn = objectParts[4];
00417             Integer runNo = Integer.valueOf(objectParts[2]);
00418             Integer scanNo = Integer.valueOf(objectParts[3]);
00419             String fname = objectParts[1];
00420             theLine.add(sn);
00421             theLine.add(runNo);
00422             theLine.add(scanNo);
00423             theLine.add(fname);
00424             m.put(new Integer(runNo.intValue()*10000 + scanNo.intValue()),theLine);
00425             }
00426           }
00427          }
00428          Vector tableContents = new Vector(m.values());
00429          theLine=new Vector();
00430          theLine.addElement("Serial No");
00431          theLine.addElement("Run No");
00432          theLine.addElement("Scan No");
00433          theLine.addElement("Data");
00434          tableContents.insertElementAt(theLine,0);
00435          return tableContents;
00436         }
00437 
00438 
00439      public void listTestResults() {
00440 
00441         int status = guiControl.displayStatus.getStatus();
00442         int displayParameter = guiControl.selectorPane.getDisplayParameterIndex();
00443         String testParameter = (displayParameter==2 && status!=DisplayStatus.DCS_DATA) ? guiControl.selectorPane.getOption() : guiControl.selectorPane.getDisplayParameter();
00444         if(status==DisplayStatus.IV_DATA) {
00445               if(ivTestSelection==null) return;
00446               switch(displayParameter) {
00447                 case 1:
00448                  testParameter = guiControl.selectorPane.getIVParameter();
00449                  break;
00450                 case 2:                 
00451                  testParameter = guiControl.selectorPane.getOption();
00452                  break;
00453                 default:
00454                  testParameter = guiControl.selectorPane.getDisplayParameter();
00455                 }
00456               }
00457         else if((status!=DisplayStatus.DCS_DATA && status!=DisplayStatus.PROBE_DATA) && testSelection==null) return;
00458 
00459         java.util.Set moduleList = guiControl.config.getSortedVector(guiControl.displayPane.getSCTView());
00460         int index = guiControl.selectorPane.getMouseClickIndex();
00461         Vector theLine = new Vector();
00462         Vector table = new Vector();
00463         Vector objectsVector = new Vector();
00464         theLine.addElement("Serial No");
00465         switch(status) {
00466            case DisplayStatus.SCTDB_DATA:
00467             theLine.addElement("Location");
00468             theLine.addElement("Date");
00469             break;
00470            case DisplayStatus.SCTDB_RODDAQ_DATA:
00471               theLine.addElement("Date");
00472              break;
00473            default:
00474            }
00475         theLine.addElement(testParameter);
00476         table.addElement(theLine);
00477 
00478         SummaryReader.Test testResult;
00479 
00480         for (java.util.Iterator i = moduleList.iterator(); i.hasNext(); ) {
00481            String thisSN=(String)i.next();
00482 
00483                  ModuleCell thisCell = (ModuleCell)guiControl.config.getModuleCell(guiControl.displayPane.getSCTView(),thisSN);
00484                  theLine=new Vector();
00485                  theLine.addElement(thisSN);
00486 
00487                  switch(status) {
00488                    case DisplayStatus.SCTDB_DATA:
00489                      if(testSelection.getSCTDBObjectHeader()==null) continue;
00490                      testResult = guiControl.isInterface.getSCTDBTest(testSelection.getSCTDBObjectHeader()+thisSN);
00491                      if(testResult==null) {
00492                        theLine.addElement(" - ");
00493                        theLine.addElement(" - ");
00494                        }
00495                      else {
00496                        theLine.addElement(testResult.getDAQInfo().get(SummaryReader.DAQInfo.LOCATION));
00497                        theLine.addElement(testResult.getDAQInfo().get(SummaryReader.DAQInfo.DATE));
00498                        }
00499                      break;
00500                    case DisplayStatus.SCTDB_RODDAQ_DATA:
00501                      testResult = guiControl.isInterface.getSCTDBTest(testSelection.getSCTDBRodDaqObjectHeader()+thisSN);
00502                      if(testResult==null) theLine.addElement(" - ");
00503                      else theLine.addElement(testResult.getDAQInfo().get(SummaryReader.DAQInfo.DATE));
00504                      break;
00505                    default:
00506                    }
00507 
00508                  ColorScale thisColorScale;
00509                  if((thisColorScale = guiControl.colorScalePane.getColorScale())!=null) theLine.addElement(thisColorScale.getLabel(thisCell.getData()));
00510                  else theLine.addElement("No Data");
00511                  table.addElement(theLine);
00512                  }      
00513           String title = (status==DisplayStatus.TEST_DATA && guiControl.displayPane.getDisplayOption()==2) ? testParameter+" Comparisons" : testParameter+" Results ";
00514           refresh1(objectsVector,table,title);     
00515          }   
00516 
00517     public void updateTables(boolean keepSelections) {
00518          changeTables(keepSelections);
00519          }
00520     public void updateTables() {
00521          changeTables(!guiControl.menuBar.autoSelectMode.isSelected());
00522          }
00523 
00524     private void changeTables(boolean keepSelections) {
00525 
00526       testSelection=null;
00527       ivTestSelection=null;
00528 
00529       Vector theLine = new Vector();
00530       int table0Select=-1;
00531       int table1Select=-1;
00532       String selectedObject0 = getSelectedObject(0);
00533       String selectedObject1 = getSelectedObject(1);
00534       if(keepSelections) {
00535         table0Select = (selectedObject0!=null) ? objectNames[0].indexOf(selectedObject0) : -1;
00536         }
00537       table1Select = (selectedObject1!=null) ? objectNames[1].indexOf(selectedObject1) : -1;
00538         
00539       String title0=null;
00540       String title1=null;
00541       Vector[] tableContents = new Vector[2];
00542       tableContents[0] = new Vector();
00543       tableContents[1] = new Vector();
00544 
00545       int previousSelection = keepSelections ? getSelectedTest() : -1;
00546 
00547       int view = guiControl.displayPane.getSCTView();
00548       int displayStatus = guiControl.displayStatus.getStatus();
00549 
00550       switch(displayStatus) {
00551           case DisplayStatus.MODULE_GROUP_SELECTION :
00552              title0 = "ModuleGroups";
00553              String option = guiControl.selectorPane.getOption();
00554              title1 = (option!=null) ? option+" modules" : null;
00555              theLine.addElement("Serial No");
00556              String title = (view<4) ? "Row" : "Quadrant";
00557              theLine.addElement(title);
00558              theLine.addElement("Posn");
00559              theLine.addElement("MUR");
00560              tableContents[1].addElement(theLine);
00561              theLine = new Vector();
00562              theLine.addElement("Group");
00563              theLine.addElement("# Modules");
00564              tableContents[0].addElement(theLine);
00565 
00566              java.util.Set moduleList = guiControl.config.getSortedVector(view);
00567              java.util.Map groupCounts = new java.util.HashMap();
00568 
00569              int selectedGroup = guiControl.selectorPane.getMouseClickIndex();
00570              table0Select = selectedGroup;
00571              for (java.util.Iterator i = moduleList.iterator(); i.hasNext(); ) {
00572                String thisSN=(String)i.next();
00573                ModuleCell thisCell = (ModuleCell)guiControl.config.getModuleCell(view,thisSN);
00574                int thisGroup = thisCell.getModuleGroup();
00575                if(thisGroup<0) continue;
00576 
00577                Integer iThisGroup = new Integer(thisGroup);
00578                Integer c;
00579                if((c = (Integer)groupCounts.get(iThisGroup))==null) groupCounts.put(iThisGroup,new Integer(1));
00580                else groupCounts.put(iThisGroup,new Integer(c.intValue()+1));
00581 
00582                if(thisGroup!=selectedGroup) continue;
00583                theLine = new Vector();
00584                theLine.addElement(thisSN);
00585                if(view<4) {
00586                     theLine.addElement(Integer.toString(thisCell.getRow()));
00587                     theLine.addElement(Integer.toString(thisCell.getPosition()));
00588                     }
00589                else {
00590                     theLine.addElement(thisCell.getQuadrant());
00591                     theLine.addElement(thisCell.getEndCapPosition());
00592                     }
00593 
00594                theLine.addElement(Integer.toString(thisCell.getMUR()));
00595                tableContents[1].addElement(theLine);
00596                }
00597                for(int i=0;i<8;i++) {
00598                   theLine = new Vector();
00599                   theLine.addElement("ModuleGroup "+i);
00600                   Integer c;
00601                   if((c=(Integer)groupCounts.get(new Integer(i)))==null) theLine.addElement(new Integer(0));
00602                   else theLine.addElement(c);
00603                   tableContents[0].addElement(theLine);
00604                   }
00605              break;
00606            case DisplayStatus.IS_MONITOR:
00607                title0 = "Tests";
00608                title1 = guiControl.selectorPane.getDisplayParameter();
00609                tableContents[1] = getISTableList(guiControl.displayPane.getLastClickedCell());
00610                tableContents[0] = getTestTableList();             
00611                break;
00612            case DisplayStatus.IV_DATA:
00613                title0 = "IV scans";
00614                title1 = "IV Data";
00615                tableContents[0] = getIVScanList();
00616                theLine = new Vector();
00617                theLine.addElement("Serial No");
00618                theLine.addElement(guiControl.selectorPane.getIVParameter());
00619                tableContents[1].addElement(theLine);
00620                break;
00621            case DisplayStatus.TEST_DATA:
00622            case DisplayStatus.SCTDB_DATA:
00623            case DisplayStatus.SCTDB_RODDAQ_DATA:
00624                int testType = guiControl.isInterface.getListFilterIndex();
00625                title0 = (testType==-1) ? "Number of Tests " : "Number of "+testMenuNames[testType]+" Tests ";
00626                String testParameter = guiControl.selectorPane.getDisplayParameter();
00627                title1 = testParameter+ " Results";
00628                theLine = new Vector();
00629                theLine.addElement("Serial No");
00630                theLine.addElement(testParameter);
00631                tableContents[1].addElement(theLine);
00632                tableContents[0]=getTestTableList();
00633                if(tableContents[0].size()>1) {
00634                      if(previousSelection<=tableContents[0].size()-2 && previousSelection>=0) table0Select=previousSelection;
00635                      else table0Select=tableContents[0].size()-2; // remember titles!!   
00636                      }
00637 
00638                break;
00639            case DisplayStatus.DCS_DATA:
00640                table0Select=-1;
00641                table1Select=-1;
00642                title0 = "Server Info";
00643                title1 = guiControl.selectorPane.getDisplayParameter()+ " Data";
00644                theLine = new Vector();
00645                theLine.addElement("Serial No");
00646                theLine.addElement(guiControl.selectorPane.getDisplayParameter());
00647                tableContents[1].addElement(theLine);
00648                theLine = new Vector();
00649                theLine.addElement("Server");
00650                theLine.addElement("Last Update");
00651                tableContents[0].addElement(theLine);
00652                theLine = new Vector();
00653                theLine.addElement(Preferences.PreferencesInterface.getInstance().getPreference(Preferences.PreferencesInterface.DCS_SERVER_NAME));
00654                theLine.addElement(guiControl.isInterface.isRequestBuffer.getLastUpdateTime());
00655                tableContents[0].addElement(theLine);
00656                break;
00657            case DisplayStatus.PROBE_DATA:
00658                table0Select=-1;
00659                table1Select=-1;
00660                title0 = "Module Probe Counts";
00661                title1 = "Module Probe Data";
00662                theLine = new Vector();
00663                theLine.addElement("Serial No");
00664                theLine.addElement(guiControl.selectorPane.getOption());
00665                tableContents[1].addElement(theLine);
00666                tableContents[0] = SctApiInfo.getInstance().getCountVector();
00667                break;
00668            default:
00669                guiControl.displayPane.refreshDisplay();
00670                return;
00671               }     
00672         boolean dontSelect = (displayStatus==DisplayStatus.DCS_DATA || displayStatus==DisplayStatus.PROBE_DATA);
00673         if(table0Select==-1 && tableContents[0].size()>1 && !dontSelect) table0Select=tableContents[0].size()-2; // remember titles!!
00674         if(table1Select==-1 && tableContents[1].size()>1 && !dontSelect) table1Select=tableContents[1].size()-2; // remember titles!!
00675         refresh(tableContents,table0Select,table1Select);
00676         setTableTitles(title0,title1);
00677 
00678         if(getSelectedTest()==-1) {  // no test now selected, so need to update display manually (otherwise selection listener would do it)
00679 //              guiControl.isInterface.setTestFilter(null);
00680               testSelection=null;
00681               ivTestSelection=null;
00682               guiControl.displayPane.setDisplayColors();
00683               guiControl.displayPane.refreshDisplay();
00684               guiControl.selectorPane.initParamList();
00685                }
00686 // for DCS, there is no selection in the test table that will fill the bottom table, so do it here manually
00687         if(displayStatus==DisplayStatus.DCS_DATA || displayStatus==DisplayStatus.PROBE_DATA) {
00688               testSelection=null;
00689               ivTestSelection=null;
00690               guiControl.displayPane.setDisplayColors();
00691               guiControl.displayPane.refreshDisplay();
00692               listTestResults();
00693               }
00694     }
00695 
00696     public void setTestTable(Vector ISTests) {
00697            objectNames[0] = ISTests;
00698            updateTables(true);
00699            }
00700     public void addNewTest(String theObjectName) {
00701            if(objectNames[0]==null) return;
00702            if(!objectNames[0].contains(theObjectName)) objectNames[0].addElement(theObjectName);
00703            }
00704     public void removeTest(String theObjectName) {
00705            if(objectNames[0].contains(theObjectName)) {
00706                 objectNames[0].removeElement(theObjectName);
00707                 updateTables(true);
00708                 }
00709            }
00710 
00711    public Vector getTestTableList() {
00712 // generate the test table list ordered by run numer and scan number
00713        Vector theLine = new Vector();        // each line of the table
00714        Vector tableContent = new Vector();   // vector of table lines
00715        Vector orderVector = new Vector();      // vector for re-ordering based on runno and scanno
00716        Hashtable orderHash = new Hashtable();// hashtable to map order runno/scanno to table lines
00717        Hashtable objectOrderHash = new Hashtable();
00718        
00719        boolean isSCTDBSctRodDaqData = (guiControl.displayStatus.getStatus()==DisplayStatus.SCTDB_RODDAQ_DATA);
00720 
00721        theLine.addElement("Test");
00722        theLine.addElement(isSCTDBSctRodDaqData ? "Locn" : "Status");
00723        theLine.addElement("Run");
00724        theLine.addElement("Scan");
00725        theLine.addElement("#Scans");
00726        theLine.addElement("Source");
00727        tableContent.addElement(theLine);
00728        int exceptionCount=0;
00729        for(int i=0;i<objectNames[0].size();i++) {
00730            String thisObject = (String)objectNames[0].elementAt(i);
00731            TestData testData = new TestData(); 
00732            try {
00733            is.getRepository().getValue(thisObject, testData); 
00734            theLine=new Vector();
00735            if(testData.testName.equals("NPtGainTest") && testData.nScans==3) testData.testName = "3PtGainTest";
00736            theLine.addElement(testData.testName);
00737            if(!isSCTDBSctRodDaqData) {
00738               switch(testData.status) {
00739                  case 0:
00740                    theLine.addElement("Executing");
00741                    break;
00742                case 1:
00743                  theLine.addElement("Completed");
00744                  break;
00745                case 2:
00746                  theLine.addElement("Aborted");
00747                  break;
00748                default:
00749                  theLine.addElement("Unknown");
00750                }
00751            }
00752            else {
00753               java.util.regex.Matcher matcher = ISInterface.SctRodDaqRefPattern.matcher(thisObject);
00754               theLine.addElement(matcher.matches() ? thisObject.substring(matcher.start(ISInterface.LOCATION),matcher.end(ISInterface.LOCATION)) : "Unknown");
00755               }
00756 
00757            theLine.addElement(new Integer(testData.runNumber));
00758            theLine.addElement(new Integer(testData.startScanNumber));
00759            theLine.addElement(new Integer(testData.nScans));
00760 
00761            int offsetCount = (thisObject.matches("RetrievedData.*")) ? 0 : 100000000;
00762            Integer runScanNumber = new Integer(testData.runNumber*10000 + testData.startScanNumber +offsetCount); 
00763 
00764            if(thisObject.matches("RetrievedData.*")) theLine.addElement("Archive");
00765            else if(thisObject.matches("SCTDBData.*")) theLine.addElement("SCTDB");
00766            else theLine.addElement("New");        
00767 
00768            orderVector.addElement(runScanNumber);
00769            orderHash.put(runScanNumber,theLine);
00770            objectOrderHash.put(runScanNumber,thisObject);
00771            }catch(Exception e){exceptionCount++;}
00772 
00773            }
00774 
00775        Collections.sort(orderVector);
00776        objectNames[0]=new Vector();
00777        for(int i=0;i<orderVector.size();i++) {
00778             Integer runscan= (Integer)orderVector.elementAt(i);
00779             objectNames[0].addElement((String)objectOrderHash.get(orderVector.elementAt(i)));          // re-order object names appropriately
00780             tableContent.addElement((Vector)orderHash.get(orderVector.elementAt(i))); // and the same for the table entries
00781             }
00782        if(exceptionCount>0) System.err.println("SctGUI::TablesDisplayPane - exception reading retrieving IS data.");
00783        return tableContent;
00784     }
00785 
00786    public Vector getIVScanList() {
00787 // generate the test table list ordered by run numer and scan number
00788        Vector theLine = new Vector();        // each line of the table
00789        Vector tableContent = new Vector();   // vector of table lines
00790        Vector orderVector = new Vector();      // vector for re-ordering based on runno and scanno
00791        Hashtable orderHash = new Hashtable();// hashtable to map order runno/scanno to table lines
00792        Hashtable objectOrderHash = new Hashtable();
00793 
00794        theLine.addElement("Run");
00795        theLine.addElement("Scan");
00796        theLine.addElement("Date");
00797        theLine.addElement("Time");
00798        theLine.addElement("#Modules");
00799        theLine.addElement("Source");
00800        tableContent.addElement(theLine);
00801        for(int i=0;i<objectNames[0].size();i++) {
00802            String thisObject = (String)objectNames[0].elementAt(i);
00803            IVScanControl iv = new IVScanControl();
00804            is.getRepository().getValue(thisObject, iv); 
00805            theLine=new Vector();
00806            theLine.addElement(new Integer(iv.runNo));
00807            theLine.addElement(new Integer(iv.scanNo));
00808            theLine.addElement(iv.scanDate);
00809            theLine.addElement(iv.scanTime);
00810            theLine.addElement(new Integer(iv.modules.length));
00811 
00812            int offsetCount = (thisObject.matches("RetrievedData.*")) ? 0 : 100000000;
00813            Integer runScanNumber = new Integer(iv.runNo*10000 + iv.scanNo +offsetCount); 
00814 
00815            if(thisObject.matches("SCTDBData.*")) theLine.addElement("SCTDB");
00816            else theLine.addElement("DCS");        
00817 
00818            orderVector.addElement(runScanNumber);
00819            orderHash.put(runScanNumber,theLine);
00820            objectOrderHash.put(runScanNumber,thisObject);
00821 
00822            }
00823 
00824        Collections.sort(orderVector);
00825        objectNames[0]=new Vector();
00826        for(int i=0;i<orderVector.size();i++) {
00827             Integer runscan= (Integer)orderVector.elementAt(i);
00828             objectNames[0].addElement((String)objectOrderHash.get(orderVector.elementAt(i)));          // re-order object names appropriately
00829             tableContent.addElement((Vector)orderHash.get(orderVector.elementAt(i))); // and the same for the table entries
00830             }
00831        return tableContent;
00832     }
00833 
00834     public void updateTest(String testObjectName) {
00835            if(objectNames[0]==null) return;
00836            if(!objectNames[0].contains(testObjectName)) return;
00837            int rowNumber=objectNames[0].indexOf(testObjectName);
00838            try {
00839            TestData testData = new TestData(); 
00840            Sct.IS.SctNames.getISRepository().getValue(testObjectName, testData); 
00841            switch(testData.status) {
00842                case 0:
00843                  resultTable[0].setValueAt("Executing",rowNumber,1);
00844                  break;
00845                case 1:
00846                  resultTable[0].setValueAt("Completed",rowNumber,1);
00847                  break;
00848                case 2:
00849                  resultTable[0].setValueAt("Aborted",rowNumber,1);
00850                  break;
00851                default:
00852                  resultTable[0].setValueAt("Unknown",rowNumber,1);
00853                }
00854              resultTable[0].fireTableCellUpdated(rowNumber,1);
00855              if(testData.status==1 && guiControl.menuBar.autoUploadIsEnabled() && !testData.testName.equals("NMaskTest")) {
00856                     UploadManager upload = new UploadManager(guiControl);  // upload the data!
00857                     }
00858             }catch(Exception updateE){System.err.println("***ERROR updating test status in table list : "+updateE.toString());}
00859            
00860          }
00861 
00862     public void updateTestTable(String testObjectName, int rowNumber) {
00863            if(rowNumber==-1) return;
00864            try {
00865            TestData testData = new TestData(); 
00866            Sct.IS.SctNames.getISRepository().getValue(testObjectName, testData); 
00867            switch(testData.status) {
00868                case 0:
00869                  resultTable[0].setValueAt("Executing",rowNumber,1);
00870                  break;
00871                case 1:
00872                  resultTable[0].setValueAt("Completed",rowNumber,1);
00873                  break;
00874                case 2:
00875                  resultTable[0].setValueAt("Aborted",rowNumber,1);
00876                  break;
00877                default:
00878                  resultTable[0].setValueAt("Unknown",rowNumber,1);
00879                }
00880              resultTable[0].fireTableCellUpdated(rowNumber,1);
00881             }catch(Exception updateE){System.err.println("***ERROR updating test status in table list : "+updateE.toString());}
00882          }
00883 
00884 
00885     class tables1MouseAdapter extends java.awt.event.MouseAdapter {
00886             public void mouseClicked(java.awt.event.MouseEvent e) {
00887                switch(e.getModifiers()) {
00888                  case java.awt.event.InputEvent.BUTTON2_MASK:
00889                  case java.awt.event.InputEvent.BUTTON3_MASK:
00890                        int rowSelect = table[1].rowAtPoint(new java.awt.Point(e.getX(),e.getY()));
00891                        rowSM[1].setSelectionInterval(rowSelect,rowSelect);
00892                        if(rowSelect<0) return;
00893                        guiControl.menuBar.setSelectedSerialNo((String)resultTable[1].getValueAt(rowSelect,0));
00894                        guiControl.menuBar.showTablesPopupMenu(1,e);
00895                        break;
00896                  default:
00897                  }
00898             }
00899     }
00900     class tables0MouseAdapter extends java.awt.event.MouseAdapter {
00901             public void mouseClicked(java.awt.event.MouseEvent e) {
00902                switch(e.getModifiers()) {
00903                  case java.awt.event.InputEvent.BUTTON2_MASK:
00904                  case java.awt.event.InputEvent.BUTTON3_MASK:
00905                        int rowSelect = table[0].rowAtPoint(new java.awt.Point(e.getX(),e.getY()));
00906                        rowSM[0].setSelectionInterval(rowSelect,rowSelect);  
00907                        guiControl.menuBar.showTablesPopupMenu(0,e);
00908                        break;
00909                  default:
00910                  }
00911             }
00912     }
00913     public void checkForRetrievedObjects() {
00914          checkForRetrievedObjects(-1);
00915          }
00916 
00917     public void checkForRetrievedObjects(int serverIndex) {
00918          if(testSelection==null || !testSelection.isRetrievedData()) return;
00919          if(serverIndex==-1) serverIndex = guiControl.selectorPane.getDisplayParameterIndex();
00920          if(guiControl.isInterface.isCounter.archivedObjectsRetrievedOk(serverIndex,testSelection.getRunScanRegex())) return;
00921          System.out.println("SctGUI - Retrieving archived data files...");
00922          String oName;
00923          switch(serverIndex) {
00924                           case 1:
00925                               oName = "SctData::FitScanResult";
00926                               break;
00927                           case 2:
00928                               oName = "SctData::*TestResult";
00929                               break;
00930                           default:
00931                               oName = "SctData::RawScanResult";
00932                               }
00933                       
00934          try {
00935 //           System.out.println("retrieve("+testSelection.getRunNo()+","+testSelection.getScanNo()+","+oName+","+"*"+")");
00936            ArchivingServiceI.ArchivingServiceInterface a = SystemInterface.getInstance().getArchivingService(); 
00937            int scan=testSelection.getScanNo(); 
00938            if(serverIndex==2) a.retrieve(Integer.toString(testSelection.getRunNo()),Integer.toString(scan),oName,"*");
00939            else {
00940                for(int i = 0;i<testSelection.getNoScans();i++) a.retrieve(Integer.toString(testSelection.getRunNo()),Integer.toString(scan+i),oName,"*");
00941                }
00942          }catch(Exception e2) {System.err.println("SctGUI::TablesDisplayPane - Exception from retrieving from ArchiveService: "+e2.toString());}
00943 
00944               }
00945 
00946 
00947 
00948     
00949 }
00950 

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