ProbeView.java

00001 package GuiComponents.SctApi;
00002 
00003 import javax.swing.*;
00004 import java.awt.*;
00005 import java.awt.event.*;
00006 import javax.swing.table.TableModel;
00007 import javax.swing.table.TableColumn;
00008 import javax.swing.table.JTableHeader;
00009 
00010 import GuiComponents.System.SystemInterface;
00011 
00012 public class ProbeView extends JPanel {
00013     Sct_SctApi.SctApiIPC api;
00014 
00015 
00016     int partition;
00017     int crate;
00018     int rod;
00019 
00020     ResultsTableModel tableModel;
00021     
00022     short [] results;
00023     short [][] scanResults;
00024 
00025     public ProbeView(int p, int c, int r, Sct_SctApi.SctApiIPC a) {
00026         partition = p;
00027         crate = c;
00028         rod = r;
00029         api = a;
00030 
00031         tableModel = new ProbeView.ResultsTableModel();
00032         results = api.probeHarness(partition, crate, rod, 0);
00033         scanResults = new short[0][0];
00034         initComponents();
00035         modifyComponents();
00036     }
00037 
00038     // For beanability
00039     public ProbeView() {
00040         initComponents();
00041         results = api.probeHarness(0, 0, 0, 0);
00042         modifyComponents();
00043     }
00044 
00045     public void modifyComponents() {
00046         updateResultsPanel();
00047 
00048         int columnWidth = jTable1.getFontMetrics(jTable1.getFont()).stringWidth("mmmmmm");
00049 
00050         // Enough to see "link 48"
00051         TableColumn column = jTable1.getColumnModel().getColumn(0);
00052         column.setPreferredWidth(columnWidth * 8);
00053     }
00054 
00060     private void initComponents() {//GEN-BEGIN:initComponents
00061         jPanel2 = new javax.swing.JPanel();
00062         jPanel5 = new javax.swing.JPanel();
00063         jLabel3 = new javax.swing.JLabel();
00064         jTextField2 = new javax.swing.JTextField();
00065         jLabel4 = new javax.swing.JLabel();
00066         jTextField3 = new javax.swing.JTextField();
00067         jLabel5 = new javax.swing.JLabel();
00068         jTextField4 = new javax.swing.JTextField();
00069         jLabel7 = new javax.swing.JLabel();
00070         harnessValue = new javax.swing.JTextField();
00071         jPanel6 = new javax.swing.JPanel();
00072         jButton1 = new javax.swing.JButton();
00073         checkCharsText = new javax.swing.JTextField();
00074         checkProbePerformed = new javax.swing.JButton();
00075         performHardReset = new javax.swing.JButton();
00076         jPanel1 = new javax.swing.JPanel();
00077         jButton4 = new javax.swing.JButton();
00078         jTabbedPane1 = new javax.swing.JTabbedPane();
00079         resultsPanel = new javax.swing.JPanel();
00080         jPanel3 = new javax.swing.JPanel();
00081         jPanel4 = new javax.swing.JPanel();
00082         jLabel1 = new javax.swing.JLabel();
00083         jComboBox1 = new javax.swing.JComboBox();
00084         jButton2 = new javax.swing.JButton();
00085         jScrollPane1 = new javax.swing.JScrollPane();
00086         jTable1 = new javax.swing.JTable();
00087         jPanel7 = new javax.swing.JPanel();
00088         jPanel8 = new javax.swing.JPanel();
00089         jLabel2 = new javax.swing.JLabel();
00090         jComboBox2 = new javax.swing.JComboBox();
00091         jLabel6 = new javax.swing.JLabel();
00092         jComboBox3 = new javax.swing.JComboBox();
00093         loopbackTestPerform = new javax.swing.JButton();
00094         jScrollPane2 = new javax.swing.JScrollPane();
00095         jTable2 = new javax.swing.JTable();
00096 
00097         setLayout(new java.awt.BorderLayout());
00098 
00099         jPanel2.setLayout(new javax.swing.BoxLayout(jPanel2, javax.swing.BoxLayout.Y_AXIS));
00100 
00101         jPanel5.setLayout(new javax.swing.BoxLayout(jPanel5, javax.swing.BoxLayout.X_AXIS));
00102 
00103         jLabel3.setText("Partition");
00104         jPanel5.add(jLabel3);
00105 
00106         jTextField2.setEditable(false);
00107         jTextField2.setText(new Integer(getPartition()).toString());
00108         jPanel5.add(jTextField2);
00109 
00110         jLabel4.setText("Crate");
00111         jPanel5.add(jLabel4);
00112 
00113         jTextField3.setEditable(false);
00114         jTextField3.setText(new Integer(getCrate()).toString());
00115         jPanel5.add(jTextField3);
00116 
00117         jLabel5.setText("ROD");
00118         jPanel5.add(jLabel5);
00119 
00120         jTextField4.setEditable(false);
00121         jTextField4.setText(new Integer(getRod()).toString());
00122         jPanel5.add(jTextField4);
00123 
00124         jLabel7.setText("Harness");
00125         jPanel5.add(jLabel7);
00126 
00127         harnessValue.setText("0");
00128         jPanel5.add(harnessValue);
00129 
00130         jPanel2.add(jPanel5);
00131 
00132         jPanel6.setLayout(new javax.swing.BoxLayout(jPanel6, javax.swing.BoxLayout.X_AXIS));
00133 
00134         jButton1.setText("Probe");
00135         jButton1.addActionListener(new java.awt.event.ActionListener() {
00136             public void actionPerformed(java.awt.event.ActionEvent evt) {
00137                 probeButtonPerformed(evt);
00138             }
00139         });
00140 
00141         jPanel6.add(jButton1);
00142 
00143         checkCharsText.setText("2E");
00144         jPanel6.add(checkCharsText);
00145 
00146         checkProbePerformed.setText("Check Modules Probe");
00147         checkProbePerformed.addActionListener(new java.awt.event.ActionListener() {
00148             public void actionPerformed(java.awt.event.ActionEvent evt) {
00149                 checkProbePerformedActionPerformed(evt);
00150             }
00151         });
00152 
00153         jPanel6.add(checkProbePerformed);
00154 
00155         performHardReset.setText("Perform Hard Reset");
00156         performHardReset.addActionListener(new java.awt.event.ActionListener() {
00157             public void actionPerformed(java.awt.event.ActionEvent evt) {
00158                 performHardResetActionPerformed(evt);
00159             }
00160         });
00161 
00162         jPanel6.add(performHardReset);
00163 
00164         jPanel2.add(jPanel6);
00165 
00166         add(jPanel2, java.awt.BorderLayout.NORTH);
00167 
00168         jPanel1.setOpaque(false);
00169         jButton4.setText("Close");
00170         jButton4.addActionListener(new java.awt.event.ActionListener() {
00171             public void actionPerformed(java.awt.event.ActionEvent evt) {
00172                 closeButtonPerformed(evt);
00173             }
00174         });
00175 
00176         jPanel1.add(jButton4);
00177 
00178         add(jPanel1, java.awt.BorderLayout.SOUTH);
00179 
00180         resultsPanel.setLayout(new javax.swing.BoxLayout(resultsPanel, javax.swing.BoxLayout.Y_AXIS));
00181 
00182         jTabbedPane1.addTab("Single Probe", resultsPanel);
00183 
00184         jPanel3.setLayout(new java.awt.BorderLayout());
00185 
00186         jPanel4.setLayout(new javax.swing.BoxLayout(jPanel4, javax.swing.BoxLayout.X_AXIS));
00187 
00188         jLabel1.setText("Scan type");
00189         jPanel4.add(jLabel1);
00190 
00191         jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "default", "Loopback Scan" }));
00192         jPanel4.add(jComboBox1);
00193 
00194         jButton2.setText("Perform scan");
00195         jButton2.addActionListener(new java.awt.event.ActionListener() {
00196             public void actionPerformed(java.awt.event.ActionEvent evt) {
00197                 performScanActionPerformed(evt);
00198             }
00199         });
00200 
00201         jPanel4.add(jButton2);
00202 
00203         jPanel3.add(jPanel4, java.awt.BorderLayout.NORTH);
00204 
00205         jTable1.setFont(new java.awt.Font("Monospaced", 0, 12));
00206         jTable1.setModel(getScanResultsTableModel());
00207         jScrollPane1.setViewportView(jTable1);
00208 
00209         jPanel3.add(jScrollPane1, java.awt.BorderLayout.CENTER);
00210 
00211         jTabbedPane1.addTab("Probe Scan", jPanel3);
00212 
00213         jPanel7.setLayout(new java.awt.BorderLayout());
00214 
00215         jPanel8.setLayout(new javax.swing.BoxLayout(jPanel8, javax.swing.BoxLayout.X_AXIS));
00216 
00217         jLabel2.setText("Scan type");
00218         jPanel8.add(jLabel2);
00219 
00220         jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "default", "Loopback Scan" }));
00221         jPanel8.add(jComboBox2);
00222 
00223         jLabel6.setText("Select Line");
00224         jPanel8.add(jLabel6);
00225 
00226         jComboBox3.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Normal", "Redundant" }));
00227         jPanel8.add(jComboBox3);
00228 
00229         loopbackTestPerform.setText("Perform scan");
00230         loopbackTestPerform.addActionListener(new java.awt.event.ActionListener() {
00231             public void actionPerformed(java.awt.event.ActionEvent evt) {
00232                 loopbackTestPerformActionPerformed(evt);
00233             }
00234         });
00235 
00236         jPanel8.add(loopbackTestPerform);
00237 
00238         jPanel7.add(jPanel8, java.awt.BorderLayout.NORTH);
00239 
00240         jTable2.setFont(new java.awt.Font("Monospaced", 0, 12));
00241         jTable2.setModel(getScanResultsTableModel());
00242         jScrollPane2.setViewportView(jTable2);
00243 
00244         jPanel7.add(jScrollPane2, java.awt.BorderLayout.CENTER);
00245 
00246         jTabbedPane1.addTab("Loopback test", jPanel7);
00247 
00248         add(jTabbedPane1, java.awt.BorderLayout.CENTER);
00249 
00250     }//GEN-END:initComponents
00251 
00252     private void performHardResetActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_performHardResetActionPerformed
00253 
00254         SystemInterface sys = SystemInterface.getInstance();
00255         sctConf.Configuration conf = sys.getConfigurationService();
00256 
00257         if(conf!=null){
00258 
00259           int partition = getPartition();
00260           int crate = getCrate();
00261           int rod = getRod();
00262           int harness;
00263 
00264           try {
00265               harness = Integer.parseInt(harnessValue.getText());
00266           } catch(NumberFormatException e) {
00267               harness = -1;
00268           }
00269 
00270           org.omg.CORBA.IntHolder murID        = new org.omg.CORBA.IntHolder();
00271           org.omg.CORBA.IntHolder ps_partition = new org.omg.CORBA.IntHolder();
00272           org.omg.CORBA.IntHolder ps_crate     = new org.omg.CORBA.IntHolder();
00273           org.omg.CORBA.IntHolder ps_channel   = new org.omg.CORBA.IntHolder();
00274 
00275           try{
00276               conf.getMapRODMUR(partition, crate, rod, harness, murID);
00277               conf.translateToPowerSupply(murID.value, 1, ps_partition, ps_crate, ps_channel);
00278           } catch(sctConf.ConfigurationException e) {
00279               ps_crate.value = -1;
00280               JOptionPane.showMessageDialog(null, "ProbeView was unable to determine which power supply crate houses the power supply we would need to tamper with in order to ddcHardResetAll all modules in partition,crate,rod=("+Integer.toString(partition)+", "+Integer.toString(crate)+", "+Integer.toString(rod)+"),");
00281           }
00282 
00283           if(ps_crate.value> -1) {
00284               Sct_SctApi.SctApiDDCServer apiDDC = SystemInterface.getInstance().getSctApiDDCServer();
00285               if (apiDDC!=null) {
00286                   apiDDC.ddcHardResetAll(ps_crate.value);
00287               } else {
00288                   JOptionPane.showMessageDialog(null, "ProbeView was unable to get hold of a valid SctApiDDCServer and as a result was unable to perform a ddcHardResetAll on ps.crate "+Integer.toString(ps_crate.value)+".  Is the SctApiDDCServer running as required?");
00289               };
00290           }
00291         } else {
00292             JOptionPane.showMessageDialog(null, "ProbeView was unable to get hold of a valid SctApiDDCServer and as a result was unable to perform a ddcHardResetAll on ps.crate as the config server could not be contacted.");
00293         };
00294 
00295     }//GEN-LAST:event_performHardResetActionPerformed
00296 
00297     private void loopbackTestPerformActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_loopbackTestPerformActionPerformed
00298         // Set up scan 
00299         Sct_SctApi.Scan probeScan = api.createScan();
00300         probeScan.getTrigger1().doubleL1A((short)10);
00301         probeScan.configure((short)20, 0.0, 24.0, 1.0);
00302         // Perform probe Scan
00303         try {
00304             scanResults = api.probeScanHarnessWithTrigger(getPartition(), getCrate(), getRod(), probeScan, 
00305                                                           Integer.parseInt(harnessValue.getText()));
00306             // updateLoopbackScanResults();
00307         } catch(NumberFormatException e) {
00308             javax.swing.JOptionPane.showMessageDialog(null, "Failed to interpet harness value");
00309         }
00310     }//GEN-LAST:event_loopbackTestPerformActionPerformed
00311 
00312     private void checkProbePerformedActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_checkProbePerformedActionPerformed
00313         try  {
00314             if(api.checkAllModulesProbe(checkCharsText.getText())) {
00315                 JOptionPane.showMessageDialog(null, "Check modules succeeded");
00316             } else {
00317                 JOptionPane.showMessageDialog(null, "Check modules failed, see MRS for details");
00318             }
00319         } catch(Sct_SctApi.SctApiException s) {
00320             JOptionPane.showMessageDialog(null, "Check modules aborted: " + s);
00321         }
00322     }//GEN-LAST:event_checkProbePerformedActionPerformed
00323 
00324     private void performScanActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_performScanActionPerformed
00325         // Set up scan 
00326         Sct_SctApi.Scan probeScan = api.createScan();
00327         probeScan.getTrigger1().doubleL1A((short)10);
00328         probeScan.configure((short)20, 0.0, 24.0, 1.0);
00329         // Perform probe Scan
00330         try {
00331             scanResults = api.probeScanHarnessWithTrigger(getPartition(), getCrate(), getRod(), probeScan, 
00332                                                           Integer.parseInt(harnessValue.getText()));
00333             updateScanResults();
00334         } catch(NumberFormatException e) {
00335             javax.swing.JOptionPane.showMessageDialog(null, "Failed to interpet harness value");
00336         }
00337     }//GEN-LAST:event_performScanActionPerformed
00338 
00339     private void probeButtonPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_probeButtonPerformed
00340         int partition = getPartition();
00341         int crate = getCrate();
00342         int rod = getRod();
00343         int harness;
00344         try {
00345             harness = Integer.parseInt(harnessValue.getText());
00346         } catch(NumberFormatException e) {
00347             harness = -1;
00348         }
00349 
00350         if(harness == -1) {
00351             results  = api.probe(partition, crate, rod);
00352         } else {
00353             results  = api.probeHarness(partition, crate, rod, harness);
00354         }
00355 
00356         updateResultsPanel();
00357     }//GEN-LAST:event_probeButtonPerformed
00358 
00359 
00360     private void closeButtonPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_closeButtonPerformed
00361         ((Window)getTopLevelAncestor()).dispose();
00362     }//GEN-LAST:event_closeButtonPerformed
00363 
00364     void updateResultsPanel() {
00365         resultsPanel.removeAll();
00366         for(int i=0; i<results.length; i++) {
00367             resultsPanel.add(new JLabel("" + (char)results[i] + "  "));
00368         }
00369 
00370         resultsPanel.invalidate();
00371         validate();
00372     }
00373 
00374     TableModel getScanResultsTableModel() {
00375         return tableModel;
00376     }
00377     
00378     void updateScanResults() {
00379         tableModel.newData();
00380     }
00381 
00382     public int getPartition() {
00383         return partition;
00384     }
00385 
00386     public int getCrate() {
00387         return crate;
00388     }
00389 
00390     public int getRod() {
00391         return rod;
00392     }
00393 
00394     class ResultsTableModel extends javax.swing.table.AbstractTableModel {
00395         public ResultsTableModel() {
00396         }
00397 
00398         public void newData() {
00399             fireTableStructureChanged();
00400         }
00401         
00402         public int getColumnCount() {
00403             return 1+scanResults.length;
00404         }
00405 
00406         public int getRowCount() {
00407             if(scanResults.length > 0) {
00408                 return scanResults[0].length;
00409             } else {
00410                 return 0;
00411             }
00412         }
00413 
00414         public Object getValueAt(int rowIndex, int columnIndex) {
00415             if(columnIndex == 0) {
00416                 return "Link " + rowIndex;
00417             } else {
00418                 return "" + (char)scanResults[columnIndex-1][rowIndex];
00419             }
00420         }
00421 
00422         public String getColumnName(int columnIndex) {
00423             String retValue;
00424             
00425             if(columnIndex == 0) {
00426                 retValue = "";
00427             } else {
00428                 columnIndex--;
00429                 retValue = "" + columnIndex;
00430             }
00431 
00432             return retValue;
00433         }
00434     }    
00435 
00436     class LoopbackResultsTableModel extends ResultsTableModel {
00437         public String getColumnName(int columnIndex) {
00438             if(columnIndex == 25) {
00439                 return "Pass/Fail";
00440             } else {
00441                 return ((ResultsTableModel)this).getColumnName(columnIndex);
00442             }
00443         }
00444 
00445         public Object getValueAt(int rowIndex, int columnIndex) {
00446             if(columnIndex == 25) {
00447                 for(int clk=0; clk<24; clk++) {
00448                     int i = (char)scanResults[clk][rowIndex];
00449                 }
00450 
00451                 return "Unimplemented";
00452             } else {
00453                 return ((ResultsTableModel)this).getValueAt(rowIndex, columnIndex);
00454             }
00455         }
00456 
00457     }
00458     
00459     // Variables declaration - do not modify//GEN-BEGIN:variables
00460     private javax.swing.JTextField checkCharsText;
00461     private javax.swing.JButton checkProbePerformed;
00462     private javax.swing.JTextField harnessValue;
00463     private javax.swing.JButton jButton1;
00464     private javax.swing.JButton jButton2;
00465     private javax.swing.JButton jButton4;
00466     private javax.swing.JComboBox jComboBox1;
00467     private javax.swing.JComboBox jComboBox2;
00468     private javax.swing.JComboBox jComboBox3;
00469     private javax.swing.JLabel jLabel1;
00470     private javax.swing.JLabel jLabel2;
00471     private javax.swing.JLabel jLabel3;
00472     private javax.swing.JLabel jLabel4;
00473     private javax.swing.JLabel jLabel5;
00474     private javax.swing.JLabel jLabel6;
00475     private javax.swing.JLabel jLabel7;
00476     private javax.swing.JPanel jPanel1;
00477     private javax.swing.JPanel jPanel2;
00478     private javax.swing.JPanel jPanel3;
00479     private javax.swing.JPanel jPanel4;
00480     private javax.swing.JPanel jPanel5;
00481     private javax.swing.JPanel jPanel6;
00482     private javax.swing.JPanel jPanel7;
00483     private javax.swing.JPanel jPanel8;
00484     private javax.swing.JScrollPane jScrollPane1;
00485     private javax.swing.JScrollPane jScrollPane2;
00486     private javax.swing.JTabbedPane jTabbedPane1;
00487     private javax.swing.JTable jTable1;
00488     private javax.swing.JTable jTable2;
00489     private javax.swing.JTextField jTextField2;
00490     private javax.swing.JTextField jTextField3;
00491     private javax.swing.JTextField jTextField4;
00492     private javax.swing.JButton loopbackTestPerform;
00493     private javax.swing.JButton performHardReset;
00494     private javax.swing.JPanel resultsPanel;
00495     // End of variables declaration//GEN-END:variables
00496 }

Generated on Mon Feb 6 14:12:16 2006 for SCT DAQ/DCS Software - Java by  doxygen 1.4.6