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

BocDiagnostics.java

00001 /*
00002  * BocDiagnostics.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.JFrame;
00012 import javax.swing.JPanel;
00013 import javax.swing.table.TableModel;
00014 import javax.swing.table.TableColumn;
00015 import javax.swing.table.JTableHeader;
00016 
00017 import Sct_SctApi.SctApi;
00018 
00024 public class BocDiagnostics extends JPanel implements java.io.Serializable {
00025     BocSetupTableModel bocTableModel;
00026 
00027     int partition;
00028     int crate;
00029     int rod;
00030     Sct_SctApi.SctApi api;
00031     
00033     public BocDiagnostics() {
00034         initComponents();
00035         modifyComponents();
00036     }
00037 
00039     public BocDiagnostics(int p, int c, int r, Sct_SctApi.SctApi a) {
00040         partition = p;
00041         crate = c;
00042         rod = r;
00043         api = a;
00044 
00045         initComponents();
00046         modifyComponents();
00047     }
00048 
00049     public static void main(String [] args) {
00050         javax.swing.JFrame f = new javax.swing.JFrame("BOC Diag test");
00051         
00052         f.getContentPane().add(new BocDiagnostics());
00053         f.pack();
00054         f.setVisible(true);
00055     }
00056 
00057     void modifyComponents() {
00058         JTableHeader tableHeader = bocSetupTable.getTableHeader();
00059         tableHeader.setReorderingAllowed(false);
00060         tableHeader.setResizingAllowed(false);
00061 
00062         int columnWidth = bocSetupTable.getFontMetrics(bocSetupTable.getFont()).stringWidth("mmmmmm");
00063 
00064         bocTableModel.newData(api.currentBOCSetup(partition, crate, rod));
00065         refreshRegisterFields();
00066 /*        TableColumn column = null;
00067         for (int i = 0; i < 9; i++) {
00068             column = bocSetupTable.getColumnModel().getColumn(i);
00069             if (i == 17) {
00070                 // The ASCII column at the end
00071                 column.setPreferredWidth(columnWidth * 8);
00072             } else {
00073                 column.setPreferredWidth(columnWidth);
00074                 column.setMaxWidth(columnWidth);
00075                 column.setMinWidth(columnWidth);
00076             }
00077         } */
00078     }
00079     
00085     private void initComponents() {//GEN-BEGIN:initComponents
00086         java.awt.GridBagConstraints gridBagConstraints;
00087 
00088         jPanel2 = new javax.swing.JPanel();
00089         jLabel3 = new javax.swing.JLabel();
00090         jTextField2 = new javax.swing.JTextField();
00091         jLabel4 = new javax.swing.JLabel();
00092         jTextField3 = new javax.swing.JTextField();
00093         jLabel5 = new javax.swing.JLabel();
00094         jTextField4 = new javax.swing.JTextField();
00095         jLabel7 = new javax.swing.JLabel();
00096         jTextField6 = new javax.swing.JTextField();
00097         jTabbedPane1 = new javax.swing.JTabbedPane();
00098         jPanel3 = new javax.swing.JPanel();
00099         jScrollPane1 = new javax.swing.JScrollPane();
00100         bocSetupTable = new javax.swing.JTable();
00101         jButton1 = new javax.swing.JButton();
00102         jButton2 = new javax.swing.JButton();
00103         jPanel5 = new javax.swing.JPanel();
00104         jPanel6 = new javax.swing.JPanel();
00105         refreshButton = new javax.swing.JButton();
00106         jPanel1 = new javax.swing.JPanel();
00107         jLabel1 = new javax.swing.JLabel();
00108         clkCText = new javax.swing.JTextField();
00109         jLabel2 = new javax.swing.JLabel();
00110         rxDataText = new javax.swing.JTextField();
00111         jLabel6 = new javax.swing.JLabel();
00112         rxDacText = new javax.swing.JTextField();
00113         jLabel8 = new javax.swing.JLabel();
00114         txDacText = new javax.swing.JTextField();
00115         jLabel9 = new javax.swing.JLabel();
00116         vFineText = new javax.swing.JTextField();
00117         jLabel10 = new javax.swing.JLabel();
00118         vClock0Text = new javax.swing.JTextField();
00119         jLabel11 = new javax.swing.JLabel();
00120         vClock1Text = new javax.swing.JTextField();
00121         jLabel12 = new javax.swing.JLabel();
00122         bpmPhaseText = new javax.swing.JTextField();
00123         jLabel13 = new javax.swing.JLabel();
00124         bregPhaseText = new javax.swing.JTextField();
00125 
00126         setLayout(new java.awt.BorderLayout());
00127 
00128         jPanel2.setLayout(new javax.swing.BoxLayout(jPanel2, javax.swing.BoxLayout.X_AXIS));
00129 
00130         jLabel3.setText("Partition");
00131         jPanel2.add(jLabel3);
00132 
00133         jTextField2.setEditable(false);
00134         jTextField2.setText(new Integer(getPartition()).toString());
00135         jPanel2.add(jTextField2);
00136 
00137         jLabel4.setText("Crate");
00138         jPanel2.add(jLabel4);
00139 
00140         jTextField3.setEditable(false);
00141         jTextField3.setText(new Integer(getCrate()).toString());
00142         jPanel2.add(jTextField3);
00143 
00144         jLabel5.setText("BOC");
00145         jPanel2.add(jLabel5);
00146 
00147         jTextField4.setEditable(false);
00148         jTextField4.setText(new Integer(getROD()).toString());
00149         jPanel2.add(jTextField4);
00150 
00151         jLabel7.setText("Slot");
00152         jPanel2.add(jLabel7);
00153 
00154         jTextField6.setEditable(false);
00155         jTextField6.setText(getRODSlot());
00156         jPanel2.add(jTextField6);
00157 
00158         add(jPanel2, java.awt.BorderLayout.NORTH);
00159 
00160         jPanel3.setLayout(new java.awt.GridBagLayout());
00161 
00162         bocSetupTable.setFont(new java.awt.Font("Monospaced", 0, 10));
00163         bocSetupTable.setModel(getBocSetupTableModel());
00164         bocSetupTable.setShowHorizontalLines(false);
00165         bocSetupTable.setShowVerticalLines(false);
00166         jScrollPane1.setViewportView(bocSetupTable);
00167 
00168         gridBagConstraints = new java.awt.GridBagConstraints();
00169         gridBagConstraints.gridy = 2;
00170         gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
00171         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
00172         gridBagConstraints.weightx = 1.0;
00173         gridBagConstraints.weighty = 1.0;
00174         jPanel3.add(jScrollPane1, gridBagConstraints);
00175 
00176         jButton1.setText("Refresh");
00177         jButton1.addActionListener(new java.awt.event.ActionListener() {
00178             public void actionPerformed(java.awt.event.ActionEvent evt) {
00179                 refreshBocSetupPerformed(evt);
00180             }
00181         });
00182 
00183         gridBagConstraints = new java.awt.GridBagConstraints();
00184         gridBagConstraints.gridy = 1;
00185         gridBagConstraints.weightx = 0.1;
00186         jPanel3.add(jButton1, gridBagConstraints);
00187 
00188         jButton2.setText("Re-configure");
00189         jButton2.addActionListener(new java.awt.event.ActionListener() {
00190             public void actionPerformed(java.awt.event.ActionEvent evt) {
00191                 reconfigureBOCSetupPerformed(evt);
00192             }
00193         });
00194 
00195         gridBagConstraints = new java.awt.GridBagConstraints();
00196         gridBagConstraints.gridy = 1;
00197         gridBagConstraints.weightx = 0.1;
00198         jPanel3.add(jButton2, gridBagConstraints);
00199 
00200         jTabbedPane1.addTab("Setup", jPanel3);
00201 
00202         jPanel5.setLayout(new java.awt.GridBagLayout());
00203 
00204         jPanel6.setLayout(new java.awt.GridBagLayout());
00205 
00206         refreshButton.setText("Refresh");
00207         refreshButton.addActionListener(new java.awt.event.ActionListener() {
00208             public void actionPerformed(java.awt.event.ActionEvent evt) {
00209                 refreshButtonActionPerformed(evt);
00210             }
00211         });
00212 
00213         jPanel6.add(refreshButton, new java.awt.GridBagConstraints());
00214 
00215         jPanel1.setLayout(new java.awt.GridBagLayout());
00216 
00217         jLabel1.setText("Clock control");
00218         gridBagConstraints = new java.awt.GridBagConstraints();
00219         gridBagConstraints.gridy = 0;
00220         jPanel1.add(jLabel1, gridBagConstraints);
00221 
00222         clkCText.setEditable(false);
00223         clkCText.setText("jTextField1");
00224         gridBagConstraints = new java.awt.GridBagConstraints();
00225         gridBagConstraints.gridy = 0;
00226         jPanel1.add(clkCText, gridBagConstraints);
00227 
00228         jLabel2.setText("RX data mode");
00229         gridBagConstraints = new java.awt.GridBagConstraints();
00230         gridBagConstraints.gridy = 1;
00231         jPanel1.add(jLabel2, gridBagConstraints);
00232 
00233         rxDataText.setEditable(false);
00234         rxDataText.setText("jTextField1");
00235         gridBagConstraints = new java.awt.GridBagConstraints();
00236         gridBagConstraints.gridy = 1;
00237         jPanel1.add(rxDataText, gridBagConstraints);
00238 
00239         jLabel6.setText("RX DAC clear");
00240         gridBagConstraints = new java.awt.GridBagConstraints();
00241         gridBagConstraints.gridy = 2;
00242         jPanel1.add(jLabel6, gridBagConstraints);
00243 
00244         rxDacText.setEditable(false);
00245         rxDacText.setText("jTextField1");
00246         gridBagConstraints = new java.awt.GridBagConstraints();
00247         gridBagConstraints.gridy = 2;
00248         jPanel1.add(rxDacText, gridBagConstraints);
00249 
00250         jLabel8.setText("TX DAC clear");
00251         gridBagConstraints = new java.awt.GridBagConstraints();
00252         gridBagConstraints.gridy = 3;
00253         jPanel1.add(jLabel8, gridBagConstraints);
00254 
00255         txDacText.setEditable(false);
00256         txDacText.setText("jTextField1");
00257         gridBagConstraints = new java.awt.GridBagConstraints();
00258         gridBagConstraints.gridy = 3;
00259         jPanel1.add(txDacText, gridBagConstraints);
00260 
00261         jLabel9.setText("Vernier fine phase");
00262         gridBagConstraints = new java.awt.GridBagConstraints();
00263         gridBagConstraints.gridy = 4;
00264         jPanel1.add(jLabel9, gridBagConstraints);
00265 
00266         vFineText.setEditable(false);
00267         vFineText.setText("jTextField1");
00268         gridBagConstraints = new java.awt.GridBagConstraints();
00269         gridBagConstraints.gridy = 4;
00270         jPanel1.add(vFineText, gridBagConstraints);
00271 
00272         jLabel10.setText("Vernier clock phase 0");
00273         gridBagConstraints = new java.awt.GridBagConstraints();
00274         gridBagConstraints.gridy = 5;
00275         jPanel1.add(jLabel10, gridBagConstraints);
00276 
00277         vClock0Text.setEditable(false);
00278         vClock0Text.setText("jTextField1");
00279         gridBagConstraints = new java.awt.GridBagConstraints();
00280         gridBagConstraints.gridy = 5;
00281         jPanel1.add(vClock0Text, gridBagConstraints);
00282 
00283         jLabel11.setText("Vernier clock phase 1");
00284         gridBagConstraints = new java.awt.GridBagConstraints();
00285         gridBagConstraints.gridy = 6;
00286         jPanel1.add(jLabel11, gridBagConstraints);
00287 
00288         vClock1Text.setEditable(false);
00289         vClock1Text.setText("jTextField1");
00290         gridBagConstraints = new java.awt.GridBagConstraints();
00291         gridBagConstraints.gridy = 6;
00292         jPanel1.add(vClock1Text, gridBagConstraints);
00293 
00294         jLabel12.setText("BPM clock phase");
00295         gridBagConstraints = new java.awt.GridBagConstraints();
00296         gridBagConstraints.gridy = 7;
00297         jPanel1.add(jLabel12, gridBagConstraints);
00298 
00299         bpmPhaseText.setEditable(false);
00300         bpmPhaseText.setText("jTextField1");
00301         gridBagConstraints = new java.awt.GridBagConstraints();
00302         gridBagConstraints.gridy = 7;
00303         jPanel1.add(bpmPhaseText, gridBagConstraints);
00304 
00305         jLabel13.setText("bReg clock phase");
00306         gridBagConstraints = new java.awt.GridBagConstraints();
00307         gridBagConstraints.gridy = 8;
00308         jPanel1.add(jLabel13, gridBagConstraints);
00309 
00310         bregPhaseText.setEditable(false);
00311         bregPhaseText.setText("jTextField1");
00312         gridBagConstraints = new java.awt.GridBagConstraints();
00313         gridBagConstraints.gridy = 8;
00314         jPanel1.add(bregPhaseText, gridBagConstraints);
00315 
00316         gridBagConstraints = new java.awt.GridBagConstraints();
00317         gridBagConstraints.gridy = 1;
00318         jPanel6.add(jPanel1, gridBagConstraints);
00319 
00320         gridBagConstraints = new java.awt.GridBagConstraints();
00321         gridBagConstraints.gridy = 0;
00322         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
00323         gridBagConstraints.weightx = 1.0;
00324         jPanel5.add(jPanel6, gridBagConstraints);
00325 
00326         jTabbedPane1.addTab("Global Registers", jPanel5);
00327 
00328         add(jTabbedPane1, java.awt.BorderLayout.CENTER);
00329 
00330     }//GEN-END:initComponents
00331 
00332     private void reconfigureBOCSetupPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_reconfigureBOCSetupPerformed
00333         api.configureBOC(partition, crate, rod);
00334         refreshRegisterFields();
00335     }//GEN-LAST:event_reconfigureBOCSetupPerformed
00336 
00337     private void refreshButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_refreshButtonActionPerformed
00338         refreshRegisterFields();
00339     }//GEN-LAST:event_refreshButtonActionPerformed
00340 
00341     private void refreshBocSetupPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_refreshBocSetupPerformed
00342         bocTableModel.newData(api.currentBOCSetup(partition, crate, rod));
00343     }//GEN-LAST:event_refreshBocSetupPerformed
00344 
00345     public TableModel getBocSetupTableModel() {
00346         if(bocTableModel == null) {
00347             sctConf.BOCChannelConfig [] nullBlock = new sctConf.BOCChannelConfig[0];
00348 
00349             bocTableModel = new BocDiagnostics.BocSetupTableModel(nullBlock);
00350         }
00351 
00352         return bocTableModel;
00353     }    
00354     
00355     public void refreshRegisterFields() {
00356         sctConf.BOCGlobalConfig regs = api.currentBOCRegisters(partition, crate, rod);
00357 
00358         clkCText.setText("" + regs.clockControl);
00359         rxDataText.setText("" + regs.rxDataMode);
00360         rxDacText.setText("" + regs.rxDacClear);
00361         txDacText.setText("" + regs.txDacClear);
00362         vFineText.setText("" + regs.vernierFinePhase);
00363         vClock0Text.setText("" + regs.vernierClockPhase0);
00364         vClock1Text.setText("" + regs.vernierClockPhase1);
00365         bpmPhaseText.setText("" + regs.bpmClockPhase);
00366         bregPhaseText.setText("" + regs.bregClockPhase);
00367     }
00368     
00369     public int getPartition() {
00370         return partition;
00371     }
00372 
00373     public int getCrate() {
00374         return crate;
00375     }
00376 
00377     public int getROD() {
00378         return rod;
00379     }
00380 
00381     public String getRODSlot() {
00382         try {
00383             long rodSlot = api.getRodSlot(partition, crate, rod);
00384             return "" + rodSlot;
00385         } catch(NullPointerException n) {
00386             return "No API";
00387         }
00388     }
00389 
00390     public boolean isRODValid() {
00391         if(api == null) {
00392             if(getTopLevelAncestor() == null) {
00393                 // Doesn't have an ancestor when its being constructed...
00394                 return false;
00395             } else {
00396                 ((Window)getTopLevelAncestor()).dispose();
00397                 return false;
00398             }
00399         } else {
00400             return api.isRODPresent(partition, crate, rod);
00401         }
00402     }
00403 
00408     public void setPartition(int partition) { this.partition = partition; }
00409     
00410     public class BocSetupTableModel extends javax.swing.table.AbstractTableModel {
00411         sctConf.BOCChannelConfig [] blockArray;
00412 
00413         public BocSetupTableModel(sctConf.BOCChannelConfig [] block) {
00414             blockArray = block;
00415         }
00416 
00417         public void newData(sctConf.BOCChannelConfig [] block) {
00418             blockArray = block;
00419             fireTableDataChanged();
00420         }
00421         
00422         public int getColumnCount() {
00423             return 9;
00424         }
00425 
00426         public int getRowCount() {
00427             return 48;
00428         }
00429 
00430         public Object getValueAt(int rowIndex, int columnIndex) {
00431             sctConf.BOCChannelConfig ch = blockArray[rowIndex];
00432             
00433             switch(columnIndex) {
00434                 case 0: return "" + rowIndex;
00435                 case 1: return "0x" + Integer.toHexString(ch.current);
00436                 case 2: return "0x" + Integer.toHexString((ch.delay & 0xff00) >> 8);
00437                 case 3: return "0x" + Integer.toHexString(ch.delay & 0xff);
00438                 case 4: return "0x" + Integer.toHexString(ch.markSpace);
00439                 case 5: return "0x" + Integer.toHexString(ch.threshold0);
00440                 case 6: return "0x" + Integer.toHexString(ch.delay0);
00441                 case 7: return "0x" + Integer.toHexString(ch.threshold1);
00442                 case 8: return "0x" + Integer.toHexString(ch.delay1);
00443                 default: return "---";
00444             }
00445         }
00446         
00447         public String getColumnName(int columnIndex) {
00448             String retValue;
00449 
00450             switch(columnIndex) {
00451             case 0: retValue = "Channel"; break;
00452             case 1: retValue = "Current"; break;
00453             case 2: retValue = "Coarse Delay"; break;
00454             case 3: retValue = "Fine Delay"; break;
00455             case 4: retValue = "Mark/space"; break;
00456             case 5: retValue = "Threshold 0"; break;
00457             case 6: retValue = "RX Delay 0"; break;
00458             case 7: retValue = "Threshold 1"; break;
00459             case 8: retValue = "RX Delay 1"; break;
00460             default: retValue = "Unkown"; break;
00461             }
00462 
00463             return retValue;
00464         }
00465     }
00466     
00467     // Variables declaration - do not modify//GEN-BEGIN:variables
00468     private javax.swing.JTable bocSetupTable;
00469     private javax.swing.JTextField bpmPhaseText;
00470     private javax.swing.JTextField bregPhaseText;
00471     private javax.swing.JTextField clkCText;
00472     private javax.swing.JButton jButton1;
00473     private javax.swing.JButton jButton2;
00474     private javax.swing.JLabel jLabel1;
00475     private javax.swing.JLabel jLabel10;
00476     private javax.swing.JLabel jLabel11;
00477     private javax.swing.JLabel jLabel12;
00478     private javax.swing.JLabel jLabel13;
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 jPanel5;
00491     private javax.swing.JPanel jPanel6;
00492     private javax.swing.JScrollPane jScrollPane1;
00493     private javax.swing.JTabbedPane jTabbedPane1;
00494     private javax.swing.JTextField jTextField2;
00495     private javax.swing.JTextField jTextField3;
00496     private javax.swing.JTextField jTextField4;
00497     private javax.swing.JTextField jTextField6;
00498     private javax.swing.JButton refreshButton;
00499     private javax.swing.JTextField rxDacText;
00500     private javax.swing.JTextField rxDataText;
00501     private javax.swing.JTextField txDacText;
00502     private javax.swing.JTextField vClock0Text;
00503     private javax.swing.JTextField vClock1Text;
00504     private javax.swing.JTextField vFineText;
00505     // End of variables declaration//GEN-END:variables
00506     
00507 }

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