]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdPcdDefs.java
Add Data Validations for SPD editor.
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / packaging / ui / SpdPcdDefs.java
index 019ced387937954a62ac22ac4978a2e2374f3229..f85e40b988e3e77041e80db936fa94ed9489c4e7 100644 (file)
@@ -38,12 +38,15 @@ import javax.swing.table.TableModel;
 \r
 import org.tianocore.PackageSurfaceAreaDocument;\r
 \r
+import org.tianocore.frameworkwizard.common.DataValidation;\r
 import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
 import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
 import javax.swing.JScrollPane;\r
 import javax.swing.JTable;\r
 import javax.swing.JCheckBox;\r
 import org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList;\r
+import org.tianocore.frameworkwizard.platform.ui.ListEditor;\r
+\r
 import java.awt.Rectangle;\r
 import java.util.Vector;\r
 \r
@@ -113,10 +116,6 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
 \r
     private JButton jButtonClearAll = null;\r
 \r
-    private JButton jButtonGen = null;\r
-    \r
-    private GenGuidDialog guidDialog = null;\r
-\r
     private JScrollPane jScrollPane = null;\r
 \r
     private JTable jTable = null;\r
@@ -403,7 +402,6 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
             jContentPane.add(getJButtonAdd(), null);\r
             jContentPane.add(getJButtonRemove(), null);\r
             jContentPane.add(getJButtonClearAll(), null);\r
-            jContentPane.add(getJButtonGen(), null);\r
             jContentPane.add(getJScrollPane(), null);\r
             jContentPane.add(starLabel, null);\r
             jContentPane.add(getJCheckBox(), null);\r
@@ -440,7 +438,6 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
             if (arg0.getSource() == jButtonOk) {\r
                 this.save();\r
                 this.dispose();\r
-\r
             }\r
             if (arg0.getSource() == jButtonCancel) {\r
                 this.dispose();\r
@@ -448,10 +445,10 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
 \r
             if (arg0.getSource() == jButtonAdd) {\r
                 //ToDo: check before add\r
-                if (!checkValid()) {\r
+                boolean[] b = {jCheckBox.isSelected(), jCheckBox1.isSelected(), jCheckBox2.isSelected(), jCheckBox3.isSelected(), jCheckBox4.isSelected()};\r
+                if (!checkValidUsage(b)) {\r
                     return;\r
                 }\r
-                \r
                 String archList = vectorToString(iCheckBoxList.getAllCheckedItemsString());\r
                 if (archList.length() == 0) {\r
                     archList = null;\r
@@ -466,7 +463,9 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
                                 jCheckBox.isSelected(), jCheckBox1.isSelected(),\r
                                 jCheckBox2.isSelected(), jCheckBox3.isSelected(), jCheckBox4.isSelected(),\r
                                 archList, modTypeList};\r
-               \r
+                if (!dataValidation(row)) {\r
+                    return;\r
+                }\r
                 model.addRow(row);\r
                 \r
                 String usage = getValidUsage(jCheckBox.isSelected(), jCheckBox1.isSelected(), jCheckBox2.isSelected(), jCheckBox3.isSelected(), jCheckBox4.isSelected());\r
@@ -497,16 +496,6 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
                 sfc.removeSpdPcdDefinition();\r
             }\r
             \r
-            if (arg0.getSource() == jButtonGen) {\r
-                guidDialog = new GenGuidDialog(this);\r
-                guidDialog.setGuid(jTextFieldTsGuid.getText());\r
-                guidDialog.setVisible(true);\r
-            }\r
-            \r
-            if (arg0.getActionCommand().equals("GenGuidValue")) {\r
-                jTextFieldTsGuid.setText(guidDialog.getGuid());\r
-            }\r
-\r
     }\r
 \r
     protected void save() {\r
@@ -521,8 +510,9 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
     private JTextField getJTextFieldTsGuid() {\r
         if (jTextFieldTsGuid == null) {\r
             jTextFieldTsGuid = new JTextField();\r
-            jTextFieldTsGuid.setBounds(new java.awt.Rectangle(156,58,249,20));\r
-            jTextFieldTsGuid.setPreferredSize(new java.awt.Dimension(250,20));\r
+            jTextFieldTsGuid.setPreferredSize(new java.awt.Dimension(315,20));\r
+            jTextFieldTsGuid.setSize(new java.awt.Dimension(317,20));\r
+            jTextFieldTsGuid.setLocation(new java.awt.Point(156,58));\r
         }\r
         return jTextFieldTsGuid;\r
     }\r
@@ -604,22 +594,6 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
         return jButtonClearAll;\r
     }\r
 \r
-    /**\r
-     * This method initializes jButtonGen      \r
-     *         \r
-     * @return javax.swing.JButton     \r
-     */\r
-    private JButton getJButtonGen() {\r
-        if (jButtonGen == null) {\r
-            jButtonGen = new JButton();\r
-            jButtonGen.setBounds(new java.awt.Rectangle(414,57,58,20));\r
-            jButtonGen.setPreferredSize(new java.awt.Dimension(56,20));\r
-            jButtonGen.setText("Gen");\r
-            jButtonGen.addActionListener(this);\r
-        }\r
-        return jButtonGen;\r
-    }\r
-    \r
     public void componentResized(ComponentEvent arg0) {\r
         int intPreferredWidth = 500;\r
         \r
@@ -630,12 +604,10 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
         resizeComponentWidth(this.jTextField, this.getWidth(), intPreferredWidth);\r
         resizeComponentWidth(this.jScrollPane, this.getWidth(), intPreferredWidth);\r
         \r
-        resizeComponentWidth(this.jTextField, this.getWidth(), intPreferredWidth);\r
         resizeComponentWidth(this.jTextFieldDefaultValue, this.getWidth(), intPreferredWidth);\r
 //        relocateComponentX(this.jButtonClearAll, this.getWidth(), DataType.SPACE_TO_RIGHT_FOR_GENERATE_BUTTON);\r
 //        relocateComponentX(this.jButtonRemove, this.getWidth(), DataType.SPACE_TO_RIGHT_FOR_GENERATE_BUTTON);\r
 //        relocateComponentX(this.jButtonAdd, this.getWidth(), DataType.SPACE_TO_RIGHT_FOR_GENERATE_BUTTON);\r
-        relocateComponentX(this.jButtonGen, this.getWidth(), this.getPreferredSize().width, 30);\r
     }\r
 \r
     /**\r
@@ -661,6 +633,7 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
         if (jTable == null) {\r
             model = new CheckboxTableModel();\r
             jTable = new JTable(model);\r
+            jTable.setRowHeight(20);\r
             jTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);\r
             jTable.setSize(new Dimension(1000, 300));\r
             \r
@@ -678,7 +651,6 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
             model.addColumn("DynamicEx");\r
             model.addColumn("SupportedArch");\r
             model.addColumn("SupportedModule");\r
-            jTable.getColumnModel().getColumn(2).setCellEditor(new GuidEditor());\r
             \r
             //ToDo: add a valid usage editor\r
             \r
@@ -692,6 +664,30 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
             TableColumn dataTypeColumn = jTable.getColumnModel().getColumn(3);\r
             dataTypeColumn.setCellEditor(new DefaultCellEditor(jComboBoxDataType));\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(11).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(12).setCellEditor(new ListEditor(vModule));\r
+            \r
             jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
             jTable.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
                 public void valueChanged(ListSelectionEvent e) {\r
@@ -728,6 +724,14 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
             String usage = getValidUsage(new Boolean(m.getValueAt(row, 6)+""), new Boolean(m.getValueAt(row, 7)+""), new Boolean(m.getValueAt(row, 8)+""), new Boolean(m.getValueAt(row, 9)+""), new Boolean(m.getValueAt(row, 10)+""));\r
             String archList = vectorToString(iCheckBoxList.getAllCheckedItemsString());\r
             String modTypeList = vectorToString(iCheckBoxList1.getAllCheckedItemsString());\r
+            if (usage.length() == 0) {\r
+                JOptionPane.showMessageDialog(frame, "You must choose at least one usage for PCD entry.");\r
+                return;\r
+            }\r
+            Object[] o = {cName, token, ts, dataType, defaultVal, help};\r
+            if (!dataValidation(o)){\r
+                return;\r
+            }\r
             sfc.updateSpdPcdDefinition(row, cName, token, dataType, usage, ts, defaultVal, help, archList, modTypeList);\r
         }\r
     }\r
@@ -828,13 +832,34 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
         return usage.trim();\r
     }\r
     \r
-    private boolean checkValid() {\r
-        if (!(jCheckBox.isSelected() || jCheckBox1.isSelected() || jCheckBox2.isSelected() || jCheckBox3.isSelected() || jCheckBox4.isSelected())){\r
+    private boolean checkValidUsage(boolean[] b) {\r
+        if (!(b[0] || b[1] || b[2] || b[3] || b[4])){\r
             JOptionPane.showMessageDialog(frame, "You must specify at least one usage.");\r
             return false;\r
         }\r
         return true;\r
     }\r
+    private boolean dataValidation(Object[] row) {\r
+        \r
+        if (!DataValidation.isC_NameType(row[0].toString())) {\r
+            JOptionPane.showMessageDialog(frame, "C_Name is NOT C_NameType.");\r
+            return false;\r
+        }\r
+        if (!(DataValidation.isHexDoubleWordDataType(row[1].toString()) || \r
+                        DataValidation.isInt(row[1].toString(), 0, 0xffffffff))) {\r
+            JOptionPane.showMessageDialog(frame, "Token is NOT correct.");\r
+            return false;\r
+        }\r
+        if (!DataValidation.isC_NameType(row[2].toString())) {\r
+            JOptionPane.showMessageDialog(frame, "Token Space is NOT C_NameType");\r
+            return false;\r
+        }\r
+        if (row[5].toString().length() == 0) {\r
+            JOptionPane.showMessageDialog(frame, "HelpText could NOT be empty.");\r
+            return false;\r
+        }\r
+        return true;\r
+    }\r
 \r
     /**\r
      * This method initializes jScrollPane1    \r
@@ -865,6 +890,8 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
             v.add("X64");\r
             v.add("IPF");\r
             v.add("EBC");\r
+            v.add("ARM");\r
+            v.add("PPC");\r
             iCheckBoxList.setAllItems(v);\r
         }\r
         return iCheckBoxList;\r