]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFlash.java
Add Fv option value edit support;
[mirror_edk2.git] / Tools / Java / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / platform / ui / FpdFlash.java
index 75824a4967f1d9e44dc33315600ab00e335e046e..a880ae41f24e4c061de311c12c65ee2c3eabd493 100644 (file)
@@ -83,8 +83,8 @@ public class FpdFlash extends IInternalFrame {
     private JPanel jPanelContentNorth = null;\r
     private JTabbedPane jTabbedPane = null;\r
     private JPanel jPanelFvImages = null;\r
-    private JPanel jPanelFvImageN = null;\r
     private JPanel jPanelFvImageS = null;\r
+    private JPanel jPanelFvImageN = null;\r
     private JCheckBox jCheckBoxFvProperty = null;\r
     private JLabel jLabelFvPropName = null;\r
     private JTextField jTextFieldFvPropName = null;\r
@@ -138,9 +138,9 @@ public class FpdFlash extends IInternalFrame {
     private JPanel jPanelFdfCBottom = null;\r
     private JPanel jPanelFdfCTopN = null;\r
     private JPanel jPanelFdfCTopS = null;\r
-    private JPanel jPanelFdfCTopC = null;\r
+//    private JPanel jPanelFdfCTopC = null;\r
     private JPanel jPanelFdfCBottomN = null;\r
-    private JPanel jPanelFdfCBottomC = null;\r
+//    private JPanel jPanelFdfCBottomC = null;\r
     private JLabel jLabelFvInFdf = null;\r
     private JLabel jLabelFvAdditional = null;\r
     private JScrollPane jScrollPaneFvInFdf = null;\r
@@ -171,10 +171,15 @@ public class FpdFlash extends IInternalFrame {
     private JPanel jPanelW = null;\r
     private JPanel jPanelFvImageParaN = null;\r
     private JPanel jPanelFvImageParaS = null;\r
-    private JPanel jPanelFvImageParaC = null;\r
+//    private JPanel jPanelFvImageParaC = null;\r
     private JPanel jPanelFvImageOptsN = null;\r
     private JPanel jPanelFvImageOptsS = null;\r
-    private JPanel jPanelFvImageOptsC = null;\r
+//    private JPanel jPanelFvImageOptsC = null;\r
+    private JPanel jPanelFvImageParaE = null;\r
+    private JPanel jPanelFvImageOptsE = null;\r
+    private JPanel jPanelFvImageSN = null;\r
+    private JPanel jPanelFvImageSE = null;\r
+    private JPanel jPanelFvImageSS = null;\r
     \r
     public FpdFlash() {\r
         super();\r
@@ -281,8 +286,8 @@ public class FpdFlash extends IInternalFrame {
         if (jPanelFvImages == null) {\r
             jPanelFvImages = new JPanel();\r
             jPanelFvImages.setLayout(new BorderLayout());\r
-            jPanelFvImages.add(getJPanelFvImageS(), java.awt.BorderLayout.NORTH);\r
-            jPanelFvImages.add(getJPanelFvImageN(), java.awt.BorderLayout.SOUTH);\r
+            jPanelFvImages.add(getJPanelFvImageN(), java.awt.BorderLayout.NORTH);\r
+            jPanelFvImages.add(getJPanelFvImageS(), java.awt.BorderLayout.SOUTH);\r
             jPanelFvImages.add(getJPanelFvImageC(), java.awt.BorderLayout.CENTER);\r
             jPanelFvImages.add(getJPanelW(), java.awt.BorderLayout.EAST);\r
             jPanelFvImages.addComponentListener(new java.awt.event.ComponentAdapter() {\r
@@ -303,8 +308,8 @@ public class FpdFlash extends IInternalFrame {
      *         \r
      * @return javax.swing.JPanel      \r
      */\r
-    private JPanel getJPanelFvImageN() {\r
-        if (jPanelFvImageN == null) {\r
+    private JPanel getJPanelFvImageS() {\r
+        if (jPanelFvImageS == null) {\r
             jLabelFvPropValue = new JLabel();\r
             jLabelFvPropValue.setText("Value");\r
             jLabelFvPropValue.setEnabled(false);\r
@@ -313,22 +318,17 @@ public class FpdFlash extends IInternalFrame {
             jLabelFvPropName.setText("Name");\r
             jLabelFvPropName.setEnabled(false);\r
             jLabelFvPropName.setPreferredSize(new java.awt.Dimension(38,20));\r
-            FlowLayout flowLayout2 = new FlowLayout();\r
-            flowLayout2.setAlignment(java.awt.FlowLayout.LEFT);\r
-            flowLayout2.setHgap(5);\r
-            jPanelFvImageN = new JPanel();\r
-            jPanelFvImageN.setPreferredSize(new java.awt.Dimension(576,130));\r
-            jPanelFvImageN.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));\r
-            jPanelFvImageN.setLayout(flowLayout2);\r
-            jPanelFvImageN.add(getJCheckBoxFvProperty(), null);\r
-            jPanelFvImageN.add(jLabelFvPropName, null);\r
-            jPanelFvImageN.add(getJTextFieldFvPropName(), null);\r
-            jPanelFvImageN.add(jLabelFvPropValue, null);\r
-            jPanelFvImageN.add(getJTextFieldFvPropValue(), null);\r
-            jPanelFvImageN.add(getJScrollPaneFvProp(), null);\r
-            jPanelFvImageN.add(getJPanelFvPropButtonGroup(), null);\r
+            jPanelFvImageS = new JPanel();\r
+            jPanelFvImageS.setPreferredSize(new java.awt.Dimension(576,130));\r
+            jPanelFvImageS.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));\r
+            jPanelFvImageS.setLayout(new BorderLayout());\r
+            jPanelFvImageS.add(getJPanelFvImageSN(), java.awt.BorderLayout.NORTH);\r
+            jPanelFvImageS.add(getJPanelFvImageSE(), java.awt.BorderLayout.EAST);\r
+            jPanelFvImageS.add(getJPanelFvImageSS(), java.awt.BorderLayout.SOUTH);\r
+            jPanelFvImageS.add(getJScrollPaneFvProp(), java.awt.BorderLayout.CENTER);\r
+\r
         }\r
-        return jPanelFvImageN;\r
+        return jPanelFvImageS;\r
     }\r
 \r
     /**\r
@@ -336,16 +336,16 @@ public class FpdFlash extends IInternalFrame {
      *         \r
      * @return javax.swing.JPanel      \r
      */\r
-    private JPanel getJPanelFvImageS() {\r
-        if (jPanelFvImageS == null) {\r
+    private JPanel getJPanelFvImageN() {\r
+        if (jPanelFvImageN == null) {\r
             GridLayout gridLayout2 = new GridLayout();\r
             gridLayout2.setRows(1);\r
-            jPanelFvImageS = new JPanel();\r
-            jPanelFvImageS.setPreferredSize(new java.awt.Dimension(480,150));\r
-            jPanelFvImageS.setLayout(gridLayout2);\r
-            jPanelFvImageS.add(getJScrollPaneFvInfo(), null);\r
+            jPanelFvImageN = new JPanel();\r
+            jPanelFvImageN.setPreferredSize(new java.awt.Dimension(480,150));\r
+            jPanelFvImageN.setLayout(gridLayout2);\r
+            jPanelFvImageN.add(getJScrollPaneFvInfo(), null);\r
         }\r
-        return jPanelFvImageS;\r
+        return jPanelFvImageN;\r
     }\r
 \r
 \r
@@ -815,8 +815,9 @@ public class FpdFlash extends IInternalFrame {
 \r
                        jPanelFvImageOpts.add(getJPanelFvImageOptsN(), java.awt.BorderLayout.NORTH);\r
                        jPanelFvImageOpts.add(getJPanelFvImageOptsS(), java.awt.BorderLayout.SOUTH);\r
-                       jPanelFvImageOpts.add(getJPanelFvImageOptsC(), java.awt.BorderLayout.CENTER);\r
+                       jPanelFvImageOpts.add(getJScrollPane(), java.awt.BorderLayout.CENTER);\r
 \r
+                       jPanelFvImageOpts.add(getJPanelFvImageOptsE(), java.awt.BorderLayout.EAST);\r
         }\r
         return jPanelFvImageOpts;\r
     }\r
@@ -995,8 +996,9 @@ public class FpdFlash extends IInternalFrame {
 \r
             jPanelFvImagePara.add(getJPanelFvImageParaN(), java.awt.BorderLayout.NORTH);\r
             jPanelFvImagePara.add(getJPanelFvImageParaS(), java.awt.BorderLayout.SOUTH);\r
-            jPanelFvImagePara.add(getJPanelFvImageParaC(), java.awt.BorderLayout.CENTER);\r
+            jPanelFvImagePara.add(getJScrollPaneFvImageNames(), java.awt.BorderLayout.CENTER);\r
 \r
+            jPanelFvImagePara.add(getJPanelFvImageParaE(), java.awt.BorderLayout.EAST);\r
 //            \r
 //            \r
 //            \r
@@ -1053,9 +1055,16 @@ public class FpdFlash extends IInternalFrame {
                         jButtonFdfBrowse.setEnabled(true);\r
                     }\r
                     else {\r
-                        \r
+                        getFvInFdfTableModel().setRowCount(0);\r
                         jTextFieldFdf.setEnabled(false);\r
+                        jTextFieldFdf.setText("");\r
                         jButtonFdfBrowse.setEnabled(false);\r
+                        ffc.genFlashDefinitionFile("");\r
+                        docConsole.setSaved(false);\r
+                        int selectedBackup = selectedRowInFvAdditionalTable;\r
+                        selectedRowInFvAdditionalTable = -1;\r
+                        initFvAdditionalTable();\r
+                        selectedRowInFvAdditionalTable = selectedBackup;\r
                     }\r
                 }\r
             });\r
@@ -1192,9 +1201,16 @@ public class FpdFlash extends IInternalFrame {
         determinedFvBlockSize = blkSize;\r
         \r
         getFvInFdfTableModel().setRowCount(0);\r
+        Vector<String> vExistingFvNameInFpd = new Vector<String>();\r
+        ffc.getFvImagesFvImageFvImageNames(vExistingFvNameInFpd);\r
         for (int j = 0; j < vFvInfo.size(); ++j) {\r
             FvInfoFromFdf fvInfo = vFvInfo.get(j);\r
             String[] row = {fvInfo.getFvName(), fvInfo.getSize(), fvInfo.getEfiFileName()};\r
+            \r
+            if (row[0].length() > 0 && !vExistingFvNameInFpd.contains(row[0])) {\r
+                ffc.addFvImageFvImageNames(new String[]{row[0]});\r
+            }\r
+            \r
             // if FV addtional table contains the same FV from fdf file, remove that row.\r
             for (int k = 0; k < jTableFvAdditional.getRowCount(); ++k) {\r
                 if (fvAdditionalTableModel.getValueAt(k, 0).equals(row[0])) {\r
@@ -1219,15 +1235,15 @@ public class FpdFlash extends IInternalFrame {
                 else {\r
                     ffc.getFvImagesFvImageOptions(row[0], mOptions);\r
                     if (mOptions.get("EFI_BLOCK_SIZE") == null || !mOptions.get("EFI_BLOCK_SIZE").equalsIgnoreCase(blkSize)) {\r
-                        ffc.setTypedNamedFvImageNameValue(row[0], "Options", "EFI_BLOCK_SIZE", blkSize);\r
+                        ffc.setTypedNamedFvImageNameValue(row[0], "Options", "EFI_BLOCK_SIZE", blkSize, null);\r
                         memModified = true;\r
                     }\r
                     if (mOptions.get("EFI_NUM_BLOCKS") == null || Integer.decode(mOptions.get("EFI_NUM_BLOCKS")) != numBlocks) {\r
-                        ffc.setTypedNamedFvImageNameValue(row[0], "Options", "EFI_NUM_BLOCKS", numBlocks + "");\r
+                        ffc.setTypedNamedFvImageNameValue(row[0], "Options", "EFI_NUM_BLOCKS", numBlocks + "", null);\r
                         memModified = true;\r
                     }\r
                     if (mOptions.get("EFI_FILE_NAME") == null || !mOptions.get("EFI_FILE_NAME").equals(row[2])) {\r
-                        ffc.setTypedNamedFvImageNameValue(row[0], "Options", "EFI_FILE_NAME", row[2]);\r
+                        ffc.setTypedNamedFvImageNameValue(row[0], "Options", "EFI_FILE_NAME", row[2], null);\r
                         memModified = true;\r
                     }\r
                     \r
@@ -1517,7 +1533,7 @@ public class FpdFlash extends IInternalFrame {
             jPanelFdfCTop.setLayout(new BorderLayout());\r
             jPanelFdfCTop.add(getJPanelFdfCTopN(), java.awt.BorderLayout.NORTH);\r
             jPanelFdfCTop.add(getJPanelFdfCTopS(), java.awt.BorderLayout.SOUTH);\r
-            jPanelFdfCTop.add(getJPanelFdfCTopC(), java.awt.BorderLayout.CENTER);\r
+            jPanelFdfCTop.add(getJScrollPaneFvInFdf(), java.awt.BorderLayout.CENTER);\r
         }\r
         return jPanelFdfCTop;\r
     }\r
@@ -1532,7 +1548,7 @@ public class FpdFlash extends IInternalFrame {
             jPanelFdfCBottom = new JPanel();\r
             jPanelFdfCBottom.setLayout(new BorderLayout());\r
             jPanelFdfCBottom.add(getJPanelFdfCBottomN(), java.awt.BorderLayout.NORTH);\r
-            jPanelFdfCBottom.add(getJPanelFdfCBottomC(), java.awt.BorderLayout.CENTER);\r
+            jPanelFdfCBottom.add(getJScrollPaneFvAdditional(), java.awt.BorderLayout.CENTER);\r
         }\r
         return jPanelFdfCBottom;\r
     }\r
@@ -1573,13 +1589,13 @@ public class FpdFlash extends IInternalFrame {
      *         \r
      * @return javax.swing.JPanel      \r
      */\r
-    private JPanel getJPanelFdfCTopC() {\r
-        if (jPanelFdfCTopC == null) {\r
-            jPanelFdfCTopC = new JPanel();\r
-            jPanelFdfCTopC.add(getJScrollPaneFvInFdf(), null);\r
-        }\r
-        return jPanelFdfCTopC;\r
-    }\r
+//    private JPanel getJPanelFdfCTopC() {\r
+//        if (jPanelFdfCTopC == null) {\r
+//            jPanelFdfCTopC = new JPanel();\r
+//            jPanelFdfCTopC.add(getJScrollPaneFvInFdf(), null);\r
+//        }\r
+//        return jPanelFdfCTopC;\r
+//    }\r
 \r
     /**\r
      * This method initializes jPanelFdfCBottomN       \r
@@ -1601,13 +1617,13 @@ public class FpdFlash extends IInternalFrame {
      *         \r
      * @return javax.swing.JPanel      \r
      */\r
-    private JPanel getJPanelFdfCBottomC() {\r
-        if (jPanelFdfCBottomC == null) {\r
-            jPanelFdfCBottomC = new JPanel();\r
-            jPanelFdfCBottomC.add(getJScrollPaneFvAdditional(), null);\r
-        }\r
-        return jPanelFdfCBottomC;\r
-    }\r
+//    private JPanel getJPanelFdfCBottomC() {\r
+//        if (jPanelFdfCBottomC == null) {\r
+//            jPanelFdfCBottomC = new JPanel();\r
+//            jPanelFdfCBottomC.add(getJScrollPaneFvAdditional(), null);\r
+//        }\r
+//        return jPanelFdfCBottomC;\r
+//    }\r
 \r
     /**\r
      * This method initializes jScrollPaneFvInFdf      \r
@@ -1808,20 +1824,20 @@ public class FpdFlash extends IInternalFrame {
                                 else {\r
                                     blkSize = defaultBlkSize;\r
                                 }\r
-                                ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_BLOCK_SIZE", blkSize);\r
+                                ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_BLOCK_SIZE", blkSize, null);\r
                                 int fs = Integer.decode(fvSize);\r
                                 int bs = Integer.decode(blkSize);\r
-                                ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_NUM_BLOCKS", (fs/bs)+"");\r
+                                ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_NUM_BLOCKS", (fs/bs)+"", null);\r
                                 docConsole.setSaved(false);\r
                             }\r
                             else {\r
                                 if (!DataValidation.isInt(blkSize) && !DataValidation.isHexDoubleWordDataType(blkSize)) {\r
                                     int retVal = JOptionPane.showConfirmDialog(frame, "Confirm", "FPD file contains error block size format. Would you like to replace it with a default value?", JOptionPane.YES_NO_OPTION);\r
                                     if (retVal == JOptionPane.YES_OPTION) {\r
-                                        ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_BLOCK_SIZE", defaultBlkSize);\r
+                                        ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_BLOCK_SIZE", defaultBlkSize, null);\r
                                         int fs = Integer.decode(fvSize);\r
                                         int bs = Integer.decode(defaultBlkSize);\r
-                                        ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_NUM_BLOCKS", (fs/bs)+"");\r
+                                        ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_NUM_BLOCKS", (fs/bs)+"", null);\r
                                         docConsole.setSaved(false);\r
                                         return;\r
                                     }\r
@@ -1832,13 +1848,13 @@ public class FpdFlash extends IInternalFrame {
                                 }\r
                                 int fs = Integer.decode(fvSize);\r
                                 int bs = Integer.decode(blkSize);\r
-                                ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_NUM_BLOCKS", (fs/bs)+"");\r
+                                ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_NUM_BLOCKS", (fs/bs)+"", null);\r
                                 docConsole.setSaved(false);\r
                             }\r
                         }\r
                         \r
                         if (col == 2 && !fileFromOptionDlg) {\r
-                            ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_FILE_NAME", m.getValueAt(row, col)+"");\r
+                            ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_FILE_NAME", m.getValueAt(row, col)+"", null);\r
                             docConsole.setSaved(false);\r
                         }\r
                         \r
@@ -2107,14 +2123,13 @@ public class FpdFlash extends IInternalFrame {
      *         \r
      * @return javax.swing.JPanel      \r
      */\r
-    private JPanel getJPanelFvImageParaC() {\r
-        if (jPanelFvImageParaC == null) {\r
-            jPanelFvImageParaC = new JPanel();\r
-            jPanelFvImageParaC.add(getJScrollPaneFvImageNames(), null);\r
-            jPanelFvImageParaC.add(getJPanelBgFvName(), null);\r
-        }\r
-        return jPanelFvImageParaC;\r
-    }\r
+//    private JPanel getJPanelFvImageParaC() {\r
+//        if (jPanelFvImageParaC == null) {\r
+//            jPanelFvImageParaC = new JPanel();\r
+//            jPanelFvImageParaC.add(getJScrollPaneFvImageNames(), null);\r
+//        }\r
+//        return jPanelFvImageParaC;\r
+//    }\r
 \r
     /**\r
      * This method initializes jPanelFvImageOptsN      \r
@@ -2150,13 +2165,80 @@ public class FpdFlash extends IInternalFrame {
      *         \r
      * @return javax.swing.JPanel      \r
      */\r
-    private JPanel getJPanelFvImageOptsC() {\r
-        if (jPanelFvImageOptsC == null) {\r
-            jPanelFvImageOptsC = new JPanel();\r
-            jPanelFvImageOptsC.add(getJScrollPane(), null);\r
-            jPanelFvImageOptsC.add(getJPanelFvImageOptsButtonGroup(), null);\r
+//    private JPanel getJPanelFvImageOptsC() {\r
+//        if (jPanelFvImageOptsC == null) {\r
+//            jPanelFvImageOptsC = new JPanel();\r
+//            jPanelFvImageOptsC.add(getJScrollPane(), null);\r
+//        }\r
+//        return jPanelFvImageOptsC;\r
+//    }\r
+\r
+    /**\r
+     * This method initializes jPanelFvImageParaE      \r
+     *         \r
+     * @return javax.swing.JPanel      \r
+     */\r
+    private JPanel getJPanelFvImageParaE() {\r
+        if (jPanelFvImageParaE == null) {\r
+            jPanelFvImageParaE = new JPanel();\r
+            jPanelFvImageParaE.add(getJPanelBgFvName(), null);\r
+        }\r
+        return jPanelFvImageParaE;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jPanelFvImageOptsE      \r
+     *         \r
+     * @return javax.swing.JPanel      \r
+     */\r
+    private JPanel getJPanelFvImageOptsE() {\r
+        if (jPanelFvImageOptsE == null) {\r
+            jPanelFvImageOptsE = new JPanel();\r
+            jPanelFvImageOptsE.add(getJPanelFvImageOptsButtonGroup(), null);\r
+        }\r
+        return jPanelFvImageOptsE;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jPanelFvImageSN \r
+     *         \r
+     * @return javax.swing.JPanel      \r
+     */\r
+    private JPanel getJPanelFvImageSN() {\r
+        if (jPanelFvImageSN == null) {\r
+            jPanelFvImageSN = new JPanel();\r
+            jPanelFvImageSN.add(getJCheckBoxFvProperty(), null);\r
+            jPanelFvImageSN.add(jLabelFvPropName, null);\r
+            jPanelFvImageSN.add(getJTextFieldFvPropName(), null);\r
+            jPanelFvImageSN.add(jLabelFvPropValue, null);\r
+            jPanelFvImageSN.add(getJTextFieldFvPropValue(), null);\r
         }\r
-        return jPanelFvImageOptsC;\r
+        return jPanelFvImageSN;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jPanelFvImageSE \r
+     *         \r
+     * @return javax.swing.JPanel      \r
+     */\r
+    private JPanel getJPanelFvImageSE() {\r
+        if (jPanelFvImageSE == null) {\r
+            jPanelFvImageSE = new JPanel();\r
+            jPanelFvImageSE.add(getJPanelFvPropButtonGroup(), null);\r
+        }\r
+        return jPanelFvImageSE;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jPanelFvImageSS \r
+     *         \r
+     * @return javax.swing.JPanel      \r
+     */\r
+    private JPanel getJPanelFvImageSS() {\r
+        if (jPanelFvImageSS == null) {\r
+            jPanelFvImageSS = new JPanel();\r
+        }\r
+        return jPanelFvImageSS;\r
     }\r
 \r
     /**\r
@@ -2201,6 +2283,7 @@ public class FpdFlash extends IInternalFrame {
         jTextFieldFdf.setText("");\r
         String fdfFile = ffc.getFlashDefinitionFile();\r
         if (fdfFile != null && fdfFile.length() > 0) {\r
+            jCheckBoxFdf.setSelected(true);\r
             jTextFieldFdf.setText(fdfFile);\r
             String fdfPath = System.getenv("WORKSPACE") + File.separator + fdfFile;\r
             initFvInFdfTable(fdfPath);\r
@@ -3113,6 +3196,7 @@ class FvOptsTableModel extends DefaultTableModel {
     private Vector<Object> vKeyWords = new Vector<Object>();\r
     \r
     public boolean isCellEditable(int row, int col) {\r
+\r
         if (vNonEditableName.size() > 0 || vKeyWords.size() > 0) {\r
             if (vKeyWords.contains(getValueAt(row, 0))) {\r
                 return false;\r
@@ -3120,7 +3204,11 @@ class FvOptsTableModel extends DefaultTableModel {
             if (vNonEditableName.contains(getValueAt(row, 0)) && col == 0) {\r
                 return false;\r
             }\r
-        }  \r
+        }\r
+        \r
+        if (col == 0 && getValueAt(row, 0) != null && getValueAt(row, 0).toString().length() > 0) {\r
+            return false;\r
+        }\r
        \r
         return true;\r
     }\r