]> 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 8a8af51ec9f6ee2f7b2234faa8ee71ae4c7c58eb..a880ae41f24e4c061de311c12c65ee2c3eabd493 100644 (file)
@@ -1055,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
@@ -1194,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
@@ -1221,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
@@ -1810,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
@@ -1834,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
@@ -2269,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
@@ -3181,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
@@ -3188,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