00001
00006 package TestGUI;
00007
00008 import javax.swing.*;
00009 import is.*;
00010 import SctData.*;
00011 import Sct.Version;
00012 import GuiComponents.System.*;
00013 import SctTestApi.*;
00014
00019 public class MyJPanel extends javax.swing.JPanel {
00020 protected static JTextArea taOutput;
00021
00023 public MyJPanel() {
00024 initComponents();
00025 myInitComponents();
00026 }
00027
00028 private void exit() {
00029 pIS.close();
00030 pMRS.close();
00031 pCC.close();
00032 System.exit(0);
00033 }
00034
00035 private void myInitComponents() {
00036 taOutput = new JTextArea() {
00037 public void append(String str) {
00038 super.append(str);
00039 setCaretPosition(getText().length());
00040 }
00041 };
00042
00043 taOutput.setEditable(false);
00044 taOutput.setBorder(new javax.swing.border.EtchedBorder());
00045 jScrollPane1.setViewportView(taOutput);
00046
00047 si = SystemInterface.getInstance();
00048 is = ISInterface.getInstance();
00049 pIS = new ISPanel(taOutput);
00050 pMRS = new MRSPanel(taOutput);
00051 pCC = new CalibrationControllerPanel(taOutput);
00052 scripting = new ScriptingPanel(this);
00053
00054 this.tpTabs.insertTab("IS", null, pIS, "IS Servers in Partition SCT", 0);
00055 this.tpTabs.insertTab("MRS", null, pMRS, "MRS Messages for Partition SCT", 1);
00056 this.tpTabs.insertTab("CalibrationController", null, pCC, "Interface to Calibration Controller", 2);
00057 this.tpTabs.addTab("Scripting", null, scripting, "Gives command line access in a choice of languages");
00058 }
00059
00060 public static JTextArea getMessageArea() {
00061 return taOutput;
00062 }
00063
00069 private void initComponents() {
00070 java.awt.GridBagConstraints gridBagConstraints;
00071
00072 jSplitPane1 = new javax.swing.JSplitPane();
00073 tpTabs = new javax.swing.JTabbedPane();
00074 pAPI = new javax.swing.JPanel();
00075 bRefresh = new javax.swing.JButton();
00076 bPipeline = new javax.swing.JButton();
00077 bTrim = new javax.swing.JButton();
00078 bStobe = new javax.swing.JButton();
00079 bApiPing = new javax.swing.JButton();
00080 jSeparator1 = new javax.swing.JSeparator();
00081 bNoise = new javax.swing.JButton();
00082 b3Gain = new javax.swing.JButton();
00083 bResponse = new javax.swing.JButton();
00084 jLabel1 = new javax.swing.JLabel();
00085 bBypass = new javax.swing.JButton();
00086 bTimeWalk = new javax.swing.JButton();
00087 jPanel1 = new javax.swing.JPanel();
00088 lOutput = new javax.swing.JLabel();
00089 jScrollPane1 = new javax.swing.JScrollPane();
00090 jPanel2 = new javax.swing.JPanel();
00091 bAbout = new javax.swing.JButton();
00092 bGC = new javax.swing.JButton();
00093 bExit = new javax.swing.JButton();
00094
00095 setLayout(new java.awt.GridBagLayout());
00096
00097 jSplitPane1.setDividerLocation(400);
00098 jSplitPane1.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
00099 pAPI.setLayout(new java.awt.GridBagLayout());
00100
00101 pAPI.setName("API");
00102 bRefresh.setText("Refresh");
00103 bRefresh.addActionListener(new java.awt.event.ActionListener() {
00104 public void actionPerformed(java.awt.event.ActionEvent evt) {
00105 bRefreshActionPerformed(evt);
00106 }
00107 });
00108
00109 gridBagConstraints = new java.awt.GridBagConstraints();
00110 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
00111 gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00112 pAPI.add(bRefresh, gridBagConstraints);
00113
00114 bPipeline.setText("Pipeline Test");
00115 bPipeline.addActionListener(new java.awt.event.ActionListener() {
00116 public void actionPerformed(java.awt.event.ActionEvent evt) {
00117 bPipelineActionPerformed(evt);
00118 }
00119 });
00120
00121 gridBagConstraints = new java.awt.GridBagConstraints();
00122 gridBagConstraints.gridx = 2;
00123 gridBagConstraints.gridy = 1;
00124 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
00125 gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00126 pAPI.add(bPipeline, gridBagConstraints);
00127
00128 bTrim.setText("Trim Range");
00129 bTrim.addActionListener(new java.awt.event.ActionListener() {
00130 public void actionPerformed(java.awt.event.ActionEvent evt) {
00131 bTrimActionPerformed(evt);
00132 }
00133 });
00134
00135 gridBagConstraints = new java.awt.GridBagConstraints();
00136 gridBagConstraints.gridx = 3;
00137 gridBagConstraints.gridy = 0;
00138 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
00139 gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00140 pAPI.add(bTrim, gridBagConstraints);
00141
00142 bStobe.setText("Strobe Delay");
00143 bStobe.addActionListener(new java.awt.event.ActionListener() {
00144 public void actionPerformed(java.awt.event.ActionEvent evt) {
00145 bStobeActionPerformed(evt);
00146 }
00147 });
00148
00149 gridBagConstraints = new java.awt.GridBagConstraints();
00150 gridBagConstraints.gridx = 2;
00151 gridBagConstraints.gridy = 2;
00152 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
00153 gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00154 pAPI.add(bStobe, gridBagConstraints);
00155
00156 bApiPing.setText("Ping");
00157 bApiPing.addActionListener(new java.awt.event.ActionListener() {
00158 public void actionPerformed(java.awt.event.ActionEvent evt) {
00159 bApiPingActionPerformed(evt);
00160 }
00161 });
00162
00163 gridBagConstraints = new java.awt.GridBagConstraints();
00164 gridBagConstraints.gridx = 0;
00165 gridBagConstraints.gridy = 1;
00166 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
00167 gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00168 pAPI.add(bApiPing, gridBagConstraints);
00169
00170 jSeparator1.setOrientation(javax.swing.SwingConstants.VERTICAL);
00171 gridBagConstraints = new java.awt.GridBagConstraints();
00172 gridBagConstraints.gridx = 1;
00173 gridBagConstraints.gridy = 0;
00174 gridBagConstraints.gridheight = 4;
00175 gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
00176 gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00177 pAPI.add(jSeparator1, gridBagConstraints);
00178
00179 bNoise.setText("Noise");
00180 bNoise.addActionListener(new java.awt.event.ActionListener() {
00181 public void actionPerformed(java.awt.event.ActionEvent evt) {
00182 bNoiseActionPerformed(evt);
00183 }
00184 });
00185
00186 gridBagConstraints = new java.awt.GridBagConstraints();
00187 gridBagConstraints.gridx = 3;
00188 gridBagConstraints.gridy = 2;
00189 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
00190 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
00191 gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00192 pAPI.add(bNoise, gridBagConstraints);
00193
00194 b3Gain.setText("3 Point Gain");
00195 b3Gain.addActionListener(new java.awt.event.ActionListener() {
00196 public void actionPerformed(java.awt.event.ActionEvent evt) {
00197 b3GainActionPerformed(evt);
00198 }
00199 });
00200
00201 gridBagConstraints = new java.awt.GridBagConstraints();
00202 gridBagConstraints.gridx = 2;
00203 gridBagConstraints.gridy = 3;
00204 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
00205 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
00206 gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00207 pAPI.add(b3Gain, gridBagConstraints);
00208
00209 bResponse.setText("Response Curve");
00210 bResponse.addActionListener(new java.awt.event.ActionListener() {
00211 public void actionPerformed(java.awt.event.ActionEvent evt) {
00212 bResponseActionPerformed(evt);
00213 }
00214 });
00215
00216 gridBagConstraints = new java.awt.GridBagConstraints();
00217 gridBagConstraints.gridx = 3;
00218 gridBagConstraints.gridy = 1;
00219 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
00220 gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00221 pAPI.add(bResponse, gridBagConstraints);
00222
00223 gridBagConstraints = new java.awt.GridBagConstraints();
00224 gridBagConstraints.gridx = 4;
00225 gridBagConstraints.gridy = 4;
00226 gridBagConstraints.weightx = 1.0;
00227 gridBagConstraints.weighty = 1.0;
00228 gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00229 pAPI.add(jLabel1, gridBagConstraints);
00230
00231 bBypass.setText("Full Bypass");
00232 bBypass.addActionListener(new java.awt.event.ActionListener() {
00233 public void actionPerformed(java.awt.event.ActionEvent evt) {
00234 bBypassActionPerformed(evt);
00235 }
00236 });
00237
00238 gridBagConstraints = new java.awt.GridBagConstraints();
00239 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
00240 gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00241 pAPI.add(bBypass, gridBagConstraints);
00242
00243 bTimeWalk.setText("Time Walk");
00244 bTimeWalk.addActionListener(new java.awt.event.ActionListener() {
00245 public void actionPerformed(java.awt.event.ActionEvent evt) {
00246 bTimeWalkActionPerformed(evt);
00247 }
00248 });
00249
00250 gridBagConstraints = new java.awt.GridBagConstraints();
00251 gridBagConstraints.gridx = 3;
00252 gridBagConstraints.gridy = 3;
00253 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
00254 gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00255 pAPI.add(bTimeWalk, gridBagConstraints);
00256
00257 tpTabs.addTab("API", null, pAPI, "Controls the test SCTAPI interface");
00258
00259 jSplitPane1.setTopComponent(tpTabs);
00260
00261 jPanel1.setLayout(new java.awt.BorderLayout());
00262
00263 lOutput.setText("Output");
00264 jPanel1.add(lOutput, java.awt.BorderLayout.NORTH);
00265
00266 jPanel1.add(jScrollPane1, java.awt.BorderLayout.CENTER);
00267
00268 jSplitPane1.setBottomComponent(jPanel1);
00269
00270 gridBagConstraints = new java.awt.GridBagConstraints();
00271 gridBagConstraints.gridx = 0;
00272 gridBagConstraints.gridy = 0;
00273 gridBagConstraints.gridwidth = 3;
00274 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
00275 gridBagConstraints.weightx = 1.0;
00276 gridBagConstraints.weighty = 1.0;
00277 gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00278 add(jSplitPane1, gridBagConstraints);
00279
00280 jPanel2.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));
00281
00282 bAbout.setText("About");
00283 bAbout.addActionListener(new java.awt.event.ActionListener() {
00284 public void actionPerformed(java.awt.event.ActionEvent evt) {
00285 bAboutActionPerformed(evt);
00286 }
00287 });
00288
00289 jPanel2.add(bAbout);
00290
00291 bGC.setText("GC");
00292 bGC.setMaximumSize(new java.awt.Dimension(57, 32));
00293 bGC.setMinimumSize(new java.awt.Dimension(57, 32));
00294 bGC.setPreferredSize(new java.awt.Dimension(57, 32));
00295 bGC.addActionListener(new java.awt.event.ActionListener() {
00296 public void actionPerformed(java.awt.event.ActionEvent evt) {
00297 bGCActionPerformed(evt);
00298 }
00299 });
00300
00301 jPanel2.add(bGC);
00302
00303 bExit.setText("Exit");
00304 bExit.addActionListener(new java.awt.event.ActionListener() {
00305 public void actionPerformed(java.awt.event.ActionEvent evt) {
00306 bExitActionPerformed(evt);
00307 }
00308 });
00309
00310 jPanel2.add(bExit);
00311
00312 gridBagConstraints = new java.awt.GridBagConstraints();
00313 gridBagConstraints.gridx = 2;
00314 gridBagConstraints.gridy = 1;
00315 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
00316 add(jPanel2, gridBagConstraints);
00317
00318 }
00319
00320 private void bTimeWalkActionPerformed(java.awt.event.ActionEvent evt) {
00321 HighLevelApi api = si.getTestHighLevelApi();
00322 if (api != null) {
00323 try {
00324 api.timeWalk();
00325 taOutput.append("Requesting SctTest do a timewalk scan\n");
00326 } catch (SctTestApi.NoDataException nde) {
00327 taOutput.append("Failed to do a timewalk scan: " + nde.getMessage());
00328 }
00329 } else {
00330 taOutput.append("SctTest not present\n");
00331 }
00332 }
00333
00334 private void bBypassActionPerformed(java.awt.event.ActionEvent evt) {
00335 HighLevelApi api = si.getTestHighLevelApi();
00336 if (api != null) {
00337 try {
00338 api.fullBypass();
00339 taOutput.append("Requesting SctTest do a full bypass scan\n");
00340 } catch (SctTestApi.NoDataException nde) {
00341 taOutput.append("Failed to do a full bypass scan: " + nde.getMessage());
00342 }
00343 } else {
00344 taOutput.append("SctTest not present\n");
00345 }
00346 }
00347
00348 private void bAboutActionPerformed(java.awt.event.ActionEvent evt) {
00349 String version = Version.instance.getAllInformation();
00350 String s = "TestGUI is a simple user interface for developers and is also used as a testbed for new developments.";
00351 s += "\nIt comes with no instructions or warranties, but may be useful for some purposes!";
00352 s += "\nTestGUI Author: Matthew Palmer.";
00353 s += "\nSctDaqRod Authors: Alan Barr, Bruce Gallop, Matthew Palmer, Dave Robinson and Alexander Tricoli";
00354 s += "\n\n" + version;
00355 JOptionPane.showMessageDialog(this, s, "About TestGUI", JOptionPane.INFORMATION_MESSAGE);
00356 }
00357
00358 private void bRefreshActionPerformed(java.awt.event.ActionEvent evt) {
00359 si.refresh();
00360 }
00361
00362 private void bPipelineActionPerformed(java.awt.event.ActionEvent evt) {
00363 HighLevelApi api = si.getTestHighLevelApi();
00364 if (api != null) {
00365 try {
00366 api.pipeline();
00367 taOutput.append("Requesting SctTest do a pipeline scan\n");
00368 } catch (SctTestApi.NoDataException nde) {
00369 taOutput.append("Failed to do a pipeline scan: " + nde.getMessage());
00370 }
00371 } else {
00372 taOutput.append("SctTest not present\n");
00373 }
00374 }
00375
00376 private void bTrimActionPerformed(java.awt.event.ActionEvent evt) {
00377 HighLevelApi api = si.getTestHighLevelApi();
00378 if (api != null) {
00379 try {
00380 api.trim();
00381 taOutput.append("Requesting sct_api_server do a trim range scan\n");
00382 } catch (SctTestApi.NoDataException nde) {
00383 taOutput.append("Failed to do a trim scan: " + nde.getMessage());
00384 }
00385 } else {
00386 taOutput.append("SCTTestAPI not present\n");
00387 }
00388 }
00389
00390 private void bStobeActionPerformed(java.awt.event.ActionEvent evt) {
00391 HighLevelApi api = si.getTestHighLevelApi();
00392 if (api != null) {
00393 try {
00394 api.strobeDelay();
00395 taOutput.append("Requesting SctTest do a strobe delay scan\n");
00396 } catch (SctTestApi.NoDataException nde) {
00397 taOutput.append("Failed to do a strobe delay scan: " + nde.getMessage());
00398 }
00399 } else {
00400 taOutput.append("SctTest not present\n");
00401 }
00402 }
00403
00404 private void bApiPingActionPerformed(java.awt.event.ActionEvent evt) {
00405 HighLevelApi api = si.getTestHighLevelApi();
00406 if (api != null) {
00407
00408 } else {
00409 taOutput.append("SctTest not present\n");
00410 }
00411 }
00412
00413 private void bNoiseActionPerformed(java.awt.event.ActionEvent evt) {
00414 HighLevelApi api = si.getTestHighLevelApi();
00415 if (api != null) {
00416 try {
00417 api.noiseOccupancy();
00418 taOutput.append("Requesting SctTest do a noise scan\n");
00419 } catch (SctTestApi.NoDataException nde) {
00420 taOutput.append("Failed to do a noise occupancy scan: " + nde.getMessage());
00421 }
00422 } else {
00423 taOutput.append("SctTest not present\n");
00424 }
00425 }
00426
00427 private void b3GainActionPerformed(java.awt.event.ActionEvent evt) {
00428 HighLevelApi api = si.getTestHighLevelApi();
00429 if (api != null) {
00430 try {
00431 api.threePointGain();
00432 taOutput.append("Requesting SctTest do a 3 pt gain scan\n");
00433 } catch (SctTestApi.NoDataException nde) {
00434 taOutput.append("Failed to do a three point gain scan: " + nde.getMessage());
00435 }
00436 } else {
00437 taOutput.append("SctTest not present\n");
00438 }
00439 }
00440
00441 private void bResponseActionPerformed(java.awt.event.ActionEvent evt) {
00442 HighLevelApi api = si.getTestHighLevelApi();
00443 if (api != null) {
00444 try {
00445 api.responseCurve();
00446 taOutput.append("Requesting SctTest do a response curve scan\n");
00447 } catch (SctTestApi.NoDataException nde) {
00448 taOutput.append("Failed to do a response curve: " + nde.getMessage());
00449 }
00450 } else {
00451 taOutput.append("SctTest not present\n");
00452 }
00453 }
00454
00455 private void bGCActionPerformed(java.awt.event.ActionEvent evt) {
00456 Runtime r = Runtime.getRuntime();
00457 long freeMem = r.freeMemory();
00458 long maxMem = r.maxMemory();
00459 long totalMem = r.totalMemory();
00460 taOutput.append("Total Mem: " + totalMem/1024. + ", Max Mem:" + maxMem/1024. + " , Free Mem: " + freeMem/1024.+ "\n" );
00461 r.gc();
00462 try {
00463 Thread.sleep(500);
00464 } catch (InterruptedException ie) {}
00465 r.gc();
00466 freeMem = r.freeMemory();
00467 maxMem = r.maxMemory();
00468 totalMem = r.totalMemory();
00469 taOutput.append("Total Mem: " + totalMem/1024. + ", Max Mem:" + maxMem/1024. + " , Free Mem: " + freeMem/1024. + "\n" );
00470 }
00471
00472
00473 private void bExitActionPerformed(java.awt.event.ActionEvent evt) {
00474 exit();
00475 }
00476
00477
00478
00479 private javax.swing.JButton b3Gain;
00480 private javax.swing.JButton bAbout;
00481 private javax.swing.JButton bApiPing;
00482 private javax.swing.JButton bBypass;
00483 private javax.swing.JButton bExit;
00484 private javax.swing.JButton bGC;
00485 private javax.swing.JButton bNoise;
00486 private javax.swing.JButton bPipeline;
00487 private javax.swing.JButton bRefresh;
00488 private javax.swing.JButton bResponse;
00489 private javax.swing.JButton bStobe;
00490 private javax.swing.JButton bTimeWalk;
00491 private javax.swing.JButton bTrim;
00492 private javax.swing.JLabel jLabel1;
00493 private javax.swing.JPanel jPanel1;
00494 private javax.swing.JPanel jPanel2;
00495 private javax.swing.JScrollPane jScrollPane1;
00496 private javax.swing.JSeparator jSeparator1;
00497 private javax.swing.JSplitPane jSplitPane1;
00498 private javax.swing.JLabel lOutput;
00499 private javax.swing.JPanel pAPI;
00500 private javax.swing.JTabbedPane tpTabs;
00501
00502 private ISPanel pIS;
00503 private MRSPanel pMRS;
00504 private CalibrationControllerPanel pCC;
00505 SystemInterface si;
00506 ISInterface is;
00507 ScriptingPanel scripting;
00508 }