00001
00002
00003
00004
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());
00082 table[1].addMouseListener(new tables1MouseAdapter());
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());
00144 jScrollPane2.addMouseListener(new tables1MouseAdapter());
00145
00146 }
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) {
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
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
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
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
00301 if(thisTable==0) guiControl.isInterface.removeTests(objectNames[0],minRow,maxRow);
00302
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();
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;
00324 if(objectNames[0]!=null && objectNames[0].size()>0) testSelection = new TestSelection((String)objectNames[0].elementAt(minRow),guiControl.isInterface.getLocation());
00325
00326 guiControl.selectorPane.initParamList();
00327
00328 if(testSelection.isRetrievedData()) checkForRetrievedObjects(2);
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;
00338 if(objectNames[0]!=null && objectNames[0].size()>0) testSelection = new TestSelection((String)objectNames[0].elementAt(minRow),guiControl.isInterface.getLocation());
00339
00340 guiControl.selectorPane.initParamList();
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;
00348 if(objectNames[0]!=null && objectNames[0].size()>0) ivTestSelection = new IVTestSelection((String)objectNames[0].elementAt(minRow));
00349 guiControl.selectorPane.initParamList();
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;
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;
00631 if(table1Select==-1 && tableContents[1].size()>1) table1Select=tableContents[1].size()-2;
00632 refresh(tableContents,table0Select,table1Select);
00633 setTableTitles(title0,title1);
00634
00635 if(getSelectedTest()==-1) {
00636
00637 testSelection=null;
00638 ivTestSelection=null;
00639 guiControl.displayPane.setDisplayColors();
00640 guiControl.displayPane.refreshDisplay();
00641 guiControl.selectorPane.initParamList();
00642 }
00643
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
00670 Vector theLine = new Vector();
00671 Vector tableContent = new Vector();
00672 Vector orderVector = new Vector();
00673 Hashtable orderHash = new Hashtable();
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)));
00728 tableContent.addElement((Vector)orderHash.get(orderVector.elementAt(i)));
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
00736 Vector theLine = new Vector();
00737 Vector tableContent = new Vector();
00738 Vector orderVector = new Vector();
00739 Hashtable orderHash = new Hashtable();
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)));
00777 tableContent.addElement((Vector)orderHash.get(orderVector.elementAt(i)));
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);
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
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