]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/GenGuidDialog.java
Restructuring for better separation of Tool packages.
[mirror_edk2.git] / Tools / Java / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / packaging / ui / GenGuidDialog.java
diff --git a/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/GenGuidDialog.java b/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/GenGuidDialog.java
new file mode 100644 (file)
index 0000000..4e65c3c
--- /dev/null
@@ -0,0 +1,454 @@
+/** @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