00001
00002
00003
00004
00005
00006
00007 package DisplayGUI;
00008 import GuiComponents.Console.ExternalProcess;
00009
00014 public class PlotOptionsFrame extends javax.swing.JFrame implements displayParams {
00015
00016 String objectName;
00017 java.util.regex.Pattern objectPattern = java.util.regex.Pattern.compile(".*::(\\w+)\\.(\\d+)\\.(\\d+)\\.(\\d{14})");
00018
00020 public PlotOptionsFrame() {
00021 initComponents();
00022 }
00023
00029 private void initComponents() {
00030 java.awt.GridBagConstraints gridBagConstraints;
00031
00032 getContentPane().setBackground(backgroundColor);
00033
00034 jLabel1 = new javax.swing.JLabel();
00035 jTextField1 = new javax.swing.JTextField(14);
00036 jTextField2 = new javax.swing.JTextField(14);
00037 jLabel2 = new javax.swing.JLabel();
00038 jLabel3 = new javax.swing.JLabel();
00039 jCheckBox1 = new javax.swing.JCheckBox();
00040 jButton1 = new javax.swing.JButton();
00041 jButton2 = new javax.swing.JButton();
00042
00043 getContentPane().setLayout(new java.awt.GridBagLayout());
00044
00045 addWindowListener(new java.awt.event.WindowAdapter() {
00046 public void windowClosing(java.awt.event.WindowEvent evt) {
00047 exitForm(evt);
00048 }
00049 });
00050
00051 jLabel1.setText("Plot data for module 20220330200001");
00052 jLabel1.setFont(displayTextFont);
00053 jLabel1.setForeground(darkBlueColor);
00054 gridBagConstraints = new java.awt.GridBagConstraints();
00055 gridBagConstraints.gridwidth = 2;
00056 gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00057 getContentPane().add(jLabel1, gridBagConstraints);
00058
00059 jTextField1.setFont(displayScaleFont);
00060 gridBagConstraints = new java.awt.GridBagConstraints();
00061 gridBagConstraints.gridx = 1;
00062 gridBagConstraints.gridy = 1;
00063 gridBagConstraints.weightx = 0.5;
00064 gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
00065 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
00066 getContentPane().add(jTextField1, gridBagConstraints);
00067
00068 jTextField2.setFont(displayScaleFont);
00069 gridBagConstraints = new java.awt.GridBagConstraints();
00070 gridBagConstraints.gridx = 1;
00071 gridBagConstraints.gridy = 2;
00072 gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
00073 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
00074 getContentPane().add(jTextField2, gridBagConstraints);
00075
00076 jLabel2.setText("Chip(s):");
00077 jLabel2.setFont(displayScaleFont);
00078 gridBagConstraints = new java.awt.GridBagConstraints();
00079 gridBagConstraints.gridx = 0;
00080 gridBagConstraints.gridy = 1;
00081 gridBagConstraints.weightx = 0.5;
00082 gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
00083 gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
00084 getContentPane().add(jLabel2, gridBagConstraints);
00085
00086 jLabel3.setText("Channel(s):");
00087 jLabel3.setFont(displayScaleFont);
00088 gridBagConstraints = new java.awt.GridBagConstraints();
00089 gridBagConstraints.gridx = 0;
00090 gridBagConstraints.gridy = 2;
00091 gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
00092 gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
00093 getContentPane().add(jLabel3, gridBagConstraints);
00094
00095 jCheckBox1.setText("Occupancy plot?");
00096 jCheckBox1.setFont(displayScaleFont);
00097 jCheckBox1.setBackground(backgroundColor);
00098 gridBagConstraints = new java.awt.GridBagConstraints();
00099 gridBagConstraints.gridx = 0;
00100 gridBagConstraints.gridy = 3;
00101 gridBagConstraints.gridwidth = 2;
00102 gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
00103 getContentPane().add(jCheckBox1, gridBagConstraints);
00104
00105 jButton1.setText("Plot");
00106 jButton1.setFont(displayScaleFont);
00107 gridBagConstraints = new java.awt.GridBagConstraints();
00108 gridBagConstraints.gridx = 0;
00109 gridBagConstraints.gridy = 4;
00110 gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00111 gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHWEST;
00112 getContentPane().add(jButton1, gridBagConstraints);
00113 jButton1.addActionListener(new java.awt.event.ActionListener() {
00114 public void actionPerformed(java.awt.event.ActionEvent evt) {
00115 showPlot();
00116 }
00117 });
00118
00119
00120
00121 jButton2.setText("Close");
00122 jButton2.setFont(displayScaleFont);
00123 gridBagConstraints = new java.awt.GridBagConstraints();
00124 gridBagConstraints.gridx = 1;
00125 gridBagConstraints.gridy = 4;
00126 gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00127 gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHEAST;
00128 getContentPane().add(jButton2, gridBagConstraints);
00129 jButton2.addActionListener(new java.awt.event.ActionListener() {
00130 public void actionPerformed(java.awt.event.ActionEvent evt) {
00131 exitForm(null);
00132 }
00133 });
00134
00135 pack();
00136 java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
00137 java.awt.Dimension WSize = getSize();
00138 setLocation((screenSize.width-(int)WSize.getWidth())/2,(screenSize.height-(int)WSize.getHeight())/2);
00139 }
00140
00142 private void exitForm(java.awt.event.WindowEvent evt) {
00143 setVisible(false);
00144 }
00145
00146
00147 public void showFrame(String objectName) {
00148 this.objectName=objectName;
00149 java.util.regex.Matcher matcher = objectPattern.matcher(objectName);
00150 if(matcher.matches()) {
00151 String dataType = objectName.substring(matcher.start(1),matcher.end(1));
00152 String run = objectName.substring(matcher.start(2),matcher.end(2));
00153 String scan = objectName.substring(matcher.start(3),matcher.end(3));
00154 String sn = objectName.substring(matcher.start(4),matcher.end(4));
00155 jLabel1.setText("Plot "+dataType+" for "+sn+" (Run/Scan "+run+"/"+scan+")");
00156 }
00157 else jLabel1.setText("Plot data from "+objectName);
00158 pack();
00159 setVisible(true);
00160 }
00161
00162
00163 private void showPlot() {
00164 java.util.regex.Pattern rangePattern = java.util.regex.Pattern.compile("(\\d+)-(\\d+)");
00165 java.util.regex.Pattern iPattern = java.util.regex.Pattern.compile("(\\d+)");
00166 java.util.regex.Matcher matcher,matcher2;
00167 StringBuffer options = new StringBuffer();
00168 boolean error=false;
00169
00170 if(!jTextField1.getText().equals("")) {
00171 String[] chips = jTextField1.getText().split(",");
00172 for(int i=0;i<chips.length;i++) {
00173 matcher = rangePattern.matcher(chips[i]);
00174 matcher2 = iPattern.matcher(chips[i]);
00175 if(matcher.matches()) options.append(" -chip "+chips[i].substring(matcher.start(1),matcher.end(1))+" "+chips[i].substring(matcher.start(2),matcher.end(2)));
00176 else if(matcher2.matches()) options.append(" -chip "+chips[i].substring(matcher2.start(1),matcher2.end(1))+" "+chips[i].substring(matcher2.start(1),matcher2.end(1)));
00177 else error=true;
00178 }
00179 }
00180
00181 if(!jTextField2.getText().equals("")) {
00182 String[] chans = jTextField2.getText().split(",");
00183 for(int i=0;i<chans.length;i++) {
00184 matcher = rangePattern.matcher(chans[i]);
00185 matcher2 = iPattern.matcher(chans[i]);
00186 if(matcher.matches()) options.append(" -chan "+chans[i].substring(matcher.start(1),matcher.end(1))+" "+chans[i].substring(matcher.start(2),matcher.end(2)));
00187 else if(matcher2.matches()) options.append(" -chan "+chans[i].substring(matcher2.start(1),matcher2.end(1))+" "+chans[i].substring(matcher2.start(1),matcher2.end(1)));
00188 else error=true;
00189 }
00190 }
00191
00192 if(error) {
00193 javax.swing.JOptionPane.showMessageDialog(null,"Your channels or chips contained a syntax error.\nEnter numbers separated by commas, and/or ranges separated by dashes\neg '0-3,6,9'");
00194 return;
00195 }
00196
00197 if(jCheckBox1.isSelected()) options.append(" -occ");
00198
00199
00200
00201 try {
00202
00203 ExternalProcess p = new ExternalProcess("DataDisplayer " + options.toString()+" "+objectName);
00204 } catch (Exception ioe) {
00205 System.out.println(ioe.getMessage());
00206 ioe.printStackTrace();
00207 }
00208 }
00209
00210
00211
00212 private javax.swing.JButton jButton1;
00213 private javax.swing.JButton jButton2;
00214 private javax.swing.JCheckBox jCheckBox1;
00215 private javax.swing.JLabel jLabel1;
00216 private javax.swing.JLabel jLabel2;
00217 private javax.swing.JLabel jLabel3;
00218 private javax.swing.JTextField jTextField1;
00219 private javax.swing.JTextField jTextField2;
00220
00221
00222 }