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

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.SctApi 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.SctApi 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           }
00281 
00282           if(ps_crate.value> -1) {
00283               api.ddcHardResetAll(ps_crate.value);
00284           }
00285        }
00286 
00287     }//GEN-LAST:event_performHardResetActionPerformed
00288 
00289     private void loopbackTestPerformActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_loopbackTestPerformActionPerformed
00290         // Set up scan 
00291         Sct_SctApi.Scan probeScan = api.createScan();
00292         probeScan.getTrigger1().doubleL1A((short)10);
00293         probeScan.configure((short)20, 0.0, 24.0, 1.0);
00294         // Perform probe Scan
00295         try {
00296             scanResults = api.probeScanHarnessWithTrigger(getPartition(), getCrate(), getRod(), probeScan, 
00297                                                           Integer.parseInt(harnessValue.getText()));
00298             // updateLoopbackScanResults();
00299         } catch(NumberFormatException e) {
00300             javax.swing.JOptionPane.showMessageDialog(null, "Failed to interpet harness value");
00301         }
00302     }//GEN-LAST:event_loopbackTestPerformActionPerformed
00303 
00304     private void checkProbePerformedActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_checkProbePerformedActionPerformed
00305         try  {
00306             if(api.checkAllModulesProbe(checkCharsText.getText())) {
00307                 JOptionPane.showMessageDialog(null, "Check modules succeeded");
00308             } else {
00309                 JOptionPane.showMessageDialog(null, "Check modules failed, see MRS for details");
00310             }
00311         } catch(Sct_SctApi.SctApiException s) {
00312             JOptionPane.showMessageDialog(null, "Check modules aborted: " + s);
00313         }
00314     }//GEN-LAST:event_checkProbePerformedActionPerformed
00315 
00316     private void performScanActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_performScanActionPerformed
00317         // Set up scan 
00318         Sct_SctApi.Scan probeScan = api.createScan();
00319         probeScan.getTrigger1().doubleL1A((short)10);
00320         probeScan.configure((short)20, 0.0, 24.0, 1.0);
00321         // Perform probe Scan
00322         try {
00323             scanResults = api.probeScanHarnessWithTrigger(getPartition(), getCrate(), getRod(), probeScan, 
00324                                                           Integer.parseInt(harnessValue.getText()));
00325             updateScanResults();
00326         } catch(NumberFormatException e) {
00327             javax.swing.JOptionPane.showMessageDialog(null, "Failed to interpet harness value");
00328         }
00329     }//GEN-LAST:event_performScanActionPerformed
00330 
00331     private void probeButtonPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_probeButtonPerformed
00332         int partition = getPartition();
00333         int crate = getCrate();
00334         int rod = getRod();
00335         int harness;
00336         try {
00337             harness = Integer.parseInt(harnessValue.getText());
00338         } catch(NumberFormatException e) {
00339             harness = -1;
00340         }
00341 
00342         if(harness == -1) {
00343             results  = api.probe(partition, crate, rod);
00344         } else {
00345             results  = api.probeHarness(partition, crate, rod, harness);
00346         }
00347 
00348         updateResultsPanel();
00349     }//GEN-LAST:event_probeButtonPerformed
00350 
00351 
00352     private void closeButtonPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_closeButtonPerformed
00353         ((Window)getTopLevelAncestor()).dispose();
00354     }//GEN-LAST:event_closeButtonPerformed
00355 
00356     void updateResultsPanel() {
00357         resultsPanel.removeAll();
00358         for(int i=0; i<results.length; i++) {
00359             resultsPanel.add(new JLabel("" + (char)results[i] + "  "));
00360         }
00361 
00362         resultsPanel.invalidate();
00363         validate();
00364     }
00365 
00366     TableModel getScanResultsTableModel() {
00367         return tableModel;
00368     }
00369     
00370     void updateScanResults() {
00371         tableModel.newData();
00372     }
00373 
00374     public int getPartition() {
00375         return partition;
00376     }
00377 
00378     public int getCrate() {
00379         return crate;
00380     }
00381 
00382     public int getRod() {
00383         return rod;
00384     }
00385 
00386     class ResultsTableModel extends javax.swing.table.AbstractTableModel {
00387         public ResultsTableModel() {
00388         }
00389 
00390         public void newData() {
00391             fireTableStructureChanged();
00392         }
00393         
00394         public int getColumnCount() {
00395             return 1+scanResults.length;
00396         }
00397 
00398         public int getRowCount() {
00399             if(scanResults.length > 0) {
00400                 return scanResults[0].length;
00401             } else {
00402                 return 0;
00403             }
00404         }
00405 
00406         public Object getValueAt(int rowIndex, int columnIndex) {
00407             if(columnIndex == 0) {
00408                 return "Link " + rowIndex;
00409             } else {
00410                 return "" + (char)scanResults[columnIndex-1][rowIndex];
00411             }
00412         }
00413 
00414         public String getColumnName(int columnIndex) {
00415             String retValue;
00416             
00417             if(columnIndex == 0) {
00418                 retValue = "";
00419             } else {
00420                 columnIndex--;
00421                 retValue = "" + columnIndex;
00422             }
00423 
00424             return retValue;
00425         }
00426     }    
00427 
00428     class LoopbackResultsTableModel extends ResultsTableModel {
00429         public String getColumnName(int columnIndex) {
00430             if(columnIndex == 25) {
00431                 return "Pass/Fail";
00432             } else {
00433                 return ((ResultsTableModel)this).getColumnName(columnIndex);
00434             }
00435         }
00436 
00437         public Object getValueAt(int rowIndex, int columnIndex) {
00438             if(columnIndex == 25) {
00439                 for(int clk=0; clk<24; clk++) {
00440                     int i = (char)scanResults[clk][rowIndex];
00441                 }
00442 
00443                 return "Unimplemented";
00444             } else {
00445                 return ((ResultsTableModel)this).getValueAt(rowIndex, columnIndex);
00446             }
00447         }
00448 
00449     }
00450     
00451     // Variables declaration - do not modify//GEN-BEGIN:variables
00452     private javax.swing.JTextField checkCharsText;
00453     private javax.swing.JButton checkProbePerformed;
00454     private javax.swing.JTextField harnessValue;
00455     private javax.swing.JButton jButton1;
00456     private javax.swing.JButton jButton2;
00457     private javax.swing.JButton jButton4;
00458     private javax.swing.JComboBox jComboBox1;
00459     private javax.swing.JComboBox jComboBox2;
00460     private javax.swing.JComboBox jComboBox3;
00461     private javax.swing.JLabel jLabel1;
00462     private javax.swing.JLabel jLabel2;
00463     private javax.swing.JLabel jLabel3;
00464     private javax.swing.JLabel jLabel4;
00465     private javax.swing.JLabel jLabel5;
00466     private javax.swing.JLabel jLabel6;
00467     private javax.swing.JLabel jLabel7;
00468     private javax.swing.JPanel jPanel1;
00469     private javax.swing.JPanel jPanel2;
00470     private javax.swing.JPanel jPanel3;
00471     private javax.swing.JPanel jPanel4;
00472     private javax.swing.JPanel jPanel5;
00473     private javax.swing.JPanel jPanel6;
00474     private javax.swing.JPanel jPanel7;
00475     private javax.swing.JPanel jPanel8;
00476     private javax.swing.JScrollPane jScrollPane1;
00477     private javax.swing.JScrollPane jScrollPane2;
00478     private javax.swing.JTabbedPane jTabbedPane1;
00479     private javax.swing.JTable jTable1;
00480     private javax.swing.JTable jTable2;
00481     private javax.swing.JTextField jTextField2;
00482     private javax.swing.JTextField jTextField3;
00483     private javax.swing.JTextField jTextField4;
00484     private javax.swing.JButton loopbackTestPerform;
00485     private javax.swing.JButton performHardReset;
00486     private javax.swing.JPanel resultsPanel;
00487     // End of variables declaration//GEN-END:variables
00488 }

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