]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdLibClassDecls.java
Add Data Validations for SPD editor.
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / packaging / ui / SpdLibClassDecls.java
index fd5c552720cc0847799574cb4b9a8d7e8ebf3dd4..32596fe639091c9ee9142e0a50f8b813a49e2ea5 100644 (file)
@@ -12,20 +12,13 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 **/\r
 package org.tianocore.frameworkwizard.packaging.ui;\r
 \r
-import java.awt.BorderLayout;\r
 import java.awt.Dimension;\r
-import java.awt.Toolkit;\r
 import java.awt.event.ActionEvent;\r
-import java.awt.event.ActionListener;\r
 import java.awt.event.ComponentEvent;\r
-import java.awt.event.FocusAdapter;\r
-import java.awt.event.FocusEvent;\r
-import java.awt.event.FocusListener;\r
 import java.io.File;\r
 import java.util.Vector;\r
 \r
 import javax.swing.AbstractAction;\r
-import javax.swing.DefaultListModel;\r
 import javax.swing.JFileChooser;\r
 import javax.swing.JOptionPane;\r
 import javax.swing.JPanel;\r
@@ -34,7 +27,6 @@ import javax.swing.JTable;
 import javax.swing.JTextField;\r
 import javax.swing.JComboBox;\r
 import javax.swing.JLabel;\r
-import javax.swing.JList;\r
 import javax.swing.JScrollPane;\r
 import javax.swing.JButton;\r
 import javax.swing.JFrame;\r
@@ -49,11 +41,12 @@ import javax.swing.table.DefaultTableModel;
 import javax.swing.table.TableModel;\r
 \r
 import org.tianocore.PackageSurfaceAreaDocument;\r
-import org.tianocore.frameworkwizard.common.DataType;\r
+import org.tianocore.frameworkwizard.common.DataValidation;\r
 import org.tianocore.frameworkwizard.common.Tools;\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
 import javax.swing.JCheckBox;\r
 \r
@@ -63,6 +56,11 @@ import javax.swing.JCheckBox;
  @since PackageEditor 1.0\r
 **/\r
 public class SpdLibClassDecls extends IInternalFrame implements TableModelListener{\r
+    /**\r
+     * \r
+     */\r
+    private static final long serialVersionUID = 1L;\r
+\r
     static JFrame frame;\r
     \r
     private JTable jTable = null;\r
@@ -87,8 +85,6 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
 \r
     private JButton jButtonClearAll = null;\r
 \r
-    private JButton jButtonCancel = null;\r
-\r
     private JButton jButtonOk = null;\r
 \r
     private JLabel jLabel = null;\r
@@ -139,6 +135,10 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
     \r
     private ICheckBoxList iCheckBoxListArch = null;\r
 \r
+    private JCheckBox jCheckBox4 = null;\r
+\r
+    private JCheckBox jCheckBox5 = null;\r
+\r
     /**\r
       This method initializes this\r
      \r
@@ -191,7 +191,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
     private JTextField getJTextFieldAdd() {\r
         if (jTextFieldAdd == null) {\r
             jTextFieldAdd = new JTextField();\r
-            jTextFieldAdd.setBounds(new java.awt.Rectangle(122,6,343,20));\r
+            jTextFieldAdd.setBounds(new java.awt.Rectangle(122,6,390,20));\r
             jTextFieldAdd.setPreferredSize(new java.awt.Dimension(260,20));\r
             jTextFieldAdd.setEnabled(true);\r
         }\r
@@ -222,7 +222,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
     private JScrollPane getJScrollPane() {\r
         if (jScrollPane == null) {\r
             jScrollPane = new JScrollPane();\r
-            jScrollPane.setBounds(new java.awt.Rectangle(12,302,351,164));\r
+            jScrollPane.setBounds(new java.awt.Rectangle(12,351,608,139));\r
             jScrollPane.setPreferredSize(new java.awt.Dimension(330,150));\r
             jScrollPane.setViewportView(getJTable());\r
         }\r
@@ -247,6 +247,30 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
            model.addColumn("InstanceVersion");\r
            model.addColumn("SupportedArch");\r
            model.addColumn("SupportedModule");\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(5).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(6).setCellEditor(new ListEditor(vModule));\r
           \r
            jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
            jTable.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
@@ -289,6 +313,10 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
             if (m.getValueAt(row, 6) != null) {\r
                 module = m.getValueAt(row, 6).toString();\r
             }\r
+            String[] rowData = {lib, hdr, hlp};\r
+            if (!dataValidation(rowData)) {\r
+                return;\r
+            }\r
             sfc.updateSpdLibClass(row, lib, hdr, hlp, guid, ver, arch, module);\r
         }\r
     }\r
@@ -301,8 +329,9 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
     private JButton getJButtonAdd() {\r
         if (jButtonAdd == null) {\r
             jButtonAdd = new JButton();\r
-            jButtonAdd.setBounds(new java.awt.Rectangle(374,303,90,20));\r
             jButtonAdd.setText("Add");\r
+            jButtonAdd.setSize(new java.awt.Dimension(80,20));\r
+            jButtonAdd.setLocation(new java.awt.Point(365,315));\r
             jButtonAdd.addActionListener(this);\r
         }\r
         return jButtonAdd;\r
@@ -316,8 +345,9 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
     private JButton getJButtonRemove() {\r
         if (jButtonRemove == null) {\r
             jButtonRemove = new JButton();\r
-            jButtonRemove.setBounds(new java.awt.Rectangle(374,381,90,20));\r
             jButtonRemove.setText("Remove");\r
+            jButtonRemove.setSize(new java.awt.Dimension(80,20));\r
+            jButtonRemove.setLocation(new java.awt.Point(449,315));\r
             jButtonRemove.addActionListener(this);\r
         }\r
         return jButtonRemove;\r
@@ -331,31 +361,14 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
     private JButton getJButtonClearAll() {\r
         if (jButtonClearAll == null) {\r
             jButtonClearAll = new JButton();\r
-            jButtonClearAll.setBounds(new java.awt.Rectangle(374,411,90,20));\r
             jButtonClearAll.setText("Clear All");\r
+            jButtonClearAll.setSize(new java.awt.Dimension(86,20));\r
+            jButtonClearAll.setLocation(new java.awt.Point(536,315));\r
             jButtonClearAll.addActionListener(this);\r
         }\r
         return jButtonClearAll;\r
     }\r
 \r
-    /**\r
-      This method initializes jButtonCancel    \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(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
@@ -427,7 +440,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
     private JScrollPane getJContentPane(){\r
         if (topScrollPane == null){\r
           topScrollPane = new JScrollPane();\r
-          topScrollPane.setSize(new java.awt.Dimension(483,500));\r
+          topScrollPane.setSize(new java.awt.Dimension(634,500));\r
           topScrollPane.setViewportView(getJContentPane1());\r
         }\r
         return topScrollPane;\r
@@ -448,11 +461,11 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
             jLabel5.setText("Supported Arch");\r
             jLabel5.setEnabled(true);\r
             jLabel4 = new JLabel();\r
-            jLabel4.setBounds(new java.awt.Rectangle(16,160,196,16));\r
+            jLabel4.setBounds(new java.awt.Rectangle(16,138,196,16));\r
             jLabel4.setEnabled(true);\r
             jLabel4.setText("Recommended Instance Version");\r
             jLabel3 = new JLabel();\r
-            jLabel3.setBounds(new java.awt.Rectangle(17,112,175,16));\r
+            jLabel3.setBounds(new java.awt.Rectangle(17,112,195,16));\r
             jLabel3.setEnabled(true);\r
             jLabel3.setText("Recommended Instance GUID");\r
             jLabel2 = new JLabel();\r
@@ -466,9 +479,9 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
             jStarLabel1 = new StarLabel();\r
             jStarLabel1.setLocation(new java.awt.Point(1,7));\r
             jStarLabel2 = new StarLabel();\r
-            jStarLabel2.setLocation(new java.awt.Point(1,56));\r
+            jStarLabel2.setLocation(new java.awt.Point(-1,74));\r
             jLabel = new JLabel();\r
-            jLabel.setBounds(new java.awt.Rectangle(16,56,199,22));\r
+            jLabel.setBounds(new java.awt.Rectangle(14,74,199,22));\r
             jLabel.setText("Include Header for Specified Class");\r
             \r
             jContentPane = new JPanel();\r
@@ -485,7 +498,6 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
             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(getJTextField(), null);\r
@@ -506,6 +518,8 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
             jContentPane.add(jLabel6, null);\r
             \r
             jContentPane.add(getJScrollPaneArch(), null);\r
+            jContentPane.add(getJCheckBox4(), null);\r
+            jContentPane.add(getJCheckBox5(), null);\r
         }\r
         \r
         return jContentPane;\r
@@ -565,9 +579,6 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
             this.dispose();\r
 \r
         }\r
-        if (arg0.getSource() == jButtonCancel) {\r
-            this.dispose();\r
-        }\r
 \r
         if (arg0.getSource() == jButtonAdd) {\r
             \r
@@ -576,7 +587,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
             row[0] = jTextFieldAdd.getText();\r
             row[1] = jTextField.getText().replace('\\', '/');\r
             row[2] = jTextFieldHelp.getText();\r
-            row[5] = booleanToString(jCheckBox.isSelected(), jCheckBox1.isSelected(), jCheckBox2.isSelected(), jCheckBox3.isSelected());\r
+            row[5] = booleanToString(jCheckBox.isSelected(), jCheckBox1.isSelected(), jCheckBox2.isSelected(), jCheckBox3.isSelected(), jCheckBox4.isSelected(), jCheckBox5.isSelected());\r
             if (row[5].length() == 0){\r
                 row[5] = null;\r
             }\r
@@ -584,6 +595,9 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
             if (row[6].length() == 0){\r
                 row[6] = null;\r
             }\r
+            if (!dataValidation(row)) {\r
+                return;\r
+            }\r
             model.addRow(row);\r
             sfc.genSpdLibClassDeclarations(row[0], row[3], row[1], row[2], row[5], null, null, row[4], null, row[6]);\r
             \r
@@ -638,7 +652,19 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
         }\r
     }\r
 \r
-    \r
+    private boolean dataValidation(String[] row) {\r
+        if (!DataValidation.isKeywordType(row[0])) {\r
+            JOptionPane.showMessageDialog(frame, "Library Class is NOT KeyWord Type.");\r
+            return false;\r
+        }\r
+        if (!DataValidation.isPathAndFilename(row[1])) {\r
+            JOptionPane.showMessageDialog(frame, "Include Header is NOT PathAndFilename Type.");\r
+        }\r
+        if (row[2].length() == 0) {\r
+            JOptionPane.showMessageDialog(frame, "HelpText could NOT be empty.");\r
+        }\r
+        return true;\r
+    }\r
     /**\r
      Add contents in list to sfc\r
     **/\r
@@ -654,7 +680,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
     private JTextField getJTextField() {\r
         if (jTextField == null) {\r
             jTextField = new JTextField();\r
-            jTextField.setBounds(new java.awt.Rectangle(16,83,346,21));\r
+            jTextField.setBounds(new java.awt.Rectangle(221,75,290,21));\r
             jTextField.setPreferredSize(new java.awt.Dimension(260,20));\r
         }\r
         return jTextField;\r
@@ -668,11 +694,16 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
     private JButton getJButtonBrowse() {\r
         if (jButtonBrowse == null) {\r
             jButtonBrowse = new JButton();\r
-            jButtonBrowse.setBounds(new java.awt.Rectangle(376,82,90,20));\r
+            jButtonBrowse.setBounds(new java.awt.Rectangle(528,75,90,20));\r
             jButtonBrowse.setText("Browse");\r
             jButtonBrowse.setPreferredSize(new java.awt.Dimension(80,20));\r
             jButtonBrowse.addActionListener(new AbstractAction() {\r
                 \r
+                /**\r
+                 * \r
+                 */\r
+                private static final long serialVersionUID = 1L;\r
+\r
                 public void actionPerformed(ActionEvent arg0) {\r
                     //\r
                     // Select files from current pkg\r
@@ -718,10 +749,6 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
         resizeComponentWidth(this.jTextFieldAdd, this.getWidth(), intPreferredWidth);\r
         resizeComponentWidth(this.jTextFieldHelp, this.getWidth(), intPreferredWidth);\r
         resizeComponentWidth(this.jScrollPane, this.getWidth(), intPreferredWidth);\r
-        relocateComponentX(this.jButtonBrowse, this.getWidth(), this.getPreferredSize().width,25);\r
-        relocateComponentX(this.jButtonClearAll, this.getWidth(), this.getPreferredSize().width,25);\r
-        relocateComponentX(this.jButtonRemove, this.getWidth(), this.getPreferredSize().width,25);\r
-        relocateComponentX(this.jButtonAdd, this.getWidth(), this.getPreferredSize().width,50);\r
         \r
     }\r
     /**\r
@@ -732,7 +759,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
     private JTextField getJTextFieldHelp() {\r
         if (jTextFieldHelp == null) {\r
             jTextFieldHelp = new JTextField();\r
-            jTextFieldHelp.setBounds(new java.awt.Rectangle(122,33,343,20));\r
+            jTextFieldHelp.setBounds(new java.awt.Rectangle(122,33,390,20));\r
             jTextFieldHelp.setPreferredSize(new java.awt.Dimension(260,20));\r
         }\r
         return jTextFieldHelp;\r
@@ -746,7 +773,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
     private JTextField getJTextField1() {\r
         if (jTextField1 == null) {\r
             jTextField1 = new JTextField();\r
-            jTextField1.setBounds(new java.awt.Rectangle(16,135,344,20));\r
+            jTextField1.setBounds(new java.awt.Rectangle(220,110,291,20));\r
             jTextField1.setEnabled(true);\r
         }\r
         return jTextField1;\r
@@ -760,7 +787,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
     private JTextField getJTextField2() {\r
         if (jTextField2 == null) {\r
             jTextField2 = new JTextField();\r
-            jTextField2.setBounds(new java.awt.Rectangle(16,184,344,20));\r
+            jTextField2.setBounds(new java.awt.Rectangle(218,135,292,20));\r
             jTextField2.setEnabled(true);\r
         }\r
         return jTextField2;\r
@@ -789,7 +816,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
     private JCheckBox getJCheckBox1() {\r
         if (jCheckBox1 == null) {\r
             jCheckBox1 = new JCheckBox();\r
-            jCheckBox1.setBounds(new java.awt.Rectangle(197,213,49,20));\r
+            jCheckBox1.setBounds(new java.awt.Rectangle(182,213,49,20));\r
             jCheckBox1.setText("X64");\r
             jCheckBox1.setPreferredSize(new java.awt.Dimension(21,20));\r
         }\r
@@ -806,7 +833,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
             jCheckBox2 = new JCheckBox();\r
             jCheckBox2.setText("IPF");\r
             jCheckBox2.setSize(new java.awt.Dimension(50,20));\r
-            jCheckBox2.setLocation(new java.awt.Point(258,213));\r
+            jCheckBox2.setLocation(new java.awt.Point(237,213));\r
             jCheckBox2.setPreferredSize(new java.awt.Dimension(21,20));\r
         }\r
         return jCheckBox2;\r
@@ -820,7 +847,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
     private JCheckBox getJCheckBox3() {\r
         if (jCheckBox3 == null) {\r
             jCheckBox3 = new JCheckBox();\r
-            jCheckBox3.setBounds(new java.awt.Rectangle(319,213,59,20));\r
+            jCheckBox3.setBounds(new java.awt.Rectangle(286,213,50,20));\r
             jCheckBox3.setText("EBC");\r
             jCheckBox3.setPreferredSize(new java.awt.Dimension(21,20));\r
         }\r
@@ -830,7 +857,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
     private JScrollPane getJScrollPaneArch() {\r
         if (jScrollPaneArch == null) {\r
             jScrollPaneArch = new JScrollPane();\r
-            jScrollPaneArch.setBounds(new java.awt.Rectangle(130,252,230,45));\r
+            jScrollPaneArch.setBounds(new java.awt.Rectangle(130,252,230,88));\r
             jScrollPaneArch.setPreferredSize(new java.awt.Dimension(320, 80));\r
             jScrollPaneArch.setViewportView(getICheckBoxListSupportedArchitectures());\r
         }\r
@@ -858,7 +885,7 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
         return iCheckBoxListArch;\r
     }\r
     \r
-    private String booleanToString(boolean b1, boolean b2, boolean b3, boolean b4){\r
+    private String booleanToString(boolean b1, boolean b2, boolean b3, boolean b4, boolean b5, boolean b6){\r
         String s = " ";\r
         if (b1){\r
             s += "IA32 ";\r
@@ -872,6 +899,12 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
         if (b4){\r
             s += "EBC ";\r
         }\r
+        if (b5){\r
+            s += "ARM ";\r
+        }\r
+        if (b6){\r
+            s += "PPC ";\r
+        }\r
         return s.trim();\r
     }\r
     \r
@@ -883,6 +916,36 @@ public class SpdLibClassDecls extends IInternalFrame implements TableModelListen
         }\r
         return s.trim();\r
     }\r
+    /**\r
+     * This method initializes jCheckBox4      \r
+     *         \r
+     * @return javax.swing.JCheckBox   \r
+     */\r
+    private JCheckBox getJCheckBox4() {\r
+        if (jCheckBox4 == null) {\r
+            jCheckBox4 = new JCheckBox();\r
+            jCheckBox4.setBounds(new java.awt.Rectangle(343,213,60,20));\r
+            jCheckBox4.setText("ARM");\r
+            jCheckBox4.setPreferredSize(new Dimension(60, 20));\r
+        }\r
+        return jCheckBox4;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jCheckBox5      \r
+     *         \r
+     * @return javax.swing.JCheckBox   \r
+     */\r
+    private JCheckBox getJCheckBox5() {\r
+        if (jCheckBox5 == null) {\r
+            jCheckBox5 = new JCheckBox();\r
+            jCheckBox5.setBounds(new java.awt.Rectangle(400,213,60,20));\r
+            jCheckBox5.setText("PPC");\r
+            jCheckBox5.setPreferredSize(new Dimension(60, 20));\r
+        }\r
+        return jCheckBox5;\r
+    }\r
+\r
     public static void main(String[] args){\r
         new SpdLibClassDecls().setVisible(true);\r
     }\r