00001 package GuiComponents.SctApi;
00002
00003 import javax.swing.*;
00004 import java.awt.*;
00005 import java.awt.event.*;
00006
00007 import Sct_SctApi.ScanPackage.ScanOptions;
00008
00009 public class ScanView extends JPanel {
00010 Sct_SctApi.SctApiIPC api;
00011 Sct_SctApi.Scan scan;
00012
00013 public ScanView(Sct_SctApi.SctApiIPC a, Sct_SctApi.Scan scn) {
00014 api = a;
00015 scan = scn;
00016
00017 initComponents();
00018 updateComponents();
00019 }
00020
00026 private void initComponents() {
00027 jPanel3 = new javax.swing.JPanel();
00028 jButton1 = new javax.swing.JButton();
00029 jButton2 = new javax.swing.JButton();
00030 jButton11 = new javax.swing.JButton();
00031 jButton3 = new javax.swing.JButton();
00032 jButton4 = new javax.swing.JButton();
00033 jPanel1 = new javax.swing.JPanel();
00034 jPanel4 = new javax.swing.JPanel();
00035 jLabel8 = new javax.swing.JLabel();
00036 scanType1Combo = new javax.swing.JComboBox();
00037 jLabel3 = new javax.swing.JLabel();
00038 start1Value = new javax.swing.JTextField();
00039 jLabel9 = new javax.swing.JLabel();
00040 stop1Value = new javax.swing.JTextField();
00041 jLabel10 = new javax.swing.JLabel();
00042 step1Value = new javax.swing.JTextField();
00043 jButton5 = new javax.swing.JButton();
00044 jButton6 = new javax.swing.JButton();
00045 jPanel5 = new javax.swing.JPanel();
00046 jLabel11 = new javax.swing.JLabel();
00047 scanType2Combo = new javax.swing.JComboBox();
00048 jLabel4 = new javax.swing.JLabel();
00049 start2Value = new javax.swing.JTextField();
00050 jLabel12 = new javax.swing.JLabel();
00051 stop2Value = new javax.swing.JTextField();
00052 jLabel13 = new javax.swing.JLabel();
00053 step2Value = new javax.swing.JTextField();
00054 jButton7 = new javax.swing.JButton();
00055 jButton8 = new javax.swing.JButton();
00056 jPanel6 = new javax.swing.JPanel();
00057 jLabel5 = new javax.swing.JLabel();
00058 numTrigsValue = new javax.swing.JTextField();
00059 jLabel15 = new javax.swing.JLabel();
00060 bitsValue = new javax.swing.JTextField();
00061 jLabel16 = new javax.swing.JLabel();
00062 calLineValue = new javax.swing.JTextField();
00063 jLabel17 = new javax.swing.JLabel();
00064 slaveDistValue = new javax.swing.JTextField();
00065 jLabel14 = new javax.swing.JLabel();
00066 timValue = new javax.swing.JTextField();
00067 jButton9 = new javax.swing.JButton();
00068 jPanel2 = new javax.swing.JPanel();
00069 jLabel1 = new javax.swing.JLabel();
00070 jLabel2 = new javax.swing.JLabel();
00071 jLabel6 = new javax.swing.JLabel();
00072 jLabel7 = new javax.swing.JLabel();
00073 jScrollPane1 = new javax.swing.JScrollPane();
00074 scanPointsList = new javax.swing.JList();
00075
00076 setLayout(new java.awt.BorderLayout());
00077
00078 jButton1.setText("Print Scan");
00079 jButton1.addActionListener(new java.awt.event.ActionListener() {
00080 public void actionPerformed(java.awt.event.ActionEvent evt) {
00081 printScanActionPerformed(evt);
00082 }
00083 });
00084
00085 jPanel3.add(jButton1);
00086
00087 jButton2.setText("Execute Scan");
00088 jButton2.addActionListener(new java.awt.event.ActionListener() {
00089 public void actionPerformed(java.awt.event.ActionEvent evt) {
00090 executeScanActionPerformed(evt);
00091 }
00092 });
00093
00094 jPanel3.add(jButton2);
00095
00096 jButton11.setText("Execute Raw Scan");
00097 jButton11.addActionListener(new java.awt.event.ActionListener() {
00098 public void actionPerformed(java.awt.event.ActionEvent evt) {
00099 executeRawScanPerformed(evt);
00100 }
00101 });
00102
00103 jPanel3.add(jButton11);
00104
00105 jButton3.setText("Close");
00106 jButton3.addActionListener(new java.awt.event.ActionListener() {
00107 public void actionPerformed(java.awt.event.ActionEvent evt) {
00108 closeActionPerformed(evt);
00109 }
00110 });
00111
00112 jPanel3.add(jButton3);
00113
00114 jButton4.setText("Destroy");
00115 jButton4.addActionListener(new java.awt.event.ActionListener() {
00116 public void actionPerformed(java.awt.event.ActionEvent evt) {
00117 destroyActionPerformed(evt);
00118 }
00119 });
00120
00121 jPanel3.add(jButton4);
00122
00123 add(jPanel3, java.awt.BorderLayout.SOUTH);
00124
00125 jPanel1.setLayout(new javax.swing.BoxLayout(jPanel1, javax.swing.BoxLayout.Y_AXIS));
00126
00127 jPanel4.setLayout(new javax.swing.BoxLayout(jPanel4, javax.swing.BoxLayout.X_AXIS));
00128
00129 jLabel8.setText("Scan type 1");
00130 jPanel4.add(jLabel8);
00131
00132 scanType1Combo.setModel(new DefaultComboBoxModel(getScanList()));
00133 jPanel4.add(scanType1Combo);
00134
00135 jLabel3.setText("Start scan 1 value");
00136 jPanel4.add(jLabel3);
00137
00138 start1Value.setText("0.0");
00139 jPanel4.add(start1Value);
00140
00141 jLabel9.setText("Stop scan 1 value");
00142 jPanel4.add(jLabel9);
00143
00144 stop1Value.setText("100.0");
00145 jPanel4.add(stop1Value);
00146
00147 jLabel10.setText("Step scan 1 value");
00148 jPanel4.add(jLabel10);
00149
00150 step1Value.setText("10.0");
00151 jPanel4.add(step1Value);
00152
00153 jButton5.setText("Update scan 1");
00154 jButton5.addActionListener(new java.awt.event.ActionListener() {
00155 public void actionPerformed(java.awt.event.ActionEvent evt) {
00156 updateScan1Performed(evt);
00157 }
00158 });
00159
00160 jPanel4.add(jButton5);
00161
00162 jButton6.setText("Edit Trigger 1");
00163 jButton6.addActionListener(new java.awt.event.ActionListener() {
00164 public void actionPerformed(java.awt.event.ActionEvent evt) {
00165 editTrigger1Performed(evt);
00166 }
00167 });
00168
00169 jPanel4.add(jButton6);
00170
00171 jPanel1.add(jPanel4);
00172
00173 jPanel5.setLayout(new javax.swing.BoxLayout(jPanel5, javax.swing.BoxLayout.X_AXIS));
00174
00175 jLabel11.setText("Scan type 2");
00176 jPanel5.add(jLabel11);
00177
00178 scanType2Combo.setModel(new DefaultComboBoxModel(getScanList()));
00179 jPanel5.add(scanType2Combo);
00180
00181 jLabel4.setText("Start scan 2 value");
00182 jPanel5.add(jLabel4);
00183
00184 start2Value.setText("0.0");
00185 jPanel5.add(start2Value);
00186
00187 jLabel12.setText("Stop scan 2 value");
00188 jPanel5.add(jLabel12);
00189
00190 stop2Value.setText("100.0");
00191 jPanel5.add(stop2Value);
00192
00193 jLabel13.setText("Step scan 2 value");
00194 jPanel5.add(jLabel13);
00195
00196 step2Value.setText("10.0");
00197 jPanel5.add(step2Value);
00198
00199 jButton7.setText("Update scan 2");
00200 jButton7.addActionListener(new java.awt.event.ActionListener() {
00201 public void actionPerformed(java.awt.event.ActionEvent evt) {
00202 updateScan2Performed(evt);
00203 }
00204 });
00205
00206 jPanel5.add(jButton7);
00207
00208 jButton8.setText("Edit Trigger 2");
00209 jButton8.addActionListener(new java.awt.event.ActionListener() {
00210 public void actionPerformed(java.awt.event.ActionEvent evt) {
00211 editTrigger2Performed(evt);
00212 }
00213 });
00214
00215 jPanel5.add(jButton8);
00216
00217 jPanel1.add(jPanel5);
00218
00219 jPanel6.setLayout(new javax.swing.BoxLayout(jPanel6, javax.swing.BoxLayout.X_AXIS));
00220
00221 jLabel5.setText("No. Triggers");
00222 jPanel6.add(jLabel5);
00223
00224 numTrigsValue.setText("100");
00225 jPanel6.add(numTrigsValue);
00226
00227 jLabel15.setText("Bits32");
00228 jPanel6.add(jLabel15);
00229
00230 bitsValue.setText("1");
00231 jPanel6.add(bitsValue);
00232
00233 jLabel16.setText("Loop over cal-line");
00234 jPanel6.add(jLabel16);
00235
00236 calLineValue.setText("0");
00237 jPanel6.add(calLineValue);
00238
00239 jLabel17.setText("Slave distribution");
00240 jPanel6.add(jLabel17);
00241
00242 slaveDistValue.setText("0");
00243 jPanel6.add(slaveDistValue);
00244
00245 jLabel14.setText("Use TIM");
00246 jPanel6.add(jLabel14);
00247
00248 timValue.setText("0");
00249 jPanel6.add(timValue);
00250
00251 jButton9.setText("Update");
00252 jButton9.addActionListener(new java.awt.event.ActionListener() {
00253 public void actionPerformed(java.awt.event.ActionEvent evt) {
00254 optionsUpdatePerformed(evt);
00255 }
00256 });
00257
00258 jPanel6.add(jButton9);
00259
00260 jPanel1.add(jPanel6);
00261
00262 add(jPanel1, java.awt.BorderLayout.CENTER);
00263
00264 jPanel2.setLayout(new javax.swing.BoxLayout(jPanel2, javax.swing.BoxLayout.Y_AXIS));
00265
00266 jLabel1.setText("Scan variable 1 " + getScanVariable1());
00267 jPanel2.add(jLabel1);
00268
00269 jLabel2.setText("Scan variable 1 " + getScanVariable2());
00270 jPanel2.add(jLabel2);
00271
00272 jLabel6.setText("Number of triggers " + getTriggerCount());
00273 jPanel2.add(jLabel6);
00274
00275 jLabel7.setText(getOptionsString());
00276 jPanel2.add(jLabel7);
00277
00278 jScrollPane1.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
00279 scanPointsList.setModel(getListModel());
00280 jScrollPane1.setViewportView(scanPointsList);
00281
00282 jPanel2.add(jScrollPane1);
00283
00284 add(jPanel2, java.awt.BorderLayout.NORTH);
00285
00286 }
00287
00288 private void executeRawScanPerformed(java.awt.event.ActionEvent evt) {
00289 try {
00290
00291 api.doRawScan(scan, 1, 768, false, false);
00292 } catch(Sct_SctApi.SctApiException s) {
00293 JOptionPane.showMessageDialog(null, "Exception processing doRawScan " + s.detail);
00294 }
00295 }
00296
00297 void updateComponents() {
00298 }
00299
00300
00301 private void editTrigger2Performed(java.awt.event.ActionEvent evt) {
00302 TriggerSelect dia = new TriggerSelect(api, scan.getTrigger2());
00303
00304 dia.pack();
00305 dia.setVisible(true);
00306
00307 dia.modifyTrigger();
00308
00309 dia.dispose();
00310
00311 }
00312
00313 private void editTrigger1Performed(java.awt.event.ActionEvent evt) {
00314 TriggerSelect dia = new TriggerSelect(api, scan.getTrigger1());
00315
00316 dia.pack();
00317 dia.setVisible(true);
00318
00319 dia.modifyTrigger();
00320
00321 dia.dispose();
00322
00323 }
00324
00325 private void optionsUpdatePerformed(java.awt.event.ActionEvent evt) {
00326 short ntrigs = Short.parseShort(numTrigsValue.getText());
00327 scan.setNTrigs(ntrigs);
00328 short bits32 = Short.parseShort(bitsValue.getText());
00329 scan.setOption(ScanOptions.bits32, bits32);
00330 short loopCalLine = Short.parseShort(calLineValue.getText());
00331 scan.setOption(ScanOptions.loopCalLine, loopCalLine);
00332 short distSlave = Short.parseShort(slaveDistValue.getText());
00333 scan.setOption(ScanOptions.distSlave, distSlave);
00334 short tim = Short.parseShort(timValue.getText());
00335 scan.setOption(ScanOptions.tim, tim);
00336 short nth = Short.parseShort(nthValue.getText());
00337 scan.setOption(ScanOptions.nth, nth);
00338 short nthRem = Short.parseShort(nthRemValue.getText());
00339 scan.setOption(ScanOptions.nth_rem, nthRem);
00340 short enableDataMode = Short.parseShort(enableDataModeValue.getText());
00341 scan.setOption(ScanOptions.enableDataMode, enableDataMode);
00342
00343 }
00344
00345 private void updateScan2Performed(java.awt.event.ActionEvent evt) {
00346 short type = (short)Sct.ScanDescriptors.getInstance().valueFor((String)scanType2Combo.getSelectedItem());
00347 double start = Double.parseDouble(start2Value.getText());
00348 double stop = Double.parseDouble(stop2Value.getText());
00349 double step = Double.parseDouble(step2Value.getText());
00350
00351 System.out.println("Configuring scan 2 with " + type + " " + start + " " + stop + " " + step);
00352 scan.configure2(type, start, stop, step);
00353 }
00354
00355 private void updateScan1Performed(java.awt.event.ActionEvent evt) {
00356 short type = (short)Sct.ScanDescriptors.getInstance().valueFor((String)scanType1Combo.getSelectedItem());
00357 double start = Double.parseDouble(start1Value.getText());
00358 double stop = Double.parseDouble(stop1Value.getText());
00359 double step = Double.parseDouble(step1Value.getText());
00360
00361 System.out.println("Configuring scan with " + type + " " + start + " " + stop + " " + step);
00362 scan.configure(type, start, stop, step);
00363
00364 }
00365
00366 private void destroyActionPerformed(java.awt.event.ActionEvent evt) {
00367 scan.shutdown();
00368 ((Window)getTopLevelAncestor()).dispose();
00369 }
00370
00371 private void closeActionPerformed(java.awt.event.ActionEvent evt) {
00372 ((Window)getTopLevelAncestor()).dispose();
00373 }
00374
00375 private void executeScanActionPerformed(java.awt.event.ActionEvent evt) {
00376 try {
00377 api.doScan(scan);
00378 } catch(Sct_SctApi.SctApiException s) {
00379 JOptionPane.showMessageDialog(null, "Exception processing doScan " + s.detail);
00380 }
00381 }
00382
00383 private void printScanActionPerformed(java.awt.event.ActionEvent evt) {
00384 System.out.println(scan.print());
00385 }
00386
00387 String [] getScanPointsList() {
00388 double [] realPoints = scan.getScanPoints1();
00389
00390 String [] myPoints = new String[realPoints.length];
00391
00392 for(int i=0; i<realPoints.length; i++) {
00393 myPoints[i] = new String("" + realPoints[i]);
00394 }
00395
00396 return myPoints;
00397 }
00398
00399 public String getScanVariable1() {
00400 return "" + scan.getScanVariable1();
00401 }
00402
00403 public String getScanVariable2() {
00404 return "" + scan.getScanVariable2();
00405 }
00406
00407 public int getTriggerCount() {
00408 return scan.getNTrigs();
00409 }
00410
00411 public String getOptionsString() {
00412 String flagString = "";
00413
00414 flagString += " full: " + scan.getOption(ScanOptions.full);
00415 flagString += " bits32: " + scan.getOption(ScanOptions.bits32);
00416 flagString += " loopCalLine: " + scan.getOption(ScanOptions.loopCalLine);
00417 flagString += " distSlave: " + scan.getOption(ScanOptions.distSlave);
00418 flagString += " debug: " + scan.getOption(ScanOptions.debug);
00419 flagString += " tim: " + scan.getOption(ScanOptions.tim);
00420 flagString += " nth: " + scan.getOption(ScanOptions.nth);
00421 flagString += " nthRem: " + scan.getOption(ScanOptions.nth_rem);
00422 flagString += " enableDataMode: " + scan.getOption(ScanOptions.enableDataMode);
00423
00424 return flagString;
00425 }
00426
00427 public String[] getScanList() {
00428 return Sct.ScanDescriptors.getInstance().listDescriptors();
00429 }
00430
00431 public ListModel getListModel() {
00432 return new SimpleArrayListModel(getScanPointsList());
00433 }
00434
00435 class SimpleArrayListModel extends AbstractListModel {
00436 Object [] myArray;
00437
00438 SimpleArrayListModel(Object [] array) {
00439 myArray = array;
00440 }
00441
00442 void changeData(Object [] array) {
00443 myArray = array;
00444 fireContentsChanged(this, 0, myArray.length);
00445 }
00446
00447 public Object getElementAt(int index) {
00448 return myArray[index];
00449 }
00450
00451 public int getSize() {
00452 return myArray.length;
00453 }
00454
00455 }
00456
00457
00458 private javax.swing.JTextField bitsValue;
00459 private javax.swing.JTextField calLineValue;
00460 private javax.swing.JButton jButton1;
00461 private javax.swing.JButton jButton11;
00462 private javax.swing.JButton jButton2;
00463 private javax.swing.JButton jButton3;
00464 private javax.swing.JButton jButton4;
00465 private javax.swing.JButton jButton5;
00466 private javax.swing.JButton jButton6;
00467 private javax.swing.JButton jButton7;
00468 private javax.swing.JButton jButton8;
00469 private javax.swing.JButton jButton9;
00470 private javax.swing.JLabel jLabel1;
00471 private javax.swing.JLabel jLabel10;
00472 private javax.swing.JLabel jLabel11;
00473 private javax.swing.JLabel jLabel12;
00474 private javax.swing.JLabel jLabel13;
00475 private javax.swing.JLabel jLabel14;
00476 private javax.swing.JLabel jLabel15;
00477 private javax.swing.JLabel jLabel16;
00478 private javax.swing.JLabel jLabel17;
00479 private javax.swing.JLabel jLabel2;
00480 private javax.swing.JLabel jLabel3;
00481 private javax.swing.JLabel jLabel4;
00482 private javax.swing.JLabel jLabel5;
00483 private javax.swing.JLabel jLabel6;
00484 private javax.swing.JLabel jLabel7;
00485 private javax.swing.JLabel jLabel8;
00486 private javax.swing.JLabel jLabel9;
00487 private javax.swing.JPanel jPanel1;
00488 private javax.swing.JPanel jPanel2;
00489 private javax.swing.JPanel jPanel3;
00490 private javax.swing.JPanel jPanel4;
00491 private javax.swing.JPanel jPanel5;
00492 private javax.swing.JPanel jPanel6;
00493 private javax.swing.JScrollPane jScrollPane1;
00494 private javax.swing.JTextField numTrigsValue;
00495 private javax.swing.JList scanPointsList;
00496 private javax.swing.JComboBox scanType1Combo;
00497 private javax.swing.JComboBox scanType2Combo;
00498 private javax.swing.JTextField slaveDistValue;
00499 private javax.swing.JTextField start1Value;
00500 private javax.swing.JTextField start2Value;
00501 private javax.swing.JTextField step1Value;
00502 private javax.swing.JTextField step2Value;
00503 private javax.swing.JTextField stop1Value;
00504 private javax.swing.JTextField stop2Value;
00505 private javax.swing.JTextField timValue;
00506 private javax.swing.JTextField nthValue;
00507 private javax.swing.JTextField nthRemValue;
00508 private javax.swing.JTextField enableDataModeValue;
00509
00510 }