ScanView.java

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() {//GEN-BEGIN: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     }//GEN-END:initComponents
00287 
00288     private void executeRawScanPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_executeRawScanPerformed
00289         try {
00290             // 1 is delay, don't configure, don't use clk/2 mode
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     }//GEN-LAST:event_executeRawScanPerformed
00296         
00297     void updateComponents() {
00298     }
00299 
00300 
00301     private void editTrigger2Performed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editTrigger2Performed
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 //                     updateInfoPanel();
00311     }//GEN-LAST:event_editTrigger2Performed
00312 
00313     private void editTrigger1Performed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editTrigger1Performed
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 //                     updateInfoPanel();
00323     }//GEN-LAST:event_editTrigger1Performed
00324 
00325     private void optionsUpdatePerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_optionsUpdatePerformed
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 //        updateInfoPanel();
00343     }//GEN-LAST:event_optionsUpdatePerformed
00344 
00345     private void updateScan2Performed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_updateScan2Performed
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     }//GEN-LAST:event_updateScan2Performed
00354 
00355     private void updateScan1Performed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_updateScan1Performed
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 //        updateInfoPanel();
00364     }//GEN-LAST:event_updateScan1Performed
00365 
00366     private void destroyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_destroyActionPerformed
00367         scan.shutdown();
00368         ((Window)getTopLevelAncestor()).dispose();
00369     }//GEN-LAST:event_destroyActionPerformed
00370 
00371     private void closeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_closeActionPerformed
00372         ((Window)getTopLevelAncestor()).dispose();
00373     }//GEN-LAST:event_closeActionPerformed
00374 
00375     private void executeScanActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_executeScanActionPerformed
00376         try {
00377             api.doScan(scan);
00378         } catch(Sct_SctApi.SctApiException s) {
00379             JOptionPane.showMessageDialog(null, "Exception processing doScan " + s.detail);
00380         }
00381     }//GEN-LAST:event_executeScanActionPerformed
00382 
00383     private void printScanActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_printScanActionPerformed
00384         System.out.println(scan.print());
00385     }//GEN-LAST:event_printScanActionPerformed
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     // Variables declaration - do not modify//GEN-BEGIN:variables
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     // End of variables declaration//GEN-END:variables
00510 }

Generated on Mon Feb 6 14:12:18 2006 for SCT DAQ/DCS Software - Java by  doxygen 1.4.6