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
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
00051 TableColumn column = jTable1.getColumnModel().getColumn(0);
00052 column.setPreferredWidth(columnWidth * 8);
00053 }
00054
00060 private void 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 }
00251
00252 private void performHardResetActionPerformed(java.awt.event.ActionEvent evt) {
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 }
00288
00289 private void loopbackTestPerformActionPerformed(java.awt.event.ActionEvent evt) {
00290
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
00295 try {
00296 scanResults = api.probeScanHarnessWithTrigger(getPartition(), getCrate(), getRod(), probeScan,
00297 Integer.parseInt(harnessValue.getText()));
00298
00299 } catch(NumberFormatException e) {
00300 javax.swing.JOptionPane.showMessageDialog(null, "Failed to interpet harness value");
00301 }
00302 }
00303
00304 private void checkProbePerformedActionPerformed(java.awt.event.ActionEvent evt) {
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 }
00315
00316 private void performScanActionPerformed(java.awt.event.ActionEvent evt) {
00317
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
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 }
00330
00331 private void probeButtonPerformed(java.awt.event.ActionEvent evt) {
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 }
00350
00351
00352 private void closeButtonPerformed(java.awt.event.ActionEvent evt) {
00353 ((Window)getTopLevelAncestor()).dispose();
00354 }
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
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
00488 }