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

Generated on Thu Jul 15 09:55:47 2004 for SCT DAQ/DCS Software - Java by doxygen 1.3.5