]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdPcdDefs.java
Make opening dialogs re-gain focus when user switch back to main UI from other window...
[mirror_edk2.git] / Tools / Java / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / packaging / ui / SpdPcdDefs.java
index 289dd148a5389136fb154315a6d219626625b140..38868430725f707837de8c56ad32ef820dfc5d57 100644 (file)
@@ -13,6 +13,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 package org.tianocore.frameworkwizard.packaging.ui;\r
 \r
 import java.awt.Dimension;\r
+import java.awt.FontMetrics;\r
 import java.awt.event.ActionEvent;\r
 import java.awt.event.ComponentEvent;\r
 \r
@@ -48,6 +49,7 @@ import javax.swing.JTable;
 import javax.swing.JCheckBox;\r
 import org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList;\r
 import org.tianocore.frameworkwizard.platform.ui.ListEditor;\r
+import org.tianocore.frameworkwizard.platform.ui.LongTextEditor;\r
 \r
 import java.awt.Rectangle;\r
 import java.util.Vector;\r
@@ -64,7 +66,7 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
      */\r
     private static final long serialVersionUID = 1L;\r
 \r
-    static JFrame frame;\r
+    private JFrame topFrame;\r
     \r
     private JPanel jContentPane = null;  \r
 \r
@@ -151,6 +153,19 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
     private JLabel jLabelSupMod = null;\r
 \r
     private JLabel jLabelSupArch = null;\r
+    \r
+    private final int pcdCNameMinWidth = 200;\r
+    private final int pcdTokenMinWidth = 100;\r
+    private final int pcdTokenSpaceMinWidth = 200;\r
+    private final int datumTypeMinWidth = 80;\r
+    private final int defaultValueMinWidth = 100;\r
+    private final int helpTextMinWidth = 200;\r
+    private final int usageMinWidth = 60;\r
+    private final int supArchMinWidth = 200;\r
+    private final int supModMinWidth = 200;\r
+    \r
+//    private Object boolModifyLock = new Object();\r
+//    private boolean exclusiveUsage = false;\r
 \r
     /**\r
      This method initializes this\r
@@ -160,6 +175,15 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
         this.setTitle("PCD Declarations");\r
         this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);\r
 \r
+        int xPos = jCheckBoxPatchInMod.getX() + jCheckBoxPatchInMod.getWidth();\r
+        jCheckBoxFixedAtBuild.setLocation(xPos,133);\r
+        \r
+        xPos = jCheckBoxFeatureFlag.getX() + jCheckBoxFeatureFlag.getWidth();\r
+        jCheckBoxDyn.setLocation(xPos,161);\r
+        \r
+        xPos = jCheckBoxDyn.getX() + jCheckBoxDyn.getWidth();\r
+        jCheckBoxDynEx.setLocation(xPos,161);\r
+        \r
     }\r
 \r
     /**\r
@@ -238,21 +262,21 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
     /**\r
      This is the default constructor\r
      **/\r
-    public SpdPcdDefs() {\r
+    public SpdPcdDefs(JFrame frame) {\r
         super();\r
         init();\r
         initialize();\r
-        \r
+        topFrame = frame;\r
     }\r
 \r
-    public SpdPcdDefs(PackageSurfaceAreaDocument.PackageSurfaceArea inPsa) {\r
-        this();\r
+    public SpdPcdDefs(PackageSurfaceAreaDocument.PackageSurfaceArea inPsa, JFrame frame) {\r
+        this(frame);\r
         sfc = new SpdFileContents(inPsa);\r
         init(sfc);\r
     }\r
     \r
-    public SpdPcdDefs(OpeningPackageType opt) {\r
-        this(opt.getXmlSpd());\r
+    public SpdPcdDefs(OpeningPackageType opt, JFrame frame) {\r
+        this(opt.getXmlSpd(), frame);\r
         docConsole = opt;\r
     }\r
     /**\r
@@ -275,7 +299,12 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
     }\r
 \r
     private void init(SpdFileContents sfc){\r
-        initFrame(sfc);\r
+        \r
+        if (sfc.getSpdPkgDefsRdOnly().equals("true")) {\r
+            JOptionPane.showMessageDialog(topFrame, "This is a read-only package. You will not be able to edit contents in table.");\r
+        }\r
+        initFrame();\r
+        \r
         if (sfc.getSpdPcdDefinitionCount() == 0) {\r
             return ;\r
         }\r
@@ -325,8 +354,6 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
             i++;\r
         }\r
         \r
-        \r
-        \r
     }\r
     \r
     private JScrollPane getJContentPane(){\r
@@ -344,17 +371,23 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
             jLabelSupArch.setBounds(new java.awt.Rectangle(241,192,89,16));\r
             jLabelSupArch.setText("Supported Architectures");\r
             jLabelSupArch.setEnabled(true);\r
+            FontMetrics fm = jLabelSupArch.getFontMetrics(jLabelSupArch.getFont());\r
+            jLabelSupArch.setSize(fm.stringWidth(jLabelSupArch.getText()) + 10, 20);\r
             jLabelSupMod = new JLabel();\r
             jLabelSupMod.setBounds(new java.awt.Rectangle(15,193,103,16));\r
-            jLabelSupMod.setText("Supported Module type");\r
+            jLabelSupMod.setText("Supported Module types");\r
             jLabelSupMod.setEnabled(true);\r
+            fm = jLabelSupMod.getFontMetrics(jLabelSupMod.getFont());\r
+            jLabelSupMod.setSize(fm.stringWidth(jLabelSupMod.getText()) + 10, 20);\r
             starLabel = new StarLabel();\r
             starLabel.setBounds(new java.awt.Rectangle(2,134,10,20));\r
             jLabelDefVal = new JLabel();\r
             jLabelDefVal.setBounds(new java.awt.Rectangle(277,84,80,20));\r
             jLabelDefVal.setText("Default Value");\r
+            fm = jLabelDefVal.getFontMetrics(jLabelDefVal.getFont());\r
+            jLabelDefVal.setSize(fm.stringWidth(jLabelDefVal.getText()) + 10, 20);\r
             jLabelVarVal = new JLabel();\r
-            jLabelVarVal.setBounds(new java.awt.Rectangle(11,133,84,20));\r
+            jLabelVarVal.setBounds(new java.awt.Rectangle(11,133,100,20));\r
             jLabelVarVal.setText("Valid Usage");\r
             jLabelC_Name = new JLabel();\r
             jLabelC_Name.setText("C Name");\r
@@ -432,7 +465,7 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
                        jContentPane.add(jLabelTokenSpace, null);\r
     \r
      **/\r
-    private void initFrame(SpdFileContents sfc) {\r
+    private void initFrame() {\r
 \r
         jComboBoxDataType.addItem("UINT8");\r
         jComboBoxDataType.addItem("UINT16");\r
@@ -447,6 +480,16 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
         for (int i = 0; i < vGuidCName.size(); ++i) {\r
             jComboBoxTsGuid.addItem(vGuidCName.get(i));\r
         }\r
+        \r
+        boolean editable = true;\r
+        if (sfc.getSpdPkgDefsRdOnly().equals("true")) {\r
+            editable = false;\r
+        }\r
+        \r
+        jButtonAdd.setEnabled(editable);\r
+        jButtonRemove.setEnabled(editable);\r
+        jButtonClearAll.setEnabled(editable);\r
+        jTable.setEnabled(editable);\r
     }\r
 \r
     public void actionPerformed(ActionEvent arg0) {\r
@@ -481,6 +524,7 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
                                 jCheckBoxFeatureFlag.isSelected(), jCheckBoxFixedAtBuild.isSelected(),\r
                                 jCheckBoxPatchInMod.isSelected(), jCheckBoxDyn.isSelected(), jCheckBoxDynEx.isSelected(),\r
                                 archList, modTypeList};\r
+                try {\r
                 if (!dataValidation(row)) {\r
                     return;\r
                 }\r
@@ -488,6 +532,10 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
                 if (tokenCNameExisted(jTextFieldToken.getText(), jTextFieldC_Name.getText())) {\r
                     return;\r
                 }\r
+                           } catch (Exception e) {\r
+                                   JOptionPane.showMessageDialog(this, "Illegal Token:"+ e.getCause());\r
+                                   return;\r
+                           }\r
                 \r
                 model.addRow(row);\r
                 jTable.changeSelection(model.getRowCount()-1, 0, false, false);\r
@@ -564,7 +612,8 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
     private JTextField getJTextFieldDefaultValue() {\r
         if (jTextFieldDefaultValue == null) {\r
             jTextFieldDefaultValue = new JTextField();\r
-            jTextFieldDefaultValue.setBounds(new java.awt.Rectangle(368,84,105,20));\r
+            int xPos = jLabelDefVal.getX() + jLabelDefVal.getWidth();\r
+            jTextFieldDefaultValue.setBounds(new java.awt.Rectangle(xPos,84,105,20));\r
             jTextFieldDefaultValue.setPreferredSize(new java.awt.Dimension(104,20));\r
         }\r
         return jTextFieldDefaultValue;\r
@@ -677,6 +726,33 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
             model.addColumn("SupportedArch");\r
             model.addColumn("SupportedModule");\r
             \r
+            TableColumn column = jTable.getColumnModel().getColumn(0);\r
+            column.setMinWidth(this.pcdCNameMinWidth);\r
+            column = jTable.getColumnModel().getColumn(1);\r
+            column.setMinWidth(this.pcdTokenMinWidth);\r
+            column = jTable.getColumnModel().getColumn(2);\r
+            column.setMinWidth(this.pcdTokenSpaceMinWidth);\r
+            column = jTable.getColumnModel().getColumn(3);\r
+            column.setMinWidth(this.datumTypeMinWidth);\r
+            column = jTable.getColumnModel().getColumn(4);\r
+            column.setMinWidth(this.defaultValueMinWidth);\r
+            column = jTable.getColumnModel().getColumn(5);\r
+            column.setMinWidth(this.helpTextMinWidth);\r
+            column = jTable.getColumnModel().getColumn(6);\r
+            column.setMinWidth(this.usageMinWidth);\r
+            column = jTable.getColumnModel().getColumn(7);\r
+            column.setMinWidth(this.usageMinWidth);\r
+            column = jTable.getColumnModel().getColumn(8);\r
+            column.setMinWidth(this.usageMinWidth);\r
+            column = jTable.getColumnModel().getColumn(9);\r
+            column.setMinWidth(this.usageMinWidth);\r
+            column = jTable.getColumnModel().getColumn(10);\r
+            column.setMinWidth(this.usageMinWidth);\r
+            column = jTable.getColumnModel().getColumn(11);\r
+            column.setMinWidth(this.supArchMinWidth);\r
+            column = jTable.getColumnModel().getColumn(12);\r
+            column.setMinWidth(this.supModMinWidth);\r
+            \r
             //ToDo: add a valid usage editor\r
             \r
             JComboBox jComboBoxDataType = new JComboBox();\r
@@ -688,6 +764,8 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
             jComboBoxDataType.addItem("BOOLEAN");\r
             TableColumn dataTypeColumn = jTable.getColumnModel().getColumn(3);\r
             dataTypeColumn.setCellEditor(new DefaultCellEditor(jComboBoxDataType));\r
+            \r
+            jTable.getColumnModel().getColumn(5).setCellEditor(new LongTextEditor(topFrame));\r
 \r
             Vector<String> vArch = new Vector<String>();\r
             vArch.add("IA32");\r
@@ -696,7 +774,7 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
             vArch.add("EBC");\r
             vArch.add("ARM");\r
             vArch.add("PPC");\r
-            jTable.getColumnModel().getColumn(11).setCellEditor(new ListEditor(vArch));\r
+            jTable.getColumnModel().getColumn(11).setCellEditor(new ListEditor(vArch, topFrame));\r
             \r
             Vector<String> vModule = new Vector<String>();\r
             vModule.add("BASE");\r
@@ -711,7 +789,7 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
             vModule.add("UEFI_DRIVER");\r
             vModule.add("UEFI_APPLICATION");\r
             vModule.add("USER_DEFINED");\r
-            jTable.getColumnModel().getColumn(12).setCellEditor(new ListEditor(vModule));\r
+            jTable.getColumnModel().getColumn(12).setCellEditor(new ListEditor(vModule, topFrame));\r
             \r
             jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
             jTable.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
@@ -758,13 +836,32 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
             \r
             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
             if (usage.length() == 0) {\r
-                JOptionPane.showMessageDialog(frame, "You must choose at least one usage for PCD entry.");\r
+                JOptionPane.showMessageDialog(this, "You must choose at least one usage for PCD entry.");\r
                 return;\r
             }\r
+\r
             if (column <= 10 && column >= 6) {\r
-                if (compareTwoVectors(stringToVector(usage), stringToVector(sa[6]))) {\r
+                Vector<String> v = stringToVector(usage);\r
+                if (compareTwoVectors(v, stringToVector(sa[6]))) {\r
                     return;\r
                 }\r
+                if (v.contains("FEATURE_FLAG")/* && v.size() > 1 && !exclusiveUsage*/) {\r
+                    if (v.size() > 1) {\r
+                        JOptionPane.showMessageDialog(this, "Usage Feature Flag can NOT co-exist with others.");\r
+                        return;\r
+                    }\r
+//                    synchronized (boolModifyLock){\r
+//                        exclusiveUsage = true;\r
+//                    }\r
+//                    m.setValueAt(false, row, 7);\r
+//                    m.setValueAt(false, row, 8);\r
+//                    m.setValueAt(false, row, 9);\r
+//                    m.setValueAt(false, row, 10);\r
+                    else {\r
+                        m.setValueAt("BOOLEAN", row, 3);\r
+                    }\r
+                    \r
+                }\r
             }\r
             \r
             if (column == 11) {\r
@@ -808,9 +905,15 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
             }\r
             \r
             Object[] o = {cName, token, ts, dataType, defaultVal, help};\r
+            try {\r
             if (!dataValidation(o)){\r
                 return;\r
             }\r
+            }\r
+            catch (Exception e) {\r
+               JOptionPane.showMessageDialog(this, "Illegal Token:" + e.getCause());\r
+               return;\r
+            }\r
             docConsole.setSaved(false);\r
             sfc.updateSpdPcdDefinition(row, cName, token, dataType, usage, ts, defaultVal, help, archList, modTypeList);\r
         }\r
@@ -826,7 +929,8 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
             jCheckBoxFeatureFlag = new JCheckBox();\r
             jCheckBoxFeatureFlag.setBounds(new java.awt.Rectangle(156,161,100,21));\r
             jCheckBoxFeatureFlag.setText("Feature Flag");\r
-            jCheckBoxFeatureFlag.setPreferredSize(new java.awt.Dimension(21,20));\r
+            FontMetrics fm = jCheckBoxFeatureFlag.getFontMetrics(jCheckBoxFeatureFlag.getFont());\r
+            jCheckBoxFeatureFlag.setSize(fm.stringWidth(jCheckBoxFeatureFlag.getText()) + 30, 20);\r
             jCheckBoxFeatureFlag.addItemListener(new java.awt.event.ItemListener() {\r
                 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
                     if (jCheckBoxFeatureFlag.isSelected()) {\r
@@ -834,6 +938,7 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
                         jCheckBoxFixedAtBuild.setSelected(false);\r
                         jCheckBoxDyn.setSelected(false);\r
                         jCheckBoxDynEx.setSelected(false);\r
+                        jComboBoxDataType.setSelectedItem("BOOLEAN");\r
                     }\r
                 }\r
             });\r
@@ -849,9 +954,10 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
     private JCheckBox getJCheckBoxFixedAtBuild() {\r
         if (jCheckBoxFixedAtBuild == null) {\r
             jCheckBoxFixedAtBuild = new JCheckBox();\r
-            jCheckBoxFixedAtBuild.setBounds(new java.awt.Rectangle(312,133,108,20));\r
+            \r
             jCheckBoxFixedAtBuild.setText("Fixed at Build");\r
-            jCheckBoxFixedAtBuild.setPreferredSize(new java.awt.Dimension(21,20));\r
+            FontMetrics fm = jCheckBoxFixedAtBuild.getFontMetrics(jCheckBoxFixedAtBuild.getFont());\r
+            jCheckBoxFixedAtBuild.setSize(fm.stringWidth(jCheckBoxFixedAtBuild.getText()) + 30, 20);\r
             jCheckBoxFixedAtBuild.addItemListener(new java.awt.event.ItemListener() {\r
                 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
                     if (jCheckBoxFixedAtBuild.isSelected()) {\r
@@ -871,9 +977,11 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
     private JCheckBox getJCheckBoxPatchInMod() {\r
         if (jCheckBoxPatchInMod == null) {\r
             jCheckBoxPatchInMod = new JCheckBox();\r
+            \r
             jCheckBoxPatchInMod.setBounds(new java.awt.Rectangle(156,133,154,20));\r
             jCheckBoxPatchInMod.setText("Patchable in Module");\r
-            jCheckBoxPatchInMod.setPreferredSize(new java.awt.Dimension(21,20));\r
+            FontMetrics fm = jCheckBoxPatchInMod.getFontMetrics(jCheckBoxPatchInMod.getFont());\r
+            jCheckBoxPatchInMod.setSize(fm.stringWidth(jCheckBoxPatchInMod.getText()) + 30, 20);\r
             jCheckBoxPatchInMod.addItemListener(new java.awt.event.ItemListener() {\r
                 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
                     if (jCheckBoxPatchInMod.isSelected()) {\r
@@ -893,9 +1001,10 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
     private JCheckBox getJCheckBoxDyn() {\r
         if (jCheckBoxDyn == null) {\r
             jCheckBoxDyn = new JCheckBox();\r
-            jCheckBoxDyn.setBounds(new java.awt.Rectangle(278,161,80,20));\r
+            \r
             jCheckBoxDyn.setText("Dynamic");\r
-            jCheckBoxDyn.setPreferredSize(new java.awt.Dimension(21,20));\r
+            FontMetrics fm = jCheckBoxDyn.getFontMetrics(jCheckBoxDyn.getFont());\r
+            jCheckBoxDyn.setSize(fm.stringWidth(jCheckBoxDyn.getText()) + 30, 20);\r
             jCheckBoxDyn.addItemListener(new java.awt.event.ItemListener() {\r
                 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
                     if (jCheckBoxDyn.isSelected()) {\r
@@ -915,9 +1024,10 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
     private JCheckBox getJCheckBoxDynEx() {\r
         if (jCheckBoxDynEx == null) {\r
             jCheckBoxDynEx = new JCheckBox();\r
-            jCheckBoxDynEx.setBounds(new java.awt.Rectangle(371,161,99,20));\r
+            \r
             jCheckBoxDynEx.setText("DynamicEx");\r
-            jCheckBoxDynEx.setPreferredSize(new java.awt.Dimension(21,20));\r
+            FontMetrics fm = jCheckBoxDynEx.getFontMetrics(jCheckBoxDynEx.getFont());\r
+            jCheckBoxDynEx.setSize(fm.stringWidth(jCheckBoxDynEx.getText()) + 30, 20);\r
             jCheckBoxDynEx.addItemListener(new java.awt.event.ItemListener() {\r
                 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
                     if (jCheckBoxDynEx.isSelected()) {\r
@@ -950,21 +1060,21 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
         return usage.trim();\r
     }\r
     \r
-    private boolean tokenCNameExisted(String token, String cName) {\r
-        Integer inputToken = Integer.decode(token);\r
+    private boolean tokenCNameExisted(String token, String cName) throws Exception{\r
+        Long inputToken = Long.decode(token);\r
         \r
-        for (int i = 0; i < jTable.getRowCount(); ++i) {\r
-            if (jTable.getValueAt(i, 0).equals(cName)) {\r
-                JOptionPane.showMessageDialog(frame, "C_Name already existed in table.");\r
+        for (int i = 0; i < model.getRowCount(); ++i) {\r
+            if (model.getValueAt(i, 0).equals(cName)) {\r
+                JOptionPane.showMessageDialog(this, "C_Name already existed in table.");\r
                 return true;\r
             }\r
-            if (jTable.getValueAt(i, 1).equals(token)) {\r
-                JOptionPane.showMessageDialog(frame, "Token already existed in table.");\r
+            if (model.getValueAt(i, 1).equals(token)) {\r
+                JOptionPane.showMessageDialog(this, "Token already existed in table.");\r
                 return true;\r
             }\r
-            Integer tokenValue = Integer.decode(jTable.getValueAt(i, 1)+"");\r
+            Long tokenValue = Long.decode(model.getValueAt(i, 1)+"");\r
             if (tokenValue.equals(inputToken)) {\r
-                JOptionPane.showMessageDialog(frame, "Same token value already existed in table.");\r
+                JOptionPane.showMessageDialog(this, "Same token value already existed in table.");\r
                 return true;\r
             }\r
             \r
@@ -974,28 +1084,28 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
     \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
+            JOptionPane.showMessageDialog(this, "You must specify at least one usage.");\r
             return false;\r
         }\r
         return true;\r
     }\r
-    private boolean dataValidation(Object[] row) {\r
+    private boolean dataValidation(Object[] row) throws Exception{\r
         \r
         if (!DataValidation.isC_NameType(row[0].toString())) {\r
-            JOptionPane.showMessageDialog(frame, "C_Name is NOT C_NameType.");\r
+            JOptionPane.showMessageDialog(this, "C_Name is NOT C_NameType.");\r
             return false;\r
         }\r
         if (!DataValidation.isHexDoubleWordDataType(row[1].toString()) && \r
-                        !DataValidation.isInt(row[1].toString(), Integer.MIN_VALUE, Integer.MAX_VALUE)) {\r
-            JOptionPane.showMessageDialog(frame, "Token is NOT correct.");\r
+                        !DataValidation.isLongInt(row[1].toString(), 1, Long.MAX_VALUE)) {\r
+            JOptionPane.showMessageDialog(this, "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
+            JOptionPane.showMessageDialog(this, "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
+            JOptionPane.showMessageDialog(this, "HelpText could NOT be empty.");\r
             return false;\r
         }\r
         return true;\r
@@ -1092,11 +1202,12 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
     }\r
     \r
     protected Vector<String> stringToVector(String s){\r
+        Vector<String> v = new Vector<String>();\r
         if (s == null) {\r
-            return null;\r
+            return v;\r
         }\r
         String[] sArray = s.split(" ");\r
-        Vector<String> v = new Vector<String>();\r
+        \r
         for (int i = 0; i < sArray.length; ++i) {\r
             v.add(sArray[i]);\r
         }\r