Main Page | Packages | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

ModuleConfigurations.java

00001 /*
00002  * ModuleConfigurations.java
00003  *
00004  * Created on 07 January 2004, 14:12
00005  */
00006 
00007 package GuiComponents.SctApi;
00008 
00009 import java.awt.Window;
00010 
00011 import javax.swing.DefaultComboBoxModel;
00012 import javax.swing.JFrame;
00013 import javax.swing.JOptionPane;
00014 import javax.swing.JPanel;
00015 import javax.swing.table.TableModel;
00016 import javax.swing.table.TableColumn;
00017 import javax.swing.table.TableColumn;
00018 import javax.swing.table.JTableHeader;
00019 
00020 import Sct_SctApi.SctApi;
00021 
00022 import Sct.SerializableWrapper;
00023 import SctData.ModuleConfiguration;
00024 
00030 public class ModuleConfigurations extends JPanel implements java.io.Serializable {
00031     BlockTableModel bTableModel;
00032 
00033     int partition;
00034     int crate;
00035     int rod;
00036     Sct_SctApi.SctApi api;
00037     
00039     public ModuleConfigurations() {
00040         initComponents();
00041         modifyComponents();
00042     }
00043 
00045     public ModuleConfigurations(int p, int c, int r, Sct_SctApi.SctApi a) {
00046         partition = p;
00047         crate = c;
00048         rod = r;
00049         api = a;
00050 
00051         initComponents();
00052         modifyComponents();
00053     }
00054 
00055     public static void main(String [] args) {
00056         javax.swing.JFrame f = new javax.swing.JFrame("ROD Diag test");
00057         
00058         ModuleConfigurations conf = new ModuleConfigurations();
00059 
00060         f.getContentPane().add(conf);
00061         f.pack();
00062         f.setVisible(true);
00063 
00064         sctConf.ABCDConfig bConfig = new sctConf.ABCDConfig((short)0);
00065 
00066         short sz = (short)0;
00067         byte bz = (byte)0;
00068         
00069         int mask[] = {0, 0xffff, 0xffffffff, 3};
00070         sctConf.ABCDBasic basic = new sctConf.ABCDBasic(bConfig, sz, bz, bz, bz, bz, bz, mask);
00071 
00072         float rc[] = {0.0f, 0.0f, 0.0f};
00073         int dummy[] = {0, 0};
00074         sctConf.ABCDCaldata data = new sctConf.ABCDCaldata(bz, rc, 1.0f, dummy);
00075 
00076         byte trims[] = {0};
00077         sctConf.ABCDChip chip = new sctConf.ABCDChip(bz, bz, bz, bz, basic, data, trims);
00078         byte rxs[] = {2, 3};
00079         byte bdummy[] = {0, 0};
00080         sctConf.ABCDModule newConfig = new sctConf.ABCDModule(null, bz, bz, bz, bz, 0, bz, bz, rxs, bdummy, dummy);
00081         newConfig.chip = new sctConf.ABCDChip[12];
00082         for(int i=0; i<12; i++) {
00083             newConfig.chip[i] = chip;
00084         }
00085         
00086         if(newConfig != null) {
00087             conf.inspectorPanel1.setData(new SerializableWrapper(new ModuleConfiguration(newConfig), "no serial number", "ModuleConfiguration"));
00088         }
00089     }
00090 
00091     
00092     void modifyComponents() {
00093     }
00094     
00100     private void initComponents() {//GEN-BEGIN:initComponents
00101         java.awt.GridBagConstraints gridBagConstraints;
00102 
00103         jPanel2 = new javax.swing.JPanel();
00104         jLabel3 = new javax.swing.JLabel();
00105         jTextField2 = new javax.swing.JTextField();
00106         jLabel4 = new javax.swing.JLabel();
00107         jTextField3 = new javax.swing.JTextField();
00108         jLabel5 = new javax.swing.JLabel();
00109         jTextField4 = new javax.swing.JTextField();
00110         jLabel7 = new javax.swing.JLabel();
00111         jTextField6 = new javax.swing.JTextField();
00112         jPanel3 = new javax.swing.JPanel();
00113         jPanel4 = new javax.swing.JPanel();
00114         jLabel2 = new javax.swing.JLabel();
00115         slotText = new javax.swing.JTextField();
00116         jLabel8 = new javax.swing.JLabel();
00117         bankCombo = new javax.swing.JComboBox();
00118         jButton5 = new javax.swing.JButton();
00119         jPanel5 = new javax.swing.JPanel();
00120         jLabel11 = new javax.swing.JLabel();
00121         currBankLabel = new javax.swing.JLabel();
00122         jLabel12 = new javax.swing.JLabel();
00123         currSlotLabel = new javax.swing.JLabel();
00124         inspectorPanel1 = new GuiComponents.Inspector.InspectorPanel();
00125         jPanel1 = new javax.swing.JPanel();
00126         jLabel1 = new javax.swing.JLabel();
00127         varTypeCombo = new javax.swing.JComboBox();
00128         varValueText = new javax.swing.JTextField();
00129         changeButton = new javax.swing.JButton();
00130 
00131         setLayout(new java.awt.BorderLayout());
00132 
00133         jPanel2.setLayout(new javax.swing.BoxLayout(jPanel2, javax.swing.BoxLayout.X_AXIS));
00134 
00135         jLabel3.setText("Partition");
00136         jPanel2.add(jLabel3);
00137 
00138         jTextField2.setEditable(false);
00139         jTextField2.setText(new Integer(getPartition()).toString());
00140         jPanel2.add(jTextField2);
00141 
00142         jLabel4.setText("Crate");
00143         jPanel2.add(jLabel4);
00144 
00145         jTextField3.setEditable(false);
00146         jTextField3.setText(new Integer(getCrate()).toString());
00147         jPanel2.add(jTextField3);
00148 
00149         jLabel5.setText("ROD");
00150         jPanel2.add(jLabel5);
00151 
00152         jTextField4.setEditable(false);
00153         jTextField4.setText(new Integer(getROD()).toString());
00154         jPanel2.add(jTextField4);
00155 
00156         jLabel7.setText("Slot");
00157         jPanel2.add(jLabel7);
00158 
00159         jTextField6.setEditable(false);
00160         jTextField6.setText(getRODSlot());
00161         jPanel2.add(jTextField6);
00162 
00163         add(jPanel2, java.awt.BorderLayout.NORTH);
00164 
00165         jPanel3.setLayout(new java.awt.GridBagLayout());
00166 
00167         jPanel4.setLayout(new java.awt.GridBagLayout());
00168 
00169         jLabel2.setText("Module Slot");
00170         gridBagConstraints = new java.awt.GridBagConstraints();
00171         gridBagConstraints.gridy = 0;
00172         jPanel4.add(jLabel2, gridBagConstraints);
00173 
00174         slotText.setText("0");
00175         gridBagConstraints = new java.awt.GridBagConstraints();
00176         gridBagConstraints.gridy = 0;
00177         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
00178         gridBagConstraints.weightx = 0.1;
00179         jPanel4.add(slotText, gridBagConstraints);
00180 
00181         jLabel8.setText("Module bank");
00182         gridBagConstraints = new java.awt.GridBagConstraints();
00183         gridBagConstraints.gridy = 1;
00184         jPanel4.add(jLabel8, gridBagConstraints);
00185 
00186         bankCombo.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Physics", "Calibration", "Scan", "SctApi", "Configuration" }));
00187         gridBagConstraints = new java.awt.GridBagConstraints();
00188         gridBagConstraints.gridy = 1;
00189         gridBagConstraints.weightx = 0.1;
00190         jPanel4.add(bankCombo, gridBagConstraints);
00191 
00192         jButton5.setText("Get Module Configuration");
00193         jButton5.setEnabled(isRODValid());
00194         jButton5.addActionListener(new java.awt.event.ActionListener() {
00195             public void actionPerformed(java.awt.event.ActionEvent evt) {
00196                 getModuleConfigurationActionPerformed(evt);
00197             }
00198         });
00199 
00200         gridBagConstraints = new java.awt.GridBagConstraints();
00201         gridBagConstraints.gridy = 1;
00202         gridBagConstraints.gridwidth = 2;
00203         jPanel4.add(jButton5, gridBagConstraints);
00204 
00205         gridBagConstraints = new java.awt.GridBagConstraints();
00206         gridBagConstraints.gridy = 0;
00207         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
00208         gridBagConstraints.weightx = 1.0;
00209         jPanel3.add(jPanel4, gridBagConstraints);
00210 
00211         jLabel11.setText("Bank");
00212         jPanel5.add(jLabel11);
00213 
00214         currBankLabel.setText("-");
00215         jPanel5.add(currBankLabel);
00216 
00217         jLabel12.setText("Slot");
00218         jPanel5.add(jLabel12);
00219 
00220         currSlotLabel.setText("0");
00221         jPanel5.add(currSlotLabel);
00222 
00223         gridBagConstraints = new java.awt.GridBagConstraints();
00224         gridBagConstraints.gridy = 1;
00225         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
00226         gridBagConstraints.weightx = 1.0;
00227         jPanel3.add(jPanel5, gridBagConstraints);
00228 
00229         inspectorPanel1.setMinimumSize(new java.awt.Dimension(50, 40));
00230         gridBagConstraints = new java.awt.GridBagConstraints();
00231         gridBagConstraints.gridy = 2;
00232         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
00233         gridBagConstraints.weightx = 1.0;
00234         gridBagConstraints.weighty = 0.1;
00235         jPanel3.add(inspectorPanel1, gridBagConstraints);
00236 
00237         add(jPanel3, java.awt.BorderLayout.CENTER);
00238 
00239         jPanel1.setLayout(new javax.swing.BoxLayout(jPanel1, javax.swing.BoxLayout.X_AXIS));
00240 
00241         jPanel1.setOpaque(false);
00242         jLabel1.setText("Modify variable");
00243         jPanel1.add(jLabel1);
00244 
00245         varTypeCombo.setModel(new DefaultComboBoxModel(getScanList()));
00246         jPanel1.add(varTypeCombo);
00247 
00248         varValueText.setText("0");
00249         jPanel1.add(varValueText);
00250 
00251         changeButton.setText("Change");
00252         changeButton.addActionListener(new java.awt.event.ActionListener() {
00253             public void actionPerformed(java.awt.event.ActionEvent evt) {
00254                 changeModuleConfigurationPerformed(evt);
00255             }
00256         });
00257 
00258         jPanel1.add(changeButton);
00259 
00260         add(jPanel1, java.awt.BorderLayout.SOUTH);
00261 
00262     }//GEN-END:initComponents
00263 
00264     private void getModuleConfigurationActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_getModuleConfigurationActionPerformed
00265         getModuleConfiguration();
00266     }
00267     
00268     private void getModuleConfiguration() {
00269         int slot = Long.decode(slotText.getText()).intValue();
00270         String bank = (String)bankCombo.getSelectedItem();
00271         sctConf.ABCDModule newConfig = null;
00272         if(bank.equals("SctApi")) {
00273             newConfig = api.retrieveModule(api.findModuleRod(getPartition(), getCrate(), getROD(), slot));
00274         } else if(bank.equals("Configuration")) {
00275             JOptionPane.showMessageDialog(null, "Unimplemented bank type");
00276             return;
00277         } else {
00278             Sct_SctApi.BankType realBank;
00279             if(bank.equals("Physics")) {
00280                 realBank = Sct_SctApi.BankType.PHYSICS_CONFIG;
00281             } else if(bank.equals("Calibration")) {
00282                 realBank = Sct_SctApi.BankType.CALIBRATION_CONFIG;
00283             } else if(bank.equals("Scan")) {
00284                 realBank = Sct_SctApi.BankType.SCAN_CONFIG;
00285             } else {
00286                 JOptionPane.showMessageDialog(null, "Unknown bank type");
00287                 return;
00288             }
00289 
00290             try {
00291                 newConfig = api.getABCDModuleRaw(getPartition(), getCrate(), getROD(), slot, realBank);
00292             } catch(Sct_SctApi.SctApiException e) {
00293                 JOptionPane.showMessageDialog(null, "Exception thrown by API: " + e.detail);
00294             }
00295         }
00296 
00297         if(newConfig != null) {
00298 //             inspectorPanel1 = new GuiComponents.Inspector.InspectorPanel("Module name?", new SerializableWrapper(new ModuleConfiguration(newConfig), "no serial number", "ModuleConfiguration"));
00299             inspectorPanel1.setData(new SerializableWrapper(new ModuleConfiguration(newConfig), "no serial number", "ModuleConfiguration"));
00300             // jScrollPane1.setViewportView(inspectorPanel1.treeTable);
00301 
00302             currBankLabel.setText(bank);
00303             currSlotLabel.setText("" + slot);
00304         }
00305     }//GEN-LAST:event_getModuleConfigurationActionPerformed
00306 
00307     private void changeModuleConfigurationPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_changeModuleConfigurationPerformed
00308         int slot = Long.decode(slotText.getText()).intValue();
00309         String bank = (String)bankCombo.getSelectedItem();
00310         short type = (short)Sct.ScanDescriptors.getInstance().valueFor((String)varTypeCombo.getSelectedItem());
00311         float value = Float.parseFloat(varValueText.getText());
00312 
00313         if(bank.equals("SctApi")) {
00314             api.modifyABCDModuleVar(api.findModuleRod(getPartition(), getCrate(), getROD(), slot),
00315                                     type, value);
00316             getModuleConfiguration();
00317         } else if(bank.equals("Configuration")) {
00318             JOptionPane.showMessageDialog(null, "Unimplemented bank type");
00319             return;
00320         } else {
00321             Sct_SctApi.BankType realBank;
00322             if(bank.equals("Physics")) {
00323                 realBank = Sct_SctApi.BankType.PHYSICS_CONFIG;
00324             } else if(bank.equals("Calibration")) {
00325                 realBank = Sct_SctApi.BankType.CALIBRATION_CONFIG;
00326             } else if(bank.equals("Scan")) {
00327                 realBank = Sct_SctApi.BankType.SCAN_CONFIG;
00328             } else {
00329                 JOptionPane.showMessageDialog(null, "Unknown bank type");
00330                 return;
00331             }
00332 
00333             api.modifyABCDModuleVarROD(api.findModuleRod(getPartition(), getCrate(), getROD(), slot),
00334                                        type, value, realBank);
00335             getModuleConfiguration();
00336         }
00337     }//GEN-LAST:event_changeModuleConfigurationPerformed
00338 
00339     public String[] getScanList() {
00340         return Sct.ScanDescriptors.getInstance().listDescriptors();
00341     }
00342     
00343     public TableModel getBlockTableModel() {
00344         if(bTableModel == null) {
00345             int [] nullBlock = {};
00346 
00347             bTableModel = new ModuleConfigurations.BlockTableModel(nullBlock);
00348         }
00349 
00350         return bTableModel;
00351     }    
00352     
00353     public int getPartition() {
00354         return partition;
00355     }
00356 
00357     public int getCrate() {
00358         return crate;
00359     }
00360 
00361     public int getROD() {
00362         return rod;
00363     }
00364 
00365     public String getRODSlot() {
00366         try {
00367             long rodSlot = api.getRodSlot(partition, crate, rod);
00368             return "" + rodSlot;
00369         } catch(NullPointerException n) {
00370             return "No API";
00371         }
00372     }
00373 
00374     public boolean isRODValid() {
00375         if(api == null) {
00376             if(getTopLevelAncestor() == null) {
00377                 // Doesn't have an ancestor when its being constructed...
00378                 return false;
00379             } else {
00380                 ((Window)getTopLevelAncestor()).dispose();
00381                 return false;
00382             }
00383         } else {
00384             return api.isRODPresent(partition, crate, rod);
00385         }
00386     }
00387 
00392     public void setPartition(int partition) { this.partition = partition; }
00393     
00394     public class BlockTableModel extends javax.swing.table.AbstractTableModel {
00395         int [] blockArray;
00396 
00397         public BlockTableModel(int [] block) {
00398             blockArray = block;
00399         }
00400 
00401         public void newData(int [] block) {
00402             blockArray = block;
00403             fireTableDataChanged();
00404         }
00405         
00406         public int getColumnCount() {
00407             // 16 + address + ascii version
00408             return 16+2;
00409         }
00410 
00411         public int getRowCount() {
00412             return (blockArray.length+7) / 8;
00413         }
00414 
00415         public Object getValueAt(int rowIndex, int columnIndex) {
00416 /*            System.out.println("r" + rowIndex + ", c" + columnIndex);
00417             System.out.println(" offset " + (rowIndex*8 + columnIndex) + " len " + blockArray.length);
00418 */
00419             if(columnIndex == 0) {
00420                 return Integer.toHexString(rowIndex*32);
00421             } else if(columnIndex == 17) {
00422                 StringBuffer buff = new StringBuffer();
00423                 
00424                 int offset = rowIndex*8;
00425 
00426                 for(int i=0; i<8; i++) {
00427                     if(offset + i >= blockArray.length) {
00428                         break;
00429                     }
00430 
00431                     for(int j=0; j<4; j++) {
00432                         int ascii = (blockArray[offset + i] >> (8*j)) & 0xff;
00433                         if(ascii >= 32 && ascii < 128) {
00434                             buff.append((char)ascii);
00435                         } else {
00436                             buff.append(".");
00437                         }
00438                     }
00439 
00440                     buff.append(" ");
00441                 }
00442                 return buff.toString();
00443             } else {
00444                 columnIndex --;
00445                 if((columnIndex/2) + rowIndex*8 >= blockArray.length) {
00446                     return null;
00447                 } else {
00448                     int value = blockArray[(columnIndex/2) + rowIndex*8];
00449                     String hexString = Integer.toHexString(value);
00450                     if(columnIndex % 2 == 0) {
00451                         if(hexString.length() > 4) {
00452                             hexString = hexString.substring(0, hexString.length()-4);
00453                         } else {
00454                             hexString = "0000";
00455                         }
00456                     } else {
00457                         if(hexString.length() > 4) {
00458                             hexString = hexString.substring(hexString.length()-4);
00459                         } else {
00460                             // Leave it
00461                         }
00462                     }
00463                     return "0000".substring(0, 4-hexString.length()) + hexString; 
00464                 }
00465             }
00466         }
00467         
00468         public String getColumnName(int columnIndex) {
00469             String retValue;
00470             
00471             if(columnIndex == 0) {
00472                 retValue = "";
00473             } else if(columnIndex == 17) {
00474                 retValue = "ASCII";
00475             } else {
00476                 columnIndex--;
00477                 retValue = Integer.toHexString((columnIndex * 2));
00478             }
00479 
00480             return retValue;
00481         }
00482     }
00483     
00484     // Variables declaration - do not modify//GEN-BEGIN:variables
00485     private javax.swing.JComboBox bankCombo;
00486     private javax.swing.JButton changeButton;
00487     private javax.swing.JLabel currBankLabel;
00488     private javax.swing.JLabel currSlotLabel;
00489     private GuiComponents.Inspector.InspectorPanel inspectorPanel1;
00490     private javax.swing.JButton jButton5;
00491     private javax.swing.JLabel jLabel1;
00492     private javax.swing.JLabel jLabel11;
00493     private javax.swing.JLabel jLabel12;
00494     private javax.swing.JLabel jLabel2;
00495     private javax.swing.JLabel jLabel3;
00496     private javax.swing.JLabel jLabel4;
00497     private javax.swing.JLabel jLabel5;
00498     private javax.swing.JLabel jLabel7;
00499     private javax.swing.JLabel jLabel8;
00500     private javax.swing.JPanel jPanel1;
00501     private javax.swing.JPanel jPanel2;
00502     private javax.swing.JPanel jPanel3;
00503     private javax.swing.JPanel jPanel4;
00504     private javax.swing.JPanel jPanel5;
00505     private javax.swing.JTextField jTextField2;
00506     private javax.swing.JTextField jTextField3;
00507     private javax.swing.JTextField jTextField4;
00508     private javax.swing.JTextField jTextField6;
00509     private javax.swing.JTextField slotText;
00510     private javax.swing.JComboBox varTypeCombo;
00511     private javax.swing.JTextField varValueText;
00512     // End of variables declaration//GEN-END:variables
00513     
00514 }

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