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
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
00048 TableColumn column = jTable1.getColumnModel().getColumn(0);
00049 column.setPreferredWidth(columnWidth * 8);
00050 }
00051
00057 private void 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 }
00239
00240 private void loopbackTestPerformActionPerformed(java.awt.event.ActionEvent evt) {
00241
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
00246 try {
00247 scanResults = api.probeScanHarnessWithTrigger(getPartition(), getCrate(), getRod(), probeScan,
00248 Integer.parseInt(harnessValue.getText()));
00249
00250 } catch(NumberFormatException e) {
00251 javax.swing.JOptionPane.showMessageDialog(null, "Failed to interpet harness value");
00252 }
00253 }
00254
00255 private void checkProbePerformedActionPerformed(java.awt.event.ActionEvent evt) {
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 }
00266
00267 private void performScanActionPerformed(java.awt.event.ActionEvent evt) {
00268
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
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 }
00281
00282 private void probeButtonPerformed(java.awt.event.ActionEvent evt) {
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 }
00301
00302 private void closeButtonPerformed(java.awt.event.ActionEvent evt) {
00303 ((Window)getTopLevelAncestor()).dispose();
00304 }
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
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
00437 }