2 Java class GenGuidDialog.
4 Copyright (c) 2006, Intel Corporation
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13 package org
.tianocore
.frameworkwizard
.packaging
.ui
;
15 import java
.awt
.BorderLayout
;
16 import java
.awt
.Dimension
;
17 import java
.awt
.Toolkit
;
19 import javax
.swing
.JPanel
;
20 import javax
.swing
.JDialog
;
21 import java
.awt
.GridLayout
;
23 import javax
.swing
.JComponent
;
24 import javax
.swing
.JFrame
;
25 import javax
.swing
.JOptionPane
;
26 import javax
.swing
.JTextField
;
27 import javax
.swing
.JLabel
;
28 import javax
.swing
.JRadioButton
;
29 import javax
.swing
.ButtonGroup
;
30 import javax
.swing
.JButton
;
31 import javax
.swing
.KeyStroke
;
33 import org
.tianocore
.frameworkwizard
.common
.Tools
;
35 import java
.awt
.FlowLayout
;
36 import java
.awt
.event
.ActionEvent
;
37 import java
.awt
.event
.ActionListener
;
38 import java
.awt
.event
.KeyEvent
;
39 import java
.awt
.event
.WindowAdapter
;
40 import java
.awt
.event
.WindowEvent
;
43 Dialog for GUID generation.
44 @since PackageEditor 1.0
46 public class GenGuidDialog
extends JDialog
implements ActionListener
{
51 private static final long serialVersionUID
= 1L;
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}( )*(\\})?";
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}";
57 static private JFrame frame
;
58 private JPanel jContentPane
= null;
59 private JPanel jPanelEast
= null;
60 private JPanel jPanelCenter
= null;
61 private JTextField jTextField
= null;
62 private JLabel jLabel
= null;
63 private JRadioButton jRadioButton
= null;
64 private JRadioButton jRadioButtonReg
= null;
65 private JButton jButtonCancel
= null;
66 private JButton jButtonNew
= null;
67 private JButton jButtonOk
= null;
68 private ActionListener outerListener
= null;
70 // private String guid = null;
72 public void actionPerformed(ActionEvent arg0
) {
73 // TODO Auto-generated method stub
74 if (arg0
.getSource() == jButtonNew
){
75 String uuid
= Tools
.generateUuidString();
76 if (jRadioButtonReg
.isSelected()) {
77 jTextField
.setText(uuid
);
80 //ToDo: transform to comma-sep guid
81 String s
= GenGuidDialog
.formatGuidString(uuid
);
83 JOptionPane
.showMessageDialog(frame
, "Check GUID Value, it don't conform to the schema.");
86 jTextField
.setText(s
);
90 if (arg0
.getSource() == jRadioButtonReg
){
92 //ToDo: check text field value against RegExp and transform if needed
93 if (jTextField
.getText().matches(GenGuidDialog
.guidRegistryPat
)){
96 if (jTextField
.getText().matches(GenGuidDialog
.guidArrayPat
)) {
97 jTextField
.setText(GenGuidDialog
.formatGuidString(jTextField
.getText()));
100 if (jTextField
.getText().length()>0)
101 JOptionPane
.showMessageDialog(frame
, "Check GUID Value, it don't conform to the schema.");
105 if (arg0
.getSource() == jRadioButton
){
107 //ToDo: check text field value against RegExp and transform if needed
108 if (jTextField
.getText().matches(GenGuidDialog
.guidArrayPat
)){
111 if (jTextField
.getText().matches(GenGuidDialog
.guidRegistryPat
)) {
112 jTextField
.setText(GenGuidDialog
.formatGuidString(jTextField
.getText()));
115 if (jTextField
.getText().length()>0)
116 JOptionPane
.showMessageDialog(frame
, "Check GUID Value, it don't conform to the schema.");
120 if (arg0
.getSource() == jButtonOk
){
121 // if (jTextField.getText().matches(Tools.guidArrayPat)
122 // || jTextField.getText().matches(Tools.guidRegistryPat)){
123 // this.setVisible(false);
126 // JOptionPane.showMessageDialog(frame, "Incorrect GUID Value Format.");
131 if (arg0
.getSource() == jButtonCancel
){
137 * This method initializes jPanel
139 * @return javax.swing.JPanel
141 private JPanel
getJPanelEast() {
142 if (jPanelEast
== null) {
143 FlowLayout flowLayout
= new FlowLayout();
144 flowLayout
.setVgap(10);
145 jPanelEast
= new JPanel();
146 jPanelEast
.setLayout(flowLayout
);
147 jPanelEast
.setPreferredSize(new java
.awt
.Dimension(100,30));
148 jPanelEast
.add(getJButtonNew(), null);
149 jPanelEast
.add(getJButtonOk(), null);
150 jPanelEast
.add(getJButtonCancel(), null);
156 * This method initializes jPanel4
158 * @return javax.swing.JPanel
160 private JPanel
getJPanelCenter() {
161 if (jPanelCenter
== null) {
162 jLabel
= new JLabel();
163 jLabel
.setText("GUID Value");
164 GridLayout gridLayout
= new GridLayout();
165 gridLayout
.setRows(4);
166 jPanelCenter
= new JPanel();
167 jPanelCenter
.setLayout(gridLayout
);
168 jPanelCenter
.add(getJRadioButtonReg(), null);
169 jPanelCenter
.add(getJRadioButton(), null);
170 jPanelCenter
.add(jLabel
, null);
171 jPanelCenter
.add(getJTextField(), null);
172 ButtonGroup bg
= new ButtonGroup();
173 bg
.add(jRadioButtonReg
);
174 bg
.add(jRadioButton
);
180 * This method initializes jTextField
182 * @return javax.swing.JTextField
184 private JTextField
getJTextField() {
185 if (jTextField
== null) {
186 jTextField
= new JTextField();
187 jTextField
.setHorizontalAlignment(JTextField
.LEADING
);
188 jTextField
.setPreferredSize(new java
.awt
.Dimension(100,20));
194 * This method initializes jRadioButton
196 * @return javax.swing.JRadioButton
198 private JRadioButton
getJRadioButton() {
199 if (jRadioButton
== null) {
200 jRadioButton
= new JRadioButton();
201 jRadioButton
.setText("Comma-Seperated Format");
202 jRadioButton
.setEnabled(false);
203 jRadioButton
.addActionListener(this);
209 * This method initializes jRadioButton1
211 * @return javax.swing.JRadioButton
213 private JRadioButton
getJRadioButtonReg() {
214 if (jRadioButtonReg
== null) {
215 jRadioButtonReg
= new JRadioButton();
216 jRadioButtonReg
.setText("Registry Format");
217 jRadioButtonReg
.setSelected(true);
218 jRadioButtonReg
.addActionListener(this);
220 return jRadioButtonReg
;
224 * This method initializes jButton
226 * @return javax.swing.JButton
228 private JButton
getJButtonCancel() {
229 if (jButtonCancel
== null) {
230 jButtonCancel
= new JButton();
231 jButtonCancel
.setPreferredSize(new java
.awt
.Dimension(80,20));
232 jButtonCancel
.setText("Cancel");
233 jButtonCancel
.addActionListener(this);
234 jButtonCancel
.registerKeyboardAction(this, KeyStroke
.getKeyStroke(KeyEvent
.VK_ENTER
, 0, false), JComponent
.WHEN_FOCUSED
);
236 return jButtonCancel
;
240 * This method initializes jButton1
242 * @return javax.swing.JButton
244 private JButton
getJButtonNew() {
245 if (jButtonNew
== null) {
246 jButtonNew
= new JButton();
247 jButtonNew
.setPreferredSize(new java
.awt
.Dimension(80,20));
248 jButtonNew
.setHorizontalTextPosition(javax
.swing
.SwingConstants
.LEADING
);
249 jButtonNew
.setText("New");
250 jButtonNew
.addActionListener(this);
251 jButtonNew
.registerKeyboardAction(this, KeyStroke
.getKeyStroke(KeyEvent
.VK_ENTER
, 0, false), JComponent
.WHEN_FOCUSED
);
257 * This method initializes jButton2
259 * @return javax.swing.JButton
261 private JButton
getJButtonOk() {
262 if (jButtonOk
== null) {
263 jButtonOk
= new JButton();
264 jButtonOk
.setPreferredSize(new java
.awt
.Dimension(80,20));
265 jButtonOk
.setText("Ok");
266 jButtonOk
.setActionCommand("GenGuidValue");
267 // jButtonOk.addActionListener(this);
268 jButtonOk
.registerKeyboardAction(outerListener
, KeyStroke
.getKeyStroke(KeyEvent
.VK_ENTER
, 0, false), JComponent
.WHEN_FOCUSED
);
274 public String
getGuid(){
275 return jTextField
.getText();
278 public void setGuid(String s
){
279 jTextField
.setText(s
);
282 * This is the default constructor
284 public GenGuidDialog() {
289 public GenGuidDialog(ActionListener i
, JFrame frame
){
293 jButtonOk
.addActionListener(i
);
294 this.addWindowListener(new WindowAdapter(){
297 public void windowActivated(WindowEvent arg0
) {
298 // TODO Auto-generated method stub
299 super.windowActivated(arg0
);
300 if ((jRadioButtonReg
.isSelected() && jTextField
.getText().matches(GenGuidDialog
.guidArrayPat
))
301 || (jRadioButton
.isSelected() && jTextField
.getText().matches(GenGuidDialog
.guidRegistryPat
))) {
302 jTextField
.setText(GenGuidDialog
.formatGuidString(jTextField
.getText()));
305 // if (!jTextField.getText().matches(Tools.guidArrayPat) || !jTextField.getText().matches(Tools.guidRegistryPat)) {
306 // JOptionPane.showMessageDialog(frame, "InitVal: Incorrect GUID Value Format.");
315 * This method initializes this
319 private void initialize() {
320 this.setSize(466, 157);
321 this.setDefaultCloseOperation(javax
.swing
.WindowConstants
.DISPOSE_ON_CLOSE
);
323 this.setTitle("Editing GUID Value");
324 this.setContentPane(getJContentPane());
329 * This method initializes jContentPane
331 * @return javax.swing.JPanel
333 private JPanel
getJContentPane() {
334 if (jContentPane
== null) {
335 jContentPane
= new JPanel();
336 jContentPane
.setLayout(new BorderLayout());
337 jContentPane
.add(getJPanelEast(), java
.awt
.BorderLayout
.EAST
);
338 jContentPane
.add(getJPanelCenter(), java
.awt
.BorderLayout
.CENTER
);
344 Start the window at the center of screen
347 protected void centerWindow(int intWidth
, int intHeight
) {
348 Dimension d
= Toolkit
.getDefaultToolkit().getScreenSize();
349 this.setLocation((d
.width
- intWidth
) / 2, (d
.height
- intHeight
) / 2);
353 Start the window at the center of screen
356 protected void centerWindow() {
357 centerWindow(this.getSize().width
, this.getSize().height
);
360 public static String
formatGuidString (String guidNameConv
) {
365 .matches(GenGuidDialog
.guidRegistryPat
)) {
366 strList
= guidNameConv
.split("-");
367 guid
= "0x" + strList
[0] + ", ";
368 guid
= guid
+ "0x" + strList
[1] + ", ";
369 guid
= guid
+ "0x" + strList
[2] + ", ";
371 guid
= guid
+ "0x" + strList
[3].substring(0, 2) + ", ";
372 guid
= guid
+ "0x" + strList
[3].substring(2, 4);
374 while (index
< strList
[4].length()) {
376 guid
= guid
+ "0x" + strList
[4].substring(index
, index
+ 2);
382 else if (guidNameConv
383 .matches(GenGuidDialog
.guidArrayPat
)) {
384 strList
= guidNameConv
.split(",");
387 // chang ANSI c form to registry form
389 for (int i
= 0; i
< strList
.length
; i
++){
390 strList
[i
] = strList
[i
].substring(strList
[i
].lastIndexOf("x") + 1);
392 if (strList
[strList
.length
- 1].endsWith("}")) {
393 strList
[strList
.length
-1] = strList
[strList
.length
-1].substring(0, strList
[strList
.length
-1].length()-1);
396 //inserting necessary leading zeros
399 int segLen
= strList
[0].length();
401 for (int i
= 0; i
< 8 - segLen
; ++i
){
402 strList
[0] = "0" + strList
[0];
406 segLen
= strList
[1].length();
408 for (int i
= 0; i
< 4 - segLen
; ++i
){
409 strList
[1] = "0" + strList
[1];
412 segLen
= strList
[2].length();
414 for (int i
= 0; i
< 4 - segLen
; ++i
){
415 strList
[2] = "0" + strList
[2];
418 for (int i
= 3; i
< 11; ++i
) {
419 segLen
= strList
[i
].length();
421 strList
[i
] = "0" + strList
[i
];
425 for (int i
= 0; i
< 3; i
++){
426 guid
+= strList
[i
] + "-";
430 guid
+= strList
[4] + "-";
432 for (int i
= 5; i
< strList
.length
; ++i
){
445 } // @jve:decl-index=0:visual-constraint="10,10"