]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/GenGuidDialog.java
Make opening dialogs re-gain focus when user switch back to main UI from other window...
[mirror_edk2.git] / Tools / Java / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / packaging / ui / GenGuidDialog.java
CommitLineData
a13899c5 1/** @file\r
2 Java class GenGuidDialog.\r
3 \r
4Copyright (c) 2006, Intel Corporation\r
5All rights reserved. This program and the accompanying materials\r
6are licensed and made available under the terms and conditions of the BSD License\r
7which accompanies this distribution. The full text of the license may be found at\r
8http://opensource.org/licenses/bsd-license.php\r
9\r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12**/\r
13package org.tianocore.frameworkwizard.packaging.ui;\r
14\r
15import java.awt.BorderLayout;\r
16import java.awt.Dimension;\r
17import java.awt.Toolkit;\r
18\r
19import javax.swing.JPanel;\r
20import javax.swing.JDialog;\r
21import java.awt.GridLayout;\r
22\r
2a06ac5b 23import javax.swing.JComponent;\r
a13899c5 24import javax.swing.JFrame;\r
25import javax.swing.JOptionPane;\r
26import javax.swing.JTextField;\r
27import javax.swing.JLabel;\r
28import javax.swing.JRadioButton;\r
29import javax.swing.ButtonGroup;\r
30import javax.swing.JButton;\r
2a06ac5b 31import javax.swing.KeyStroke;\r
a13899c5 32\r
33import org.tianocore.frameworkwizard.common.Tools;\r
34\r
35import java.awt.FlowLayout;\r
36import java.awt.event.ActionEvent;\r
37import java.awt.event.ActionListener;\r
2a06ac5b 38import java.awt.event.KeyEvent;\r
a13899c5 39import java.awt.event.WindowAdapter;\r
40import java.awt.event.WindowEvent;\r
41\r
42/**\r
43 Dialog for GUID generation. \r
44 @since PackageEditor 1.0\r
45**/\r
46public class GenGuidDialog extends JDialog implements ActionListener{\r
47\r
0b5e1cc3 48 /**\r
49 * \r
50 */\r
51 private static final long serialVersionUID = 1L;\r
52\r
a13899c5 53 public static final String guidArrayPat = "0x[a-fA-F0-9]{1,8},( )*0x[a-fA-F0-9]{1,4},( )*0x[a-fA-F0-9]{1,4}(,( )*\\{)?(,?( )*0x[a-fA-F0-9]{1,2}){8}( )*(\\})?";\r
54 \r
55 public static final String guidRegistryPat = "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}";\r
56 \r
57 static private JFrame frame;\r
58 private JPanel jContentPane = null;\r
4da2e625 59 private JPanel jPanelEast = null;\r
60 private JPanel jPanelCenter = null;\r
a13899c5 61 private JTextField jTextField = null;\r
62 private JLabel jLabel = null;\r
63 private JRadioButton jRadioButton = null;\r
4da2e625 64 private JRadioButton jRadioButtonReg = null;\r
65 private JButton jButtonCancel = null;\r
66 private JButton jButtonNew = null;\r
67 private JButton jButtonOk = null;\r
2a06ac5b 68 private ActionListener outerListener = null;\r
a13899c5 69 \r
70// private String guid = null;\r
71\r
72 public void actionPerformed(ActionEvent arg0) {\r
73 // TODO Auto-generated method stub\r
4da2e625 74 if (arg0.getSource() == jButtonNew){\r
a13899c5 75 String uuid = Tools.generateUuidString();\r
4da2e625 76 if (jRadioButtonReg.isSelected()) {\r
a13899c5 77 jTextField.setText(uuid);\r
78 }\r
79 else {\r
80 //ToDo: transform to comma-sep guid\r
81 String s = GenGuidDialog.formatGuidString(uuid);\r
82 if (s.equals("0")) {\r
83 JOptionPane.showMessageDialog(frame, "Check GUID Value, it don't conform to the schema.");\r
84 return;\r
85 }\r
86 jTextField.setText(s);\r
87 }\r
88 }\r
89 \r
4da2e625 90 if (arg0.getSource() == jRadioButtonReg){\r
a13899c5 91 \r
92 //ToDo: check text field value against RegExp and transform if needed\r
93 if (jTextField.getText().matches(GenGuidDialog.guidRegistryPat)){\r
94 return;\r
95 }\r
96 if (jTextField.getText().matches(GenGuidDialog.guidArrayPat)) {\r
97 jTextField.setText(GenGuidDialog.formatGuidString(jTextField.getText()));\r
98 return;\r
99 }\r
100 if (jTextField.getText().length()>0)\r
101 JOptionPane.showMessageDialog(frame, "Check GUID Value, it don't conform to the schema.");\r
102 \r
103 }\r
104 \r
105 if (arg0.getSource() == jRadioButton){\r
106 \r
107 //ToDo: check text field value against RegExp and transform if needed\r
108 if (jTextField.getText().matches(GenGuidDialog.guidArrayPat)){\r
109 return;\r
110 }\r
111 if (jTextField.getText().matches(GenGuidDialog.guidRegistryPat)) {\r
112 jTextField.setText(GenGuidDialog.formatGuidString(jTextField.getText()));\r
113 return;\r
114 }\r
115 if (jTextField.getText().length()>0)\r
116 JOptionPane.showMessageDialog(frame, "Check GUID Value, it don't conform to the schema.");\r
117 \r
118 }\r
119 \r
4da2e625 120 if (arg0.getSource() == jButtonOk){\r
a13899c5 121// if (jTextField.getText().matches(Tools.guidArrayPat) \r
122// || jTextField.getText().matches(Tools.guidRegistryPat)){\r
123// this.setVisible(false);\r
124// }\r
125// else {\r
126// JOptionPane.showMessageDialog(frame, "Incorrect GUID Value Format.");\r
127// }\r
2a06ac5b 128// this.dispose();\r
a13899c5 129 }\r
130 \r
4da2e625 131 if (arg0.getSource() == jButtonCancel){\r
a13899c5 132 this.dispose();\r
133 }\r
134 }\r
135\r
136 /**\r
137 * This method initializes jPanel \r
138 * \r
139 * @return javax.swing.JPanel \r
140 */\r
4da2e625 141 private JPanel getJPanelEast() {\r
142 if (jPanelEast == null) {\r
a13899c5 143 FlowLayout flowLayout = new FlowLayout();\r
144 flowLayout.setVgap(10);\r
4da2e625 145 jPanelEast = new JPanel();\r
146 jPanelEast.setLayout(flowLayout);\r
147 jPanelEast.setPreferredSize(new java.awt.Dimension(100,30));\r
148 jPanelEast.add(getJButtonNew(), null);\r
149 jPanelEast.add(getJButtonOk(), null);\r
150 jPanelEast.add(getJButtonCancel(), null);\r
a13899c5 151 }\r
4da2e625 152 return jPanelEast;\r
a13899c5 153 }\r
154\r
155 /**\r
156 * This method initializes jPanel4 \r
157 * \r
158 * @return javax.swing.JPanel \r
159 */\r
4da2e625 160 private JPanel getJPanelCenter() {\r
161 if (jPanelCenter == null) {\r
a13899c5 162 jLabel = new JLabel();\r
163 jLabel.setText("GUID Value");\r
164 GridLayout gridLayout = new GridLayout();\r
165 gridLayout.setRows(4);\r
4da2e625 166 jPanelCenter = new JPanel();\r
167 jPanelCenter.setLayout(gridLayout);\r
168 jPanelCenter.add(getJRadioButtonReg(), null);\r
169 jPanelCenter.add(getJRadioButton(), null);\r
170 jPanelCenter.add(jLabel, null);\r
171 jPanelCenter.add(getJTextField(), null);\r
a13899c5 172 ButtonGroup bg = new ButtonGroup();\r
4da2e625 173 bg.add(jRadioButtonReg);\r
a13899c5 174 bg.add(jRadioButton);\r
175 }\r
4da2e625 176 return jPanelCenter;\r
a13899c5 177 }\r
178\r
179 /**\r
180 * This method initializes jTextField \r
181 * \r
182 * @return javax.swing.JTextField \r
183 */\r
184 private JTextField getJTextField() {\r
185 if (jTextField == null) {\r
186 jTextField = new JTextField();\r
187 jTextField.setHorizontalAlignment(JTextField.LEADING);\r
188 jTextField.setPreferredSize(new java.awt.Dimension(100,20));\r
189 }\r
190 return jTextField;\r
191 }\r
192\r
193 /**\r
194 * This method initializes jRadioButton \r
195 * \r
196 * @return javax.swing.JRadioButton \r
197 */\r
198 private JRadioButton getJRadioButton() {\r
199 if (jRadioButton == null) {\r
200 jRadioButton = new JRadioButton();\r
201 jRadioButton.setText("Comma-Seperated Format");\r
202 jRadioButton.setEnabled(false);\r
203 jRadioButton.addActionListener(this);\r
204 }\r
205 return jRadioButton;\r
206 }\r
207\r
208 /**\r
209 * This method initializes jRadioButton1 \r
210 * \r
211 * @return javax.swing.JRadioButton \r
212 */\r
4da2e625 213 private JRadioButton getJRadioButtonReg() {\r
214 if (jRadioButtonReg == null) {\r
215 jRadioButtonReg = new JRadioButton();\r
216 jRadioButtonReg.setText("Registry Format");\r
217 jRadioButtonReg.setSelected(true);\r
218 jRadioButtonReg.addActionListener(this);\r
a13899c5 219 }\r
4da2e625 220 return jRadioButtonReg;\r
a13899c5 221 }\r
222\r
223 /**\r
224 * This method initializes jButton \r
225 * \r
226 * @return javax.swing.JButton \r
227 */\r
4da2e625 228 private JButton getJButtonCancel() {\r
229 if (jButtonCancel == null) {\r
230 jButtonCancel = new JButton();\r
231 jButtonCancel.setPreferredSize(new java.awt.Dimension(80,20));\r
232 jButtonCancel.setText("Cancel");\r
233 jButtonCancel.addActionListener(this);\r
2a06ac5b 234 jButtonCancel.registerKeyboardAction(this, KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, false), JComponent.WHEN_FOCUSED);\r
a13899c5 235 }\r
4da2e625 236 return jButtonCancel;\r
a13899c5 237 }\r
238\r
239 /**\r
240 * This method initializes jButton1 \r
241 * \r
242 * @return javax.swing.JButton \r
243 */\r
4da2e625 244 private JButton getJButtonNew() {\r
245 if (jButtonNew == null) {\r
246 jButtonNew = new JButton();\r
247 jButtonNew.setPreferredSize(new java.awt.Dimension(80,20));\r
248 jButtonNew.setHorizontalTextPosition(javax.swing.SwingConstants.LEADING);\r
249 jButtonNew.setText("New");\r
250 jButtonNew.addActionListener(this);\r
2a06ac5b 251 jButtonNew.registerKeyboardAction(this, KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, false), JComponent.WHEN_FOCUSED);\r
a13899c5 252 }\r
4da2e625 253 return jButtonNew;\r
a13899c5 254 }\r
255\r
256 /**\r
257 * This method initializes jButton2 \r
258 * \r
259 * @return javax.swing.JButton \r
260 */\r
4da2e625 261 private JButton getJButtonOk() {\r
262 if (jButtonOk == null) {\r
263 jButtonOk = new JButton();\r
264 jButtonOk.setPreferredSize(new java.awt.Dimension(80,20));\r
265 jButtonOk.setText("Ok");\r
266 jButtonOk.setActionCommand("GenGuidValue");\r
2a06ac5b 267// jButtonOk.addActionListener(this);\r
268 jButtonOk.registerKeyboardAction(outerListener, KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, false), JComponent.WHEN_FOCUSED);\r
269 \r
a13899c5 270 }\r
4da2e625 271 return jButtonOk;\r
a13899c5 272 }\r
273\r
a13899c5 274 public String getGuid(){\r
275 return jTextField.getText();\r
276 }\r
277 \r
278 public void setGuid(String s){\r
279 jTextField.setText(s);\r
280 }\r
281 /**\r
282 * This is the default constructor\r
283 */\r
284 public GenGuidDialog() {\r
285 super();\r
286 initialize();\r
287 }\r
288 \r
82484861 289 public GenGuidDialog(ActionListener i, JFrame frame){\r
290 super(frame);\r
2a06ac5b 291 outerListener = i;\r
a13899c5 292 initialize();\r
4da2e625 293 jButtonOk.addActionListener(i);\r
a13899c5 294 this.addWindowListener(new WindowAdapter(){\r
295\r
296 @Override\r
297 public void windowActivated(WindowEvent arg0) {\r
298 // TODO Auto-generated method stub\r
299 super.windowActivated(arg0);\r
4da2e625 300 if ((jRadioButtonReg.isSelected() && jTextField.getText().matches(GenGuidDialog.guidArrayPat))\r
a13899c5 301 || (jRadioButton.isSelected() && jTextField.getText().matches(GenGuidDialog.guidRegistryPat))) {\r
302 jTextField.setText(GenGuidDialog.formatGuidString(jTextField.getText()));\r
303 }\r
304 \r
305// if (!jTextField.getText().matches(Tools.guidArrayPat) || !jTextField.getText().matches(Tools.guidRegistryPat)) {\r
306// JOptionPane.showMessageDialog(frame, "InitVal: Incorrect GUID Value Format.");\r
307// return;\r
308// }\r
309 }\r
310 \r
311 });\r
312 }\r
313\r
314 /**\r
315 * This method initializes this\r
316 * \r
317 * @return void\r
318 */\r
319 private void initialize() {\r
320 this.setSize(466, 157);\r
321 this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);\r
322 this.setModal(true);\r
323 this.setTitle("Editing GUID Value");\r
324 this.setContentPane(getJContentPane());\r
325 this.centerWindow();\r
326 }\r
327\r
328 /**\r
329 * This method initializes jContentPane\r
330 * \r
331 * @return javax.swing.JPanel\r
332 */\r
333 private JPanel getJContentPane() {\r
334 if (jContentPane == null) {\r
335 jContentPane = new JPanel();\r
336 jContentPane.setLayout(new BorderLayout());\r
4da2e625 337 jContentPane.add(getJPanelEast(), java.awt.BorderLayout.EAST);\r
338 jContentPane.add(getJPanelCenter(), java.awt.BorderLayout.CENTER);\r
a13899c5 339 }\r
340 return jContentPane;\r
341 }\r
342\r
343 /**\r
344 Start the window at the center of screen\r
345 \r
346 **/\r
347 protected void centerWindow(int intWidth, int intHeight) {\r
348 Dimension d = Toolkit.getDefaultToolkit().getScreenSize();\r
349 this.setLocation((d.width - intWidth) / 2, (d.height - intHeight) / 2);\r
350 }\r
351\r
352 /**\r
353 Start the window at the center of screen\r
354 \r
355 **/\r
356 protected void centerWindow() {\r
357 centerWindow(this.getSize().width, this.getSize().height);\r
358 }\r
359 \r
360 public static String formatGuidString (String guidNameConv) {\r
361 String[] strList;\r
362 String guid = "";\r
363 int index = 0;\r
364 if (guidNameConv\r
365 .matches(GenGuidDialog.guidRegistryPat)) {\r
366 strList = guidNameConv.split("-");\r
367 guid = "0x" + strList[0] + ", ";\r
368 guid = guid + "0x" + strList[1] + ", ";\r
369 guid = guid + "0x" + strList[2] + ", ";\r
370\r
371 guid = guid + "0x" + strList[3].substring(0, 2) + ", ";\r
372 guid = guid + "0x" + strList[3].substring(2, 4);\r
373\r
374 while (index < strList[4].length()) {\r
375 guid = guid + ", ";\r
376 guid = guid + "0x" + strList[4].substring(index, index + 2);\r
377 index = index + 2;\r
378 }\r
379\r
380 return guid;\r
381 }\r
382 else if (guidNameConv\r
383 .matches(GenGuidDialog.guidArrayPat)) {\r
384 strList = guidNameConv.split(",");\r
385 \r
386 //\r
387 // chang ANSI c form to registry form\r
388 //\r
389 for (int i = 0; i < strList.length; i++){\r
390 strList[i] = strList[i].substring(strList[i].lastIndexOf("x") + 1);\r
391 }\r
392 if (strList[strList.length - 1].endsWith("}")) {\r
393 strList[strList.length -1] = strList[strList.length-1].substring(0, strList[strList.length-1].length()-1); \r
394 }\r
395 //\r
396 //inserting necessary leading zeros\r
397 //\r
398 \r
399 int segLen = strList[0].length();\r
400 if (segLen < 8){\r
401 for (int i = 0; i < 8 - segLen; ++i){\r
402 strList[0] = "0" + strList[0];\r
403 }\r
404 }\r
405 \r
406 segLen = strList[1].length();\r
407 if (segLen < 4){\r
408 for (int i = 0; i < 4 - segLen; ++i){\r
409 strList[1] = "0" + strList[1];\r
410 }\r
411 }\r
412 segLen = strList[2].length();\r
413 if (segLen < 4){\r
414 for (int i = 0; i < 4 - segLen; ++i){\r
415 strList[2] = "0" + strList[2];\r
416 }\r
417 }\r
418 for (int i = 3; i < 11; ++i) {\r
419 segLen = strList[i].length();\r
420 if (segLen < 2){\r
421 strList[i] = "0" + strList[i];\r
422 }\r
423 }\r
424 \r
425 for (int i = 0; i < 3; i++){\r
426 guid += strList[i] + "-";\r
427 }\r
428 \r
429 guid += strList[3];\r
430 guid += strList[4] + "-";\r
431 \r
432 for (int i = 5; i < strList.length; ++i){\r
433 guid += strList[i];\r
434 }\r
435 \r
436 \r
437 return guid;\r
438 } else {\r
439 \r
440 return "0";\r
441\r
442 }\r
443 }\r
444 \r
445} // @jve:decl-index=0:visual-constraint="10,10"\r