--- /dev/null
+/** @file\r
+ Java class GenGuidDialog.\r
+ \r
+Copyright (c) 2006, Intel Corporation\r
+All rights reserved. This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution. The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+**/\r
+package org.tianocore.frameworkwizard.packaging.ui;\r
+\r
+import java.awt.BorderLayout;\r
+import java.awt.Dimension;\r
+import java.awt.Toolkit;\r
+\r
+import javax.swing.JPanel;\r
+import javax.swing.JDialog;\r
+import java.awt.GridLayout;\r
+\r
+import javax.swing.JComponent;\r
+import javax.swing.JFrame;\r
+import javax.swing.JOptionPane;\r
+import javax.swing.JTextField;\r
+import javax.swing.JLabel;\r
+import javax.swing.JRadioButton;\r
+import javax.swing.ButtonGroup;\r
+import javax.swing.JButton;\r
+import javax.swing.KeyStroke;\r
+\r
+import org.tianocore.frameworkwizard.common.Tools;\r
+\r
+import java.awt.FlowLayout;\r
+import java.awt.event.ActionEvent;\r
+import java.awt.event.ActionListener;\r
+import java.awt.event.KeyEvent;\r
+import java.awt.event.WindowAdapter;\r
+import java.awt.event.WindowEvent;\r
+\r
+/**\r
+ Dialog for GUID generation. \r
+ @since PackageEditor 1.0\r
+**/\r
+public class GenGuidDialog extends JDialog implements ActionListener{\r
+\r
+ /**\r
+ * \r
+ */\r
+ private static final long serialVersionUID = 1L;\r
+\r
+ 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
+ \r
+ 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
+ \r
+ static private JFrame frame;\r
+ private JPanel jContentPane = null;\r
+ private JPanel jPanelEast = null;\r
+ private JPanel jPanelCenter = null;\r
+ private JTextField jTextField = null;\r
+ private JLabel jLabel = null;\r
+ private JRadioButton jRadioButton = null;\r
+ private JRadioButton jRadioButtonReg = null;\r
+ private JButton jButtonCancel = null;\r
+ private JButton jButtonNew = null;\r
+ private JButton jButtonOk = null;\r
+ private ActionListener outerListener = null;\r
+ \r
+// private String guid = null;\r
+\r
+ public void actionPerformed(ActionEvent arg0) {\r
+ // TODO Auto-generated method stub\r
+ if (arg0.getSource() == jButtonNew){\r
+ String uuid = Tools.generateUuidString();\r
+ if (jRadioButtonReg.isSelected()) {\r
+ jTextField.setText(uuid);\r
+ }\r
+ else {\r
+ //ToDo: transform to comma-sep guid\r
+ String s = GenGuidDialog.formatGuidString(uuid);\r
+ if (s.equals("0")) {\r
+ JOptionPane.showMessageDialog(frame, "Check GUID Value, it don't conform to the schema.");\r
+ return;\r
+ }\r
+ jTextField.setText(s);\r
+ }\r
+ }\r
+ \r
+ if (arg0.getSource() == jRadioButtonReg){\r
+ \r
+ //ToDo: check text field value against RegExp and transform if needed\r
+ if (jTextField.getText().matches(GenGuidDialog.guidRegistryPat)){\r
+ return;\r
+ }\r
+ if (jTextField.getText().matches(GenGuidDialog.guidArrayPat)) {\r
+ jTextField.setText(GenGuidDialog.formatGuidString(jTextField.getText()));\r
+ return;\r
+ }\r
+ if (jTextField.getText().length()>0)\r
+ JOptionPane.showMessageDialog(frame, "Check GUID Value, it don't conform to the schema.");\r
+ \r
+ }\r
+ \r
+ if (arg0.getSource() == jRadioButton){\r
+ \r
+ //ToDo: check text field value against RegExp and transform if needed\r
+ if (jTextField.getText().matches(GenGuidDialog.guidArrayPat)){\r
+ return;\r
+ }\r
+ if (jTextField.getText().matches(GenGuidDialog.guidRegistryPat)) {\r
+ jTextField.setText(GenGuidDialog.formatGuidString(jTextField.getText()));\r
+ return;\r
+ }\r
+ if (jTextField.getText().length()>0)\r
+ JOptionPane.showMessageDialog(frame, "Check GUID Value, it don't conform to the schema.");\r
+ \r
+ }\r
+ \r
+ if (arg0.getSource() == jButtonOk){\r
+// if (jTextField.getText().matches(Tools.guidArrayPat) \r
+// || jTextField.getText().matches(Tools.guidRegistryPat)){\r
+// this.setVisible(false);\r
+// }\r
+// else {\r
+// JOptionPane.showMessageDialog(frame, "Incorrect GUID Value Format.");\r
+// }\r
+// this.dispose();\r
+ }\r
+ \r
+ if (arg0.getSource() == jButtonCancel){\r
+ this.dispose();\r
+ }\r
+ }\r
+\r
+ /**\r
+ * This method initializes jPanel \r
+ * \r
+ * @return javax.swing.JPanel \r
+ */\r
+ private JPanel getJPanelEast() {\r
+ if (jPanelEast == null) {\r
+ FlowLayout flowLayout = new FlowLayout();\r
+ flowLayout.setVgap(10);\r
+ jPanelEast = new JPanel();\r
+ jPanelEast.setLayout(flowLayout);\r
+ jPanelEast.setPreferredSize(new java.awt.Dimension(100,30));\r
+ jPanelEast.add(getJButtonNew(), null);\r
+ jPanelEast.add(getJButtonOk(), null);\r
+ jPanelEast.add(getJButtonCancel(), null);\r
+ }\r
+ return jPanelEast;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jPanel4 \r
+ * \r
+ * @return javax.swing.JPanel \r
+ */\r
+ private JPanel getJPanelCenter() {\r
+ if (jPanelCenter == null) {\r
+ jLabel = new JLabel();\r
+ jLabel.setText("GUID Value");\r
+ GridLayout gridLayout = new GridLayout();\r
+ gridLayout.setRows(4);\r
+ jPanelCenter = new JPanel();\r
+ jPanelCenter.setLayout(gridLayout);\r
+ jPanelCenter.add(getJRadioButtonReg(), null);\r
+ jPanelCenter.add(getJRadioButton(), null);\r
+ jPanelCenter.add(jLabel, null);\r
+ jPanelCenter.add(getJTextField(), null);\r
+ ButtonGroup bg = new ButtonGroup();\r
+ bg.add(jRadioButtonReg);\r
+ bg.add(jRadioButton);\r
+ }\r
+ return jPanelCenter;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTextField \r
+ * \r
+ * @return javax.swing.JTextField \r
+ */\r
+ private JTextField getJTextField() {\r
+ if (jTextField == null) {\r
+ jTextField = new JTextField();\r
+ jTextField.setHorizontalAlignment(JTextField.LEADING);\r
+ jTextField.setPreferredSize(new java.awt.Dimension(100,20));\r
+ }\r
+ return jTextField;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jRadioButton \r
+ * \r
+ * @return javax.swing.JRadioButton \r
+ */\r
+ private JRadioButton getJRadioButton() {\r
+ if (jRadioButton == null) {\r
+ jRadioButton = new JRadioButton();\r
+ jRadioButton.setText("Comma-Seperated Format");\r
+ jRadioButton.setEnabled(false);\r
+ jRadioButton.addActionListener(this);\r
+ }\r
+ return jRadioButton;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jRadioButton1 \r
+ * \r
+ * @return javax.swing.JRadioButton \r
+ */\r
+ private JRadioButton getJRadioButtonReg() {\r
+ if (jRadioButtonReg == null) {\r
+ jRadioButtonReg = new JRadioButton();\r
+ jRadioButtonReg.setText("Registry Format");\r
+ jRadioButtonReg.setSelected(true);\r
+ jRadioButtonReg.addActionListener(this);\r
+ }\r
+ return jRadioButtonReg;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButton \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonCancel() {\r
+ if (jButtonCancel == null) {\r
+ jButtonCancel = new JButton();\r
+ jButtonCancel.setPreferredSize(new java.awt.Dimension(80,20));\r
+ jButtonCancel.setText("Cancel");\r
+ jButtonCancel.addActionListener(this);\r
+ jButtonCancel.registerKeyboardAction(this, KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, false), JComponent.WHEN_FOCUSED);\r
+ }\r
+ return jButtonCancel;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButton1 \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonNew() {\r
+ if (jButtonNew == null) {\r
+ jButtonNew = new JButton();\r
+ jButtonNew.setPreferredSize(new java.awt.Dimension(80,20));\r
+ jButtonNew.setHorizontalTextPosition(javax.swing.SwingConstants.LEADING);\r
+ jButtonNew.setText("New");\r
+ jButtonNew.addActionListener(this);\r
+ jButtonNew.registerKeyboardAction(this, KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, false), JComponent.WHEN_FOCUSED);\r
+ }\r
+ return jButtonNew;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButton2 \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonOk() {\r
+ if (jButtonOk == null) {\r
+ jButtonOk = new JButton();\r
+ jButtonOk.setPreferredSize(new java.awt.Dimension(80,20));\r
+ jButtonOk.setText("Ok");\r
+ jButtonOk.setActionCommand("GenGuidValue");\r
+// jButtonOk.addActionListener(this);\r
+ jButtonOk.registerKeyboardAction(outerListener, KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, false), JComponent.WHEN_FOCUSED);\r
+ \r
+ }\r
+ return jButtonOk;\r
+ }\r
+\r
+ /**\r
+ \r
+ @param args\r
+ **/\r
+ public static void main(String[] args) {\r
+ // TODO Auto-generated method stub\r
+ new GenGuidDialog().setVisible(true);\r
+ }\r
+\r
+ public String getGuid(){\r
+ return jTextField.getText();\r
+ }\r
+ \r
+ public void setGuid(String s){\r
+ jTextField.setText(s);\r
+ }\r
+ /**\r
+ * This is the default constructor\r
+ */\r
+ public GenGuidDialog() {\r
+ super();\r
+ initialize();\r
+ }\r
+ \r
+ public GenGuidDialog(ActionListener i){\r
+ super();\r
+ outerListener = i;\r
+ initialize();\r
+ jButtonOk.addActionListener(i);\r
+ this.addWindowListener(new WindowAdapter(){\r
+\r
+ @Override\r
+ public void windowActivated(WindowEvent arg0) {\r
+ // TODO Auto-generated method stub\r
+ super.windowActivated(arg0);\r
+ if ((jRadioButtonReg.isSelected() && jTextField.getText().matches(GenGuidDialog.guidArrayPat))\r
+ || (jRadioButton.isSelected() && jTextField.getText().matches(GenGuidDialog.guidRegistryPat))) {\r
+ jTextField.setText(GenGuidDialog.formatGuidString(jTextField.getText()));\r
+ }\r
+ \r
+// if (!jTextField.getText().matches(Tools.guidArrayPat) || !jTextField.getText().matches(Tools.guidRegistryPat)) {\r
+// JOptionPane.showMessageDialog(frame, "InitVal: Incorrect GUID Value Format.");\r
+// return;\r
+// }\r
+ }\r
+ \r
+ });\r
+ }\r
+\r
+ /**\r
+ * This method initializes this\r
+ * \r
+ * @return void\r
+ */\r
+ private void initialize() {\r
+ this.setSize(466, 157);\r
+ this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);\r
+ this.setModal(true);\r
+ this.setTitle("Editing GUID Value");\r
+ this.setContentPane(getJContentPane());\r
+ this.centerWindow();\r
+ }\r
+\r
+ /**\r
+ * This method initializes jContentPane\r
+ * \r
+ * @return javax.swing.JPanel\r
+ */\r
+ private JPanel getJContentPane() {\r
+ if (jContentPane == null) {\r
+ jContentPane = new JPanel();\r
+ jContentPane.setLayout(new BorderLayout());\r
+ jContentPane.add(getJPanelEast(), java.awt.BorderLayout.EAST);\r
+ jContentPane.add(getJPanelCenter(), java.awt.BorderLayout.CENTER);\r
+ }\r
+ return jContentPane;\r
+ }\r
+\r
+ /**\r
+ Start the window at the center of screen\r
+ \r
+ **/\r
+ protected void centerWindow(int intWidth, int intHeight) {\r
+ Dimension d = Toolkit.getDefaultToolkit().getScreenSize();\r
+ this.setLocation((d.width - intWidth) / 2, (d.height - intHeight) / 2);\r
+ }\r
+\r
+ /**\r
+ Start the window at the center of screen\r
+ \r
+ **/\r
+ protected void centerWindow() {\r
+ centerWindow(this.getSize().width, this.getSize().height);\r
+ }\r
+ \r
+ public static String formatGuidString (String guidNameConv) {\r
+ String[] strList;\r
+ String guid = "";\r
+ int index = 0;\r
+ if (guidNameConv\r
+ .matches(GenGuidDialog.guidRegistryPat)) {\r
+ strList = guidNameConv.split("-");\r
+ guid = "0x" + strList[0] + ", ";\r
+ guid = guid + "0x" + strList[1] + ", ";\r
+ guid = guid + "0x" + strList[2] + ", ";\r
+\r
+ guid = guid + "0x" + strList[3].substring(0, 2) + ", ";\r
+ guid = guid + "0x" + strList[3].substring(2, 4);\r
+\r
+ while (index < strList[4].length()) {\r
+ guid = guid + ", ";\r
+ guid = guid + "0x" + strList[4].substring(index, index + 2);\r
+ index = index + 2;\r
+ }\r
+\r
+ return guid;\r
+ }\r
+ else if (guidNameConv\r
+ .matches(GenGuidDialog.guidArrayPat)) {\r
+ strList = guidNameConv.split(",");\r
+ \r
+ //\r
+ // chang ANSI c form to registry form\r
+ //\r
+ for (int i = 0; i < strList.length; i++){\r
+ strList[i] = strList[i].substring(strList[i].lastIndexOf("x") + 1);\r
+ }\r
+ if (strList[strList.length - 1].endsWith("}")) {\r
+ strList[strList.length -1] = strList[strList.length-1].substring(0, strList[strList.length-1].length()-1); \r
+ }\r
+ //\r
+ //inserting necessary leading zeros\r
+ //\r
+ \r
+ int segLen = strList[0].length();\r
+ if (segLen < 8){\r
+ for (int i = 0; i < 8 - segLen; ++i){\r
+ strList[0] = "0" + strList[0];\r
+ }\r
+ }\r
+ \r
+ segLen = strList[1].length();\r
+ if (segLen < 4){\r
+ for (int i = 0; i < 4 - segLen; ++i){\r
+ strList[1] = "0" + strList[1];\r
+ }\r
+ }\r
+ segLen = strList[2].length();\r
+ if (segLen < 4){\r
+ for (int i = 0; i < 4 - segLen; ++i){\r
+ strList[2] = "0" + strList[2];\r
+ }\r
+ }\r
+ for (int i = 3; i < 11; ++i) {\r
+ segLen = strList[i].length();\r
+ if (segLen < 2){\r
+ strList[i] = "0" + strList[i];\r
+ }\r
+ }\r
+ \r
+ for (int i = 0; i < 3; i++){\r
+ guid += strList[i] + "-";\r
+ }\r
+ \r
+ guid += strList[3];\r
+ guid += strList[4] + "-";\r
+ \r
+ for (int i = 5; i < strList.length; ++i){\r
+ guid += strList[i];\r
+ }\r
+ \r
+ \r
+ return guid;\r
+ } else {\r
+ \r
+ return "0";\r
+\r
+ }\r
+ }\r
+ \r
+} // @jve:decl-index=0:visual-constraint="10,10"\r