00001 package GuiComponents.SctConf;
00002
00003 import java.util.Enumeration;
00004 import java.util.Vector;
00005 import java.awt.Dimension;
00006 import java.awt.BorderLayout;
00007 import java.awt.event.ActionEvent;
00008 import java.awt.event.ActionListener;
00009 import java.awt.event.MouseAdapter;
00010 import java.awt.event.MouseEvent;
00011 import java.awt.event.WindowAdapter;
00012 import java.awt.event.WindowEvent;
00013 import javax.swing.JComponent;
00014 import javax.swing.JFrame;
00015 import javax.swing.JPanel;
00016 import javax.swing.JLabel;
00017 import javax.swing.JMenuItem;
00018 import javax.swing.JPopupMenu;
00019 import javax.swing.JOptionPane;
00020 import javax.swing.JScrollPane;
00021 import javax.swing.JSplitPane;
00022 import javax.swing.JTable;
00023 import javax.swing.table.AbstractTableModel;
00024
00025 import org.omg.CORBA.IntHolder;
00026
00027 import sctConf.Configuration;
00028 import sctConf.ConfigurationException;
00029
00030 public class PowerMappings extends JPanel {
00031 private sctConf.Configuration config;
00032
00033
00034
00035 private JPopupMenu popup;
00036
00037 private FullModel fullModel;
00038 private DefaultModel defaultModel;
00039
00040 String paramList[];
00041
00042 String runMode;
00043
00044 public PowerMappings(Configuration conf) {
00045 config = conf;
00046
00047 try {
00048 paramList = config.listDefaultPowerParams();
00049 } catch(ConfigurationException cex) {
00050 paramList = new String[0];
00051 }
00052
00053 fullModel = new FullModel(config);
00054 defaultModel = new DefaultModel(config);
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079 initComponents();
00080 }
00081
00087 private void initComponents() {
00088 java.awt.GridBagConstraints gridBagConstraints;
00089
00090 jSplitPane1 = new javax.swing.JSplitPane();
00091 jScrollPane1 = new javax.swing.JScrollPane();
00092 jTable1 = new javax.swing.JTable();
00093 jScrollPane2 = new javax.swing.JScrollPane();
00094 jTable2 = new javax.swing.JTable();
00095 jPanel1 = new javax.swing.JPanel();
00096 stateCombo = new javax.swing.JComboBox();
00097
00098 setLayout(new java.awt.BorderLayout());
00099
00100 jSplitPane1.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
00101 jScrollPane1.setPreferredSize(new java.awt.Dimension(100, 100));
00102 jTable1.setModel(defaultModel);
00103 jScrollPane1.setViewportView(jTable1);
00104
00105 jSplitPane1.setLeftComponent(jScrollPane1);
00106
00107 jScrollPane2.setPreferredSize(new java.awt.Dimension(500, 300));
00108 jTable2.setModel(fullModel);
00109 jScrollPane2.setViewportView(jTable2);
00110
00111 jSplitPane1.setRightComponent(jScrollPane2);
00112
00113 add(jSplitPane1, java.awt.BorderLayout.CENTER);
00114
00115 stateCombo.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "OFF", "STANDBY", "ON" }));
00116 jPanel1.add(stateCombo);
00117
00118 add(jPanel1, java.awt.BorderLayout.NORTH);
00119
00120 }
00121
00122 private class MouseClickHandler extends MouseAdapter {
00123 private JMenuItem menuWithAction(String name, Object thing) {
00124 JMenuItem result = new JMenuItem(name);
00125
00126
00127 return result;
00128 }
00129
00130 private void checkPopup(MouseEvent event) {
00131 }
00132 public void mousePressed(MouseEvent event){
00133 checkPopup(event);
00134 }
00135 public void mouseReleased(MouseEvent event){
00136 checkPopup(event);
00137 }
00138 }
00139
00144 public class DefaultModel extends AbstractTableModel {
00145 String columnNames[] = {"Parameter", "Nominal", "LowWarning", "LowError", "HighWarning", "HighError"};
00146
00147 Configuration conf;
00148
00149
00150
00151
00152
00153 public DefaultModel(Configuration c) {
00154 conf = c;
00155
00156 }
00157
00158 public int getColumnCount() {
00159 return 2;
00160 }
00161
00162 public int getRowCount() {
00163
00164 return paramList.length + 1;
00165 }
00166
00167 public Object getValueAt(int row, int col) {
00168 if(row == paramList.length) {
00169 return "";
00170 } else {
00171 switch(col) {
00172 case 0:
00173 return paramList[row];
00174 case 1:
00175
00176
00177
00178 return "Undefined!";
00179
00180 default:
00181 return null;
00182 }
00183 }
00184 }
00185
00186 public boolean isCellEditable(int rowIndex, int columnIndex) {
00187 if(rowIndex == paramList.length) {
00188 if(columnIndex == 0) {
00189 return true;
00190 } else {
00191 return false;
00192 }
00193 } else {
00194 if(columnIndex > 0) {
00195 return true;
00196 } else {
00197 return false;
00198 }
00199 }
00200 }
00201
00202 public String getColumnName(int column) {
00203 if(column > 0 && column < columnNames.length) {
00204 return columnNames[column];
00205 } else {
00206 return "Unknown";
00207 }
00208 }
00209
00210 public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
00211 if(columnIndex == 0) {
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225 JOptionPane.showMessageDialog(null, "Failed to configure default power param: Bad GUI");
00226
00227 } else {
00228
00229
00230
00231 JOptionPane.showMessageDialog(null, "Failed to configure default power param: Bad GUI");
00232
00233 }
00234 }
00235 }
00236
00241 public class FullModel extends AbstractTableModel {
00242 String columnNames[] = {"Module", "Crate", "Channel", "Parameter", "Nominal", "LowWarning", "LowError", "HighWarning", "HighError"};
00243
00244 Configuration config;
00245
00246
00247
00248
00249 String [] moduleList;
00250
00251 public FullModel(Configuration c) {
00252 config = c;
00253
00254
00255 try {
00256 paramList = config.listDefaultPowerParams();
00257 } catch(ConfigurationException cex) {
00258 paramList = null;
00259 }
00260
00261 try {
00262 moduleList = config.listAllModules();
00263 } catch(ConfigurationException cex) {
00264 moduleList = null;
00265 }
00266 }
00267
00268 public int getColumnCount() {
00269 return columnNames.length;
00270 }
00271
00272 public int getRowCount() {
00273 return paramList.length * moduleList.length;
00274 }
00275
00276 public Object getValueAt(int row, int col) {
00277 String name = columnNames[col];
00278
00279 if(name.equals("Module")) {
00280 return moduleList[row / paramList.length];
00281 } else if(name.equals("Parameter")) {
00282 return paramList[row % paramList.length];
00283 } else if(name.equals("Crate")) {
00284 return crateForModule(row);
00285 } else if(name.equals("Channel")) {
00286 return channelForModule(row);
00287 } else if(name.equals("Nominal")) {
00288 return parameterForModule(row, "N");
00289 } else if(name.equals("HighWarning")) {
00290 return parameterForModule(row, "HW");
00291 } else if(name.equals("LowWarning")) {
00292 return parameterForModule(row, "LW");
00293 } else if(name.equals("HighError")) {
00294 return parameterForModule(row, "HE");
00295 } else if(name.equals("LowError")) {
00296 return parameterForModule(row, "LE");
00297 } else {
00298 return "Unknown";
00299 }
00300 }
00301
00302 public boolean isCellEditable(int rowIndex, int columnIndex) {
00303 if(columnIndex > 1) {
00304 return true;
00305 } else {
00306 return false;
00307 }
00308 }
00309
00310 public String getColumnName(int column) {
00311 if(column > 0 && column < columnNames.length) {
00312 return columnNames[column];
00313 } else {
00314 return "Unknown";
00315 }
00316 }
00317
00318 public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
00319 if(columnIndex == 2) {
00320 try {
00321 IntHolder MUR = new IntHolder(), num = new IntHolder();
00322 config.translateFromSN(moduleList[rowIndex / paramList.length], MUR, num);
00323
00324
00325
00326
00327
00328 } catch(ConfigurationException c) {
00329 JOptionPane.showMessageDialog(null, "Failed to configure power param: " + c.detail);
00330 }
00331 } else {
00332
00333 }
00334 }
00335
00336 Object crateForModule(int row) {
00337 return "unimplemented";
00338 }
00339
00340 Object channelForModule(int row) {
00341 return "unimplemented";
00342 }
00343
00344 Object parameterForModule(int row, String code) {
00345 String sn = moduleList[row / paramList.length];
00346 String param = paramList[row % paramList.length] + "_" + code;
00347
00348 IntHolder MUR = new IntHolder(), num = new IntHolder();
00349 try {
00350 config.translateFromSN(sn, MUR, num);
00351 } catch(ConfigurationException c) {
00352 return "UnMapped!";
00353 }
00354
00355
00356
00357 return "Undefined!";
00358
00359 }
00360 }
00361
00362
00363 private javax.swing.JPanel jPanel1;
00364 private javax.swing.JScrollPane jScrollPane1;
00365 private javax.swing.JScrollPane jScrollPane2;
00366 private javax.swing.JSplitPane jSplitPane1;
00367 private javax.swing.JTable jTable1;
00368 private javax.swing.JTable jTable2;
00369 private javax.swing.JComboBox stateCombo;
00370
00371
00372 }