]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdGuidDecls.java
Restructuring for better separation of Tool packages.
[mirror_edk2.git] / Tools / Java / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / packaging / ui / SpdGuidDecls.java
diff --git a/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdGuidDecls.java b/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdGuidDecls.java
new file mode 100644 (file)
index 0000000..8cdcedd
--- /dev/null
@@ -0,0 +1,880 @@
+/** @file\r
+  Java class SpdGuidDecls is GUI for create library definition elements of spd file.\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.Dimension;\r
+import java.awt.event.ActionEvent;\r
+import java.awt.event.ComponentEvent;\r
+import java.util.Vector;\r
+\r
+import javax.swing.JOptionPane;\r
+import javax.swing.JPanel;\r
+import javax.swing.JTable;\r
+import javax.swing.JTextField;\r
+import javax.swing.JLabel;\r
+import javax.swing.JScrollPane;\r
+import javax.swing.JButton;\r
+import javax.swing.JFrame;\r
+import javax.swing.ListSelectionModel;\r
+import javax.swing.event.InternalFrameAdapter;\r
+import javax.swing.event.InternalFrameEvent;\r
+import javax.swing.event.ListSelectionEvent;\r
+import javax.swing.event.ListSelectionListener;\r
+import javax.swing.event.TableModelEvent;\r
+import javax.swing.event.TableModelListener;\r
+import javax.swing.table.DefaultTableModel;\r
+import javax.swing.table.TableModel;\r
+\r
+import org.tianocore.PackageSurfaceAreaDocument;\r
+import org.tianocore.frameworkwizard.common.DataValidation;\r
+import org.tianocore.frameworkwizard.common.Tools;\r
+import org.tianocore.frameworkwizard.common.Identifications.OpeningPackageType;\r
+import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
+import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
+import org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList;\r
+import org.tianocore.frameworkwizard.platform.ui.ListEditor;\r
+\r
+/**\r
+ GUI for create library definition elements of spd file.\r
+  \r
+ @since PackageEditor 1.0\r
+**/\r
+public class SpdGuidDecls extends IInternalFrame implements TableModelListener{\r
+    /**\r
+     * \r
+     */\r
+    private static final long serialVersionUID = 1L;\r
+\r
+    static JFrame frame;\r
+    \r
+    private SpdFileContents sfc = null;\r
+    \r
+    private OpeningPackageType docConsole = null;\r
+\r
+    private JTable jTable = null;\r
+\r
+    private DefaultTableModel model = null;\r
+\r
+    private JPanel jContentPane = null;\r
+\r
+    private JTextField jTextFieldGuid = null;\r
+\r
+    private JScrollPane jScrollPane = null;\r
+\r
+    private JButton jButtonAdd = null;\r
+\r
+    private JButton jButtonRemove = null;\r
+\r
+    private JButton jButtonClearAll = null;\r
+\r
+    private JButton jButtonCancel = null;\r
+\r
+    private JButton jButtonOk = null;\r
+\r
+    private JButton jButtonGen = null;\r
+    \r
+    private StarLabel jStarLabel1 = null;\r
+    \r
+    private StarLabel jStarLabel2 = null;\r
+    \r
+    private StarLabel jStarLabel3 = null;\r
+    \r
+    private StarLabel jStarLabel4 = null;\r
+\r
+    protected int selectedRow = -1;\r
+\r
+    private JLabel jLabelName = null;\r
+\r
+    private JScrollPane jScrollPaneModule = null;\r
+\r
+    private JTextField jTextFieldName = null;\r
+\r
+    private JScrollPane jScrollPaneArch = null;\r
+    \r
+    private JScrollPane jScrollPaneGuid = null;\r
+\r
+    private JLabel jLabelGuid = null;\r
+\r
+    private JScrollPane topScrollPane = null;  //  @jve:decl-index=0:visual-constraint="10,213"\r
+\r
+    private JLabel jLabelCName = null;\r
+\r
+    private GenGuidDialog guidDialog = null;\r
+\r
+    private JTextField jTextFieldCName = null;\r
+\r
+    private JLabel jLabelHelp = null;\r
+\r
+    private JTextField jTextFieldHelp = null;\r
+\r
+    private JLabel jLabelSupMod = null;\r
+\r
+    private JLabel jLabelSupArch = null;\r
+\r
+    private ICheckBoxList iCheckBoxListArch = null;\r
+\r
+    private ICheckBoxList iCheckBoxListGuid = null;\r
+\r
+    private ICheckBoxList iCheckBoxListMod = null;\r
+\r
+    private JLabel jLabelGuidType = null;\r
+\r
+    protected String[][] saa = null;\r
+\r
+    /**\r
+      This method initializes this\r
+     \r
+     **/\r
+    protected void initialize() {\r
+        \r
+        this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);\r
+\r
+    }\r
+\r
+    /**\r
+      This method initializes jTextFieldGuid   \r
+       \r
+      @return javax.swing.JTextField   \r
+     **/\r
+    protected JTextField getJTextFieldGuid() {\r
+        if (jTextFieldGuid == null) {\r
+            jTextFieldGuid = new JTextField();\r
+            jTextFieldGuid.setBounds(new java.awt.Rectangle(137,60,435,20));\r
+            jTextFieldGuid.setPreferredSize(new java.awt.Dimension(200,20));\r
+            \r
+        }\r
+        return jTextFieldGuid;\r
+    }\r
+\r
+    /**\r
+      This method initializes jScrollPane      \r
+       \r
+      @return javax.swing.JScrollPane  \r
+     **/\r
+    protected JScrollPane getJScrollPane() {\r
+        if (jScrollPane == null) {\r
+            jScrollPane = new JScrollPane();\r
+            jScrollPane.setBounds(new java.awt.Rectangle(5,256,472,292));\r
+            jScrollPane.setViewportView(getJTable());\r
+        }\r
+        return jScrollPane;\r
+    }\r
+\r
+    /**\r
+    This method initializes jTable  \r
+        \r
+    @return javax.swing.JTable  \r
+    **/\r
+   protected JTable getJTable() {\r
+       if (jTable == null) {\r
+           model = new DefaultTableModel();\r
+           jTable = new JTable(model);\r
+           jTable.setRowHeight(20);\r
+           jTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
+           model.addColumn("Name");\r
+           model.addColumn("The C Name");\r
+           model.addColumn("GUID Value");\r
+           model.addColumn("Help Text");\r
+           model.addColumn("Supported Architectures");\r
+           model.addColumn("Supported Module Types");\r
+           model.addColumn("GuidTypes");\r
+           jTable.getColumnModel().getColumn(2).setCellEditor(new GuidEditor());\r
+\r
+           Vector<String> vArch = new Vector<String>();\r
+           vArch.add("IA32");\r
+           vArch.add("X64");\r
+           vArch.add("IPF");\r
+           vArch.add("EBC");\r
+           vArch.add("ARM");\r
+           vArch.add("PPC");\r
+           jTable.getColumnModel().getColumn(4).setCellEditor(new ListEditor(vArch));\r
+           \r
+           Vector<String> vModule = new Vector<String>();\r
+           vModule.add("BASE");\r
+           vModule.add("SEC");\r
+           vModule.add("PEI_CORE");\r
+           vModule.add("PEIM");\r
+           vModule.add("DXE_CORE");\r
+           vModule.add("DXE_DRIVER");\r
+           vModule.add("DXE_RUNTIME_DRIVER");\r
+           vModule.add("DXE_SAL_DRIVER");\r
+           vModule.add("DXE_SMM_DRIVER");\r
+           vModule.add("UEFI_DRIVER");\r
+           vModule.add("UEFI_APPLICATION");\r
+           vModule.add("USER_DEFINED");\r
+           jTable.getColumnModel().getColumn(5).setCellEditor(new ListEditor(vModule));\r
+           \r
+           Vector<String> vGuid = new Vector<String>();\r
+           vGuid.add("DATA_HUB_RECORD");\r
+           vGuid.add("EFI_EVENT");\r
+           vGuid.add("EFI_SYSTEM_CONFIGURATION_TABLE");\r
+           vGuid.add("EFI_VARIABLE");\r
+           vGuid.add("GUID");\r
+           vGuid.add("HII_PACKAGE_LIST");\r
+           vGuid.add("HOB");\r
+           vGuid.add("TOKEN_SPACE_GUID");\r
+           jTable.getColumnModel().getColumn(6).setCellEditor(new ListEditor(vGuid));\r
+           \r
+           jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+           jTable.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
+               public void valueChanged(ListSelectionEvent e) {\r
+                   if (e.getValueIsAdjusting()){\r
+                       return;\r
+                   }\r
+                   ListSelectionModel lsm = (ListSelectionModel)e.getSource();\r
+                   if (lsm.isSelectionEmpty()) {\r
+                       return;\r
+                   }\r
+                   else{\r
+                       selectedRow = lsm.getMinSelectionIndex();\r
+                       \r
+                   }\r
+               }\r
+           });\r
+           \r
+           jTable.getModel().addTableModelListener(this);\r
+       }\r
+       return jTable;\r
+   }\r
+   \r
+\r
+   public void tableChanged(TableModelEvent arg0) {\r
+       // TODO Auto-generated method stub\r
+       int row = arg0.getFirstRow();\r
+       int column = arg0.getColumn();\r
+       TableModel m = (TableModel)arg0.getSource();\r
+       if (arg0.getType() == TableModelEvent.UPDATE){\r
+           \r
+           updateRow(row, column, m);\r
+       }\r
+   }\r
+   \r
+   protected void updateRow(int row, int column, TableModel m){\r
+       String[] sa = new String[7];\r
+       sfc.getSpdGuidDeclaration(sa, row);\r
+       Object cellData = m.getValueAt(row, column);\r
+       if (cellData == null) {\r
+           cellData = "";\r
+       }\r
+       if (cellData.equals(sa[column])) {\r
+           return;\r
+       }\r
+       if (cellData.toString().length() == 0 && sa[column] == null) {\r
+           return;\r
+       }\r
+       \r
+       String name = m.getValueAt(row, 0) + "";\r
+       String cName = m.getValueAt(row, 1) + "";\r
+       String guid = m.getValueAt(row, 2) + "";\r
+       String help = m.getValueAt(row, 3) + "";\r
+       String archList = null;\r
+       if (m.getValueAt(row, 4) != null){\r
+           archList = m.getValueAt(row, 4).toString();\r
+       }\r
+       String modTypeList = null;\r
+       if (m.getValueAt(row, 5) != null) {\r
+           modTypeList = m.getValueAt(row, 5).toString(); \r
+       }\r
+       String guidTypeList = null;\r
+       if (m.getValueAt(row, 6) != null){\r
+           guidTypeList = m.getValueAt(row, 6).toString();\r
+       }\r
+       String[] rowData = {name, cName, guid, help};\r
+       if (!dataValidation(rowData)){\r
+           return;\r
+       }\r
+       if (docConsole != null) {\r
+           docConsole.setSaved(false);\r
+       }\r
+       sfc.updateSpdGuidDecl(row, name, cName, guid, help, archList, modTypeList, guidTypeList);\r
+   }\r
+    /**\r
+      This method initializes jButtonAdd       \r
+       \r
+      @return javax.swing.JButton      \r
+     **/\r
+    protected JButton getJButtonAdd() {\r
+        if (jButtonAdd == null) {\r
+            jButtonAdd = new JButton();\r
+            jButtonAdd.setBounds(new java.awt.Rectangle(167,227,90,20));\r
+            jButtonAdd.setText("Add");\r
+            jButtonAdd.addActionListener(this);\r
+        }\r
+        return jButtonAdd;\r
+    }\r
+\r
+    /**\r
+      This method initializes jButtonRemove    \r
+       \r
+      @return javax.swing.JButton      \r
+     **/\r
+    protected JButton getJButtonRemove() {\r
+        if (jButtonRemove == null) {\r
+            jButtonRemove = new JButton();\r
+            jButtonRemove.setBounds(new java.awt.Rectangle(270,227,90,20));\r
+            jButtonRemove.setText("Remove");\r
+            jButtonRemove.addActionListener(this);\r
+        }\r
+        return jButtonRemove;\r
+    }\r
+\r
+    /**\r
+      This method initializes jButtonRemoveAll \r
+       \r
+      @return javax.swing.JButton      \r
+     **/\r
+    protected JButton getJButtonClearAll() {\r
+        if (jButtonClearAll == null) {\r
+            jButtonClearAll = new JButton();\r
+            jButtonClearAll.setBounds(new java.awt.Rectangle(380,227,90,20));\r
+            jButtonClearAll.setText("Clear All");\r
+            jButtonClearAll.addActionListener(this);\r
+        }\r
+        return jButtonClearAll;\r
+    }\r
+\r
+    /**\r
+      This method initializes jButtonCancel    \r
+       \r
+      @return javax.swing.JButton      \r
+     **/\r
+    protected JButton getJButtonCancel() {\r
+        if (jButtonCancel == null) {\r
+            jButtonCancel = new JButton();\r
+            jButtonCancel.setPreferredSize(new java.awt.Dimension(90, 20));\r
+            jButtonCancel.setLocation(new java.awt.Point(390, 305));\r
+            jButtonCancel.setText("Cancel");\r
+            jButtonCancel.setSize(new java.awt.Dimension(90, 20));\r
+            jButtonCancel.setVisible(false);\r
+            jButtonCancel.addActionListener(this);\r
+        }\r
+        return jButtonCancel;\r
+    }\r
+\r
+    /**\r
+      This method initializes jButton  \r
+       \r
+      @return javax.swing.JButton      \r
+     **/\r
+    protected JButton getJButtonOk() {\r
+        if (jButtonOk == null) {\r
+            jButtonOk = new JButton();\r
+            jButtonOk.setSize(new java.awt.Dimension(90, 20));\r
+            jButtonOk.setText("OK");\r
+            jButtonOk.setLocation(new java.awt.Point(290, 305));\r
+            jButtonOk.setVisible(false);\r
+            jButtonOk.addActionListener(this);\r
+        }\r
+        return jButtonOk;\r
+    }\r
+\r
+    /**\r
+      This is the default constructor\r
+     **/\r
+    public SpdGuidDecls() {\r
+        super();\r
+        initialize();\r
+        init();\r
+        \r
+    }\r
+\r
+    public SpdGuidDecls(PackageSurfaceAreaDocument.PackageSurfaceArea inPsa){\r
+        this();\r
+        sfc = new SpdFileContents(inPsa);\r
+        init(sfc);\r
+    }\r
+    \r
+    public SpdGuidDecls(OpeningPackageType opt) {\r
+        this(opt.getXmlSpd());\r
+        docConsole = opt;\r
+    }\r
+    /**\r
+      This method initializes this\r
+      \r
+      @return void\r
+     **/\r
+    protected void init() {\r
+        this.setContentPane(getJContentPane());\r
+        this.addInternalFrameListener(new InternalFrameAdapter(){\r
+            public void internalFrameDeactivated(InternalFrameEvent e){\r
+                if (jTable.isEditing()) {\r
+                    jTable.getCellEditor().stopCellEditing();\r
+                }\r
+            }\r
+        });\r
+        this.setBounds(new java.awt.Rectangle(0, 0, 500, 370));\r
+        this.setVisible(true);\r
+        initFrame();\r
+    }\r
+\r
+    protected void init(SpdFileContents sfc){\r
+        if (sfc.getSpdGuidDeclarationCount() == 0) {\r
+            return ;\r
+        }\r
+        //\r
+        // initialize table using SpdFileContents object\r
+        //\r
+        saa = new String[sfc.getSpdGuidDeclarationCount()][7];\r
+        sfc.getSpdGuidDeclarations(saa);\r
+        int i = 0;\r
+        while (i < saa.length) {\r
+            model.addRow(saa[i]);\r
+            i++;\r
+        }\r
+    }\r
+    \r
+    protected JScrollPane getJContentPane(){\r
+        if (topScrollPane == null){\r
+            topScrollPane = new JScrollPane();\r
+            topScrollPane.setSize(new java.awt.Dimension(617,500));\r
+            topScrollPane.setPreferredSize(new java.awt.Dimension(498,500));\r
+            topScrollPane.setViewportView(getJContentPane1());\r
+        }\r
+        return topScrollPane;\r
+    }\r
+    \r
+    /**\r
+      This method initializes jContentPane\r
+      \r
+      @return javax.swing.JPanel\r
+     **/\r
+    protected JPanel getJContentPane1() {\r
+        if (jContentPane == null) {\r
+            jLabelGuidType = new JLabel();\r
+            jLabelGuidType.setBounds(new java.awt.Rectangle(400,122,103,16));\r
+            jLabelGuidType.setText("GUID Type List");\r
+            jLabelGuidType.setEnabled(true);\r
+            jLabelSupArch = new JLabel();\r
+            jLabelSupArch.setBounds(new java.awt.Rectangle(197,122,108,16));\r
+            jLabelSupArch.setText("Supported Arch");\r
+            jLabelSupArch.setEnabled(true);\r
+            jLabelSupMod = new JLabel();\r
+            jLabelSupMod.setBounds(new java.awt.Rectangle(14,120,110,16));\r
+            jLabelSupMod.setText("Supported Module");\r
+            jLabelSupMod.setEnabled(true);\r
+            jLabelHelp = new JLabel();\r
+            jLabelHelp.setText("HelpText");\r
+            jLabelHelp.setSize(new java.awt.Dimension(109,20));\r
+            jLabelHelp.setLocation(new java.awt.Point(14,85));\r
+            jLabelCName = new JLabel();\r
+            jLabelCName.setBounds(new java.awt.Rectangle(14,35,111,20));\r
+            jLabelCName.setText("C Name");\r
+            jLabelGuid = new JLabel();\r
+            jLabelGuid.setBounds(new java.awt.Rectangle(15,60,112,20));\r
+            jLabelGuid.setText("Guid Value");\r
+            jLabelName = new JLabel();\r
+            jLabelName.setBounds(new java.awt.Rectangle(15,10,113,20));\r
+            jLabelName.setText("Name");\r
+            jStarLabel1 = new StarLabel();\r
+            jStarLabel1.setLocation(new java.awt.Point(0, 10));\r
+            jStarLabel3 = new StarLabel();\r
+            jStarLabel3.setLocation(new java.awt.Point(0, 35));\r
+            jStarLabel4 = new StarLabel();\r
+            jStarLabel4.setLocation(new java.awt.Point(0, 60));\r
+            jStarLabel2 = new StarLabel();\r
+            jStarLabel2.setLocation(new java.awt.Point(0, 85));\r
+            jStarLabel2.setVisible(true);\r
+            jContentPane = new JPanel();\r
+            jContentPane.setLayout(null);\r
+            jContentPane.setPreferredSize(new Dimension(480, 375));\r
+            jContentPane.add(jStarLabel1, null);\r
+            jContentPane.add(jStarLabel2, null);\r
+            jContentPane.add(jStarLabel3, null);\r
+            jContentPane.add(jStarLabel4, null);\r
+            jContentPane.add(jLabelCName, null);\r
+            jContentPane.add(getJTextFieldCName(), null);\r
+            jContentPane.add(getJTextFieldGuid(), null);\r
+            jContentPane.add(getJScrollPane(), null);\r
+            jContentPane.add(getJButtonAdd(), null);\r
+            jContentPane.add(getJButtonRemove(), null);\r
+            jContentPane.add(getJButtonClearAll(), null);\r
+            jContentPane.add(getJButtonCancel(), null);\r
+            jContentPane.add(getJButtonOk(), null);\r
+            \r
+            jContentPane.add(getJButtonGen(), null);\r
+            jContentPane.add(jLabelName, null);\r
+            jContentPane.add(getJTextFieldName(), null);\r
+            jContentPane.add(jLabelGuid, null);\r
+            jContentPane.add(jLabelHelp, null);\r
+            jContentPane.add(getJTextFieldHelp(), null);\r
+            jContentPane.add(jLabelSupMod, null);\r
+            jContentPane.add(jLabelSupArch, null);\r
+            jContentPane.add(getJScrollPaneArch(), null);\r
+            jContentPane.add(getJScrollPaneGuid(), null);\r
+            jContentPane.add(getJScrollPaneModule(), null);\r
+            jContentPane.add(jLabelGuidType, null);\r
+        }\r
+        return jContentPane;\r
+    }\r
+\r
+    /**\r
+     fill ComboBoxes with pre-defined contents\r
+    **/\r
+    protected void initFrame() {\r
+        \r
+        this.setTitle("GUID Declarations");\r
+\r
+    }\r
+\r
+    /* (non-Javadoc)\r
+     * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
+     */\r
+    public void actionPerformed(ActionEvent arg0) {\r
+        \r
+        if (arg0.getSource() == jButtonOk) {\r
+            this.save();\r
+            this.dispose();\r
+\r
+        }\r
+        if (arg0.getSource() == jButtonCancel) {\r
+            this.dispose();\r
+        }\r
+\r
+        if (arg0.getSource() == jButtonAdd) {\r
+            \r
+            //ToDo: check before add\r
+            String[] row = {"", "", "", "", "", "", ""};\r
+            row[3] = jTextFieldHelp.getText();\r
+            row[2] = jTextFieldGuid.getText();\r
+            row[1] = jTextFieldCName.getText();\r
+            row[0] = jTextFieldName.getText();\r
+            row[4] = vectorToString(iCheckBoxListArch.getAllCheckedItemsString());\r
+            if (row[4].length() == 0) {\r
+                row[4] = null;\r
+            }\r
+            row[5] = vectorToString(iCheckBoxListMod.getAllCheckedItemsString());\r
+            if (row[5].length() == 0) {\r
+                row[5] = null;\r
+            }\r
+            row[6] = vectorToString(iCheckBoxListGuid.getAllCheckedItemsString());\r
+            if (row[6].length() == 0) {\r
+                row[6] = null;\r
+            }\r
+            \r
+            if (!dataValidation(row)) {\r
+                return;\r
+            }\r
+            \r
+            if (addRow(row) == -1) {\r
+                return;\r
+            }\r
+            model.addRow(row);\r
+            jTable.changeSelection(model.getRowCount()-1, 0, false, false);\r
+            \r
+        }\r
+        //\r
+        // remove selected line\r
+        //\r
+        if (arg0.getSource() == jButtonRemove) {\r
+            if (jTable.isEditing()){\r
+                jTable.getCellEditor().stopCellEditing();\r
+            }\r
+            int rowSelected = selectedRow;\r
+            if (rowSelected >= 0) {\r
+                model.removeRow(rowSelected);\r
+                removeRow(rowSelected);\r
+            }\r
+        }\r
+\r
+        if (arg0.getSource() == jButtonClearAll) {\r
+            if (model.getRowCount() == 0) {\r
+                return;\r
+            }\r
+            model.setRowCount(0);\r
+            clearAllRow();\r
+        }\r
+        \r
+        if (arg0.getSource() == jButtonGen) {\r
+            jTextFieldGuid.setText(Tools.generateUuidString());\r
+        }\r
+        \r
+        if (arg0.getActionCommand().equals("GenGuidValue")) {\r
+            jTextFieldGuid.setText(guidDialog.getGuid());\r
+        }\r
+        \r
+    }\r
+    \r
+    protected boolean dataValidation(String[] row){\r
+        if (!DataValidation.isUiNameType(row[0])) {\r
+            JOptionPane.showMessageDialog(this, "Name must start with an alpha character.");\r
+            return false;\r
+        }\r
+        if (!DataValidation.isGuid(row[2])) {\r
+            JOptionPane.showMessageDialog(this, "Guid Value must be in registry format, 8-4-4-4-12.");\r
+            return false;\r
+        }\r
+        if (!DataValidation.isC_NameType(row[1])) {\r
+            JOptionPane.showMessageDialog(this, "C Name does not match C Name datatype.");\r
+            return false;\r
+        }\r
+        if (row[3].length() == 0) {\r
+            JOptionPane.showMessageDialog(this, "Help Text must be entered!");\r
+            return false;\r
+        }\r
+        return true;\r
+    }\r
+    \r
+    protected int addRow(String[] row) {\r
+        Vector<String> vArch = iCheckBoxListArch.getAllCheckedItemsString();\r
+        if (vArch.size() == 0) {\r
+            vArch = null;\r
+        }\r
+        Vector<String> vModType = iCheckBoxListMod.getAllCheckedItemsString();\r
+        if (vModType.size() == 0) {\r
+            vModType = null;\r
+        }\r
+        Vector<String> vguidType = iCheckBoxListGuid.getAllCheckedItemsString();\r
+        if (vguidType.size() == 0) {\r
+            vguidType = null;\r
+        }\r
+        if (vguidType == null) {\r
+            JOptionPane.showMessageDialog(this, "You must select one GUID type.");\r
+            return -1;\r
+        }\r
+        if (docConsole != null) {\r
+            docConsole.setSaved(false);\r
+        }\r
+        sfc.genSpdGuidDeclarations(row[0], row[1], row[2], row[3], vArch, vModType, vguidType);\r
+        return 0;\r
+    }\r
+    \r
+    protected void removeRow(int i){\r
+        sfc.removeSpdGuidDeclaration(i);\r
+        if (docConsole != null) {\r
+            docConsole.setSaved(false);\r
+        }\r
+    }\r
+    \r
+    protected void clearAllRow(){\r
+        sfc.removeSpdGuidDeclaration();\r
+        if (docConsole != null) {\r
+            docConsole.setSaved(false);\r
+        }\r
+    }\r
+\r
+    /**\r
+     Add contents in list to sfc\r
+    **/\r
+    protected void save() {\r
+        \r
+    }\r
+\r
+    /**\r
+      This method initializes jButtonBrowse    \r
+       \r
+      @return javax.swing.JButton      \r
+     **/\r
+    protected JButton getJButtonGen() {\r
+        if (jButtonGen == null) {\r
+            jButtonGen = new JButton();\r
+            jButtonGen.setBounds(new java.awt.Rectangle(379,58,92,21));\r
+            jButtonGen.setText("Gen GUID");\r
+            jButtonGen.setPreferredSize(new java.awt.Dimension(80,20));\r
+            jButtonGen.addActionListener(this);\r
+        }\r
+        return jButtonGen;\r
+    }\r
+    \r
+    /**\r
+     * This method initializes jTextFieldName  \r
+     *         \r
+     * @return javax.swing.JTextField  \r
+     */\r
+    protected JTextField getJTextFieldName() {\r
+        if (jTextFieldName == null) {\r
+            jTextFieldName = new JTextField();\r
+            jTextFieldName.setBounds(new java.awt.Rectangle(138,10,337,20));\r
+            jTextFieldName.setPreferredSize(new java.awt.Dimension(335,20));\r
+        }\r
+        return jTextFieldName;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jTextFieldCName \r
+     *         \r
+     * @return javax.swing.JTextField  \r
+     */\r
+    protected JTextField getJTextFieldCName() {\r
+        if (jTextFieldCName == null) {\r
+            jTextFieldCName = new JTextField();\r
+            jTextFieldCName.setBounds(new java.awt.Rectangle(137,35,337,20));\r
+            jTextFieldCName.setPreferredSize(new java.awt.Dimension(335,20));\r
+        }\r
+        return jTextFieldCName;\r
+    }\r
+\r
+    public void componentResized(ComponentEvent arg0) {\r
+        int intPreferredWidth = 500;\r
+        \r
+        Tools.resizeComponentWidth(this.jTextFieldName, this.getWidth(), intPreferredWidth);\r
+\r
+        Tools.resizeComponentWidth(this.jTextFieldCName, this.getWidth(), intPreferredWidth);\r
+        Tools.resizeComponentWidth(this.jTextFieldHelp, this.getWidth(), intPreferredWidth);\r
+        Tools.resizeComponentWidth(this.jScrollPane, this.getWidth(), intPreferredWidth);\r
+        Tools.relocateComponentX(this.jButtonGen, this.getWidth(), this.getPreferredSize().width, 40);\r
+        \r
+    }\r
+    \r
+    /**\r
+     * This method initializes jTextField      \r
+     *         \r
+     * @return javax.swing.JTextField  \r
+     */\r
+    private JTextField getJTextFieldHelp() {\r
+        if (jTextFieldHelp == null) {\r
+            jTextFieldHelp = new JTextField();\r
+            jTextFieldHelp.setBounds(new java.awt.Rectangle(136,85,337,20));\r
+            jTextFieldHelp.setPreferredSize(new Dimension(335, 20));\r
+        }\r
+        return jTextFieldHelp;\r
+    }\r
+\r
+    private JScrollPane getJScrollPaneArch() {\r
+        if (jScrollPaneArch == null) {\r
+            jScrollPaneArch = new JScrollPane();\r
+            jScrollPaneArch.setBounds(new java.awt.Rectangle(197,142,188,74));\r
+            jScrollPaneArch.setPreferredSize(new java.awt.Dimension(188, 74));\r
+            jScrollPaneArch.setViewportView(getICheckBoxListArch());\r
+        }\r
+        return jScrollPaneArch;\r
+    }\r
+    /**\r
+     * This method initializes iCheckBoxList   \r
+     *         \r
+     * @return org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList     \r
+     */\r
+    private ICheckBoxList getICheckBoxListArch() {\r
+        if (iCheckBoxListArch == null) {\r
+            iCheckBoxListArch = new ICheckBoxList();\r
+            iCheckBoxListArch.setBounds(new java.awt.Rectangle(197,142,188,74));\r
+            Vector<String> v = new Vector<String>();\r
+            v.add("IA32");\r
+            v.add("X64");\r
+            v.add("IPF");\r
+            v.add("EBC");\r
+            v.add("ARM");\r
+            v.add("PPC");\r
+            iCheckBoxListArch.setAllItems(v);\r
+        }\r
+        return iCheckBoxListArch;\r
+    }\r
+\r
+    protected JScrollPane getJScrollPaneGuid() {\r
+        if (jScrollPaneGuid== null) {\r
+            jScrollPaneGuid = new JScrollPane();\r
+            jScrollPaneGuid.setPreferredSize(new java.awt.Dimension(190,74));\r
+            jScrollPaneGuid.setLocation(new java.awt.Point(400,142));\r
+            jScrollPaneGuid.setSize(new java.awt.Dimension(260,74));\r
+            jScrollPaneGuid.setViewportView(getICheckBoxListGuid());\r
+        }\r
+        return jScrollPaneGuid;\r
+    }\r
+    /**\r
+     * This method initializes iCheckBoxList1  \r
+     *         \r
+     * @return org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList     \r
+     */\r
+    private ICheckBoxList getICheckBoxListGuid() {\r
+        if (iCheckBoxListGuid == null) {\r
+            iCheckBoxListGuid = new ICheckBoxList();\r
+            iCheckBoxListGuid.setBounds(new java.awt.Rectangle(400,142,177,74));\r
+            Vector<String> v = new Vector<String>();\r
+            v.add("DATA_HUB_RECORD");\r
+            v.add("EFI_EVENT");\r
+            v.add("EFI_SYSTEM_CONFIGURATION_TABLE");\r
+            v.add("EFI_VARIABLE");\r
+            v.add("GUID");\r
+            v.add("HII_PACKAGE_LIST");\r
+            v.add("HOB");\r
+            v.add("TOKEN_SPACE_GUID");\r
+          \r
+            iCheckBoxListGuid.setAllItems(v);\r
+        }\r
+        return iCheckBoxListGuid;\r
+    }\r
+\r
+    private JScrollPane getJScrollPaneModule() {\r
+        if (jScrollPaneModule == null) {\r
+            jScrollPaneModule = new JScrollPane();\r
+            jScrollPaneModule.setBounds(new java.awt.Rectangle(14,142,170,74));\r
+            jScrollPaneModule.setPreferredSize(new java.awt.Dimension(170, 74));\r
+            jScrollPaneModule.setViewportView(getICheckBoxListMod());\r
+        }\r
+        return jScrollPaneModule;\r
+    }\r
+    /**\r
+     * This method initializes iCheckBoxList2  \r
+     *         \r
+     * @return org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList     \r
+     */\r
+    private ICheckBoxList getICheckBoxListMod() {\r
+        if (iCheckBoxListMod == null) {\r
+            iCheckBoxListMod = new ICheckBoxList();\r
+            iCheckBoxListMod.setBounds(new java.awt.Rectangle(14,142,170,74));\r
+            Vector<String> v = new Vector<String>();\r
+            v.add("BASE");\r
+            v.add("SEC");\r
+            v.add("PEI_CORE");\r
+            v.add("PEIM");\r
+            v.add("DXE_CORE");\r
+            v.add("DXE_DRIVER");\r
+            v.add("DXE_RUNTIME_DRIVER");\r
+            v.add("DXE_SAL_DRIVER");\r
+            v.add("DXE_SMM_DRIVER");\r
+            v.add("UEFI_DRIVER");\r
+            v.add("UEFI_APPLICATION");\r
+            v.add("USER_DEFINED");\r
+            iCheckBoxListMod.setAllItems(v);\r
+        }\r
+        return iCheckBoxListMod;\r
+    }\r
+\r
+    public static void main(String[] args){\r
+        new SpdGuidDecls().setVisible(true);\r
+    }\r
+\r
+    protected DefaultTableModel getModel() {\r
+        return model;\r
+    }\r
+\r
+    protected void setModel(DefaultTableModel model) {\r
+        this.model = model;\r
+    }\r
+    \r
+    protected String vectorToString(Vector<String> v) {\r
+        String s = " ";\r
+        for (int i = 0; i < v.size(); ++i) {\r
+            s += v.get(i);\r
+            s += " ";\r
+        }\r
+        return s.trim();\r
+    }\r
+    \r
+    protected Vector<String> stringToVector(String s){\r
+        if (s == null) {\r
+            return null;\r
+        }\r
+        String[] sArray = s.split(" ");\r
+        Vector<String> v = new Vector<String>();\r
+        for (int i = 0; i < sArray.length; ++i) {\r
+            v.add(sArray[i]);\r
+        }\r
+        return v;\r
+    }\r
+\r
+    protected JLabel getJLabelGuidType() {\r
+        return jLabelGuidType;\r
+    }\r
+}\r
+\r
+\r