]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFlash.java
Modify FV attribute editor and generate FvImage Attributes in FPD file.
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / platform / ui / FpdFlash.java
index bdcb193819986442e220b8aa006b53e99cbbe482..ece4fb3e7fe8fc014594bf7394895632f3d88ff0 100644 (file)
@@ -105,10 +105,10 @@ public class FpdFlash extends IInternalFrame {
     private JLabel jLabelFvImageNames = null;\r
     private JLabel jLabelFvParaName = null;\r
     private JTextField jTextFieldFvParaName = null;\r
-    private JButton jButtonFvParaAdd = null;\r
+    private JButton jButtonFvNameAdd = null;\r
     private JScrollPane jScrollPaneFvImageNames = null;\r
     private JTable jTableFvImageNames = null;\r
-    private JButton jButtonFvParaDel = null;\r
+    private JButton jButtonFvNameDel = null;\r
     private JPanel jPanelFvImageOpts = null;\r
     private JButton jButtonAddFvImage = null;\r
     private JScrollPane jScrollPaneFvInfo = null;\r
@@ -169,6 +169,7 @@ public class FpdFlash extends IInternalFrame {
     private JPanel jPanelBgFvName = null;\r
     private JPanel jPanelBgFvImage = null;\r
     private JPanel jPanelW = null;\r
+    private String oldFvNameInFvImage = "";\r
     \r
     public FpdFlash() {\r
         super();\r
@@ -587,6 +588,7 @@ public class FpdFlash extends IInternalFrame {
             jComboBoxFvParaType = new JComboBox();\r
             jComboBoxFvParaType.addItem("Attributes");\r
             jComboBoxFvParaType.addItem("Components");\r
+            jComboBoxFvParaType.setSelectedIndex(0);\r
             jComboBoxFvParaType.setPreferredSize(new java.awt.Dimension(180,20));\r
             jComboBoxFvParaType.addItemListener(new ItemListener() {\r
 \r
@@ -634,13 +636,13 @@ public class FpdFlash extends IInternalFrame {
      *         \r
      * @return javax.swing.JButton     \r
      */\r
-    private JButton getJButtonFvParaAdd() {\r
-        if (jButtonFvParaAdd == null) {\r
-            jButtonFvParaAdd = new JButton();\r
-            jButtonFvParaAdd.setPreferredSize(new Dimension(80, 20));\r
-            jButtonFvParaAdd.setEnabled(true);\r
-            jButtonFvParaAdd.setText("Add");\r
-            jButtonFvParaAdd.addActionListener(new AbstractAction() {\r
+    private JButton getJButtonFvNameAdd() {\r
+        if (jButtonFvNameAdd == null) {\r
+            jButtonFvNameAdd = new JButton();\r
+            jButtonFvNameAdd.setPreferredSize(new Dimension(80, 20));\r
+            jButtonFvNameAdd.setEnabled(true);\r
+            jButtonFvNameAdd.setText("Add");\r
+            jButtonFvNameAdd.addActionListener(new AbstractAction() {\r
                 /**\r
                  * \r
                  */\r
@@ -649,26 +651,34 @@ public class FpdFlash extends IInternalFrame {
                 public void actionPerformed(java.awt.event.ActionEvent e) {\r
                     if (jTextFieldFvParaName.getText().length() > 0){\r
                         String[] row = {jTextFieldFvParaName.getText()};                        \r
-                        fvImageNameTableModel.addRow(row);\r
-                        if (jTableFvInfo.getSelectedRow() < 0) {\r
+                        int selectedRow = jTableFvInfo.getSelectedRow();\r
+                        if (selectedRow < 0) {\r
                             return;\r
                         }\r
                         \r
-                        String fvNameList = jTableFvInfo.getValueAt(jTableFvInfo.getSelectedRow(), 0)+"";\r
-                        String type = jTableFvInfo.getValueAt(jTableFvInfo.getSelectedRow(), 1)+"";\r
+                        String fvNameList = jTableFvInfo.getValueAt(selectedRow, 0)+"";\r
+                        String type = jTableFvInfo.getValueAt(selectedRow, 1)+"";\r
                         int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, type);\r
                         \r
                         if (fvImagePos < 0) {\r
                           // new FvImage.\r
+                            ffc.genFvImagesFvImage(row, jComboBoxFvParaType.getSelectedItem()+"", null);  \r
                         }\r
                         else {\r
-                          //append Fv name.  \r
+                          //append Fv name.\r
+                          ffc.addFvImageNamesInFvImage(fvImagePos, row);  \r
                         }\r
+                        docConsole.setSaved(false);\r
+                        fvImageNameTableModel.addRow(row);\r
+                        fvNameList += " ";\r
+                        fvNameList += row[0];\r
+                        jTableFvInfo.setValueAt(fvNameList.trim(), selectedRow, 0);\r
+                        jTableFvImageNames.changeSelection(jTableFvImageNames.getRowCount() - 1, 0, false, false);\r
                     }\r
                 }\r
             });\r
         }\r
-        return jButtonFvParaAdd;\r
+        return jButtonFvNameAdd;\r
     }\r
 \r
 \r
@@ -694,37 +704,11 @@ public class FpdFlash extends IInternalFrame {
      */\r
     private JTable getJTableFvImageNames() {\r
         if (jTableFvImageNames == null) {\r
-            fvImageNameTableModel = new DefaultTableModel();\r
+            fvImageNameTableModel = new NonEditableTableModel();\r
             jTableFvImageNames = new JTable(fvImageNameTableModel);\r
             jTableFvImageNames.setRowHeight(20);\r
             fvImageNameTableModel.addColumn("FV Image Name");\r
             \r
-            jTableFvImageNames.getSelectionModel().addListSelectionListener(new ListSelectionListener() {\r
-                public void valueChanged(ListSelectionEvent e) {\r
-                    if (e.getValueIsAdjusting()) {\r
-                        return;\r
-                    }\r
-                    ListSelectionModel lsm = (ListSelectionModel) e.getSource();\r
-                    if (lsm.isSelectionEmpty()) {\r
-                        return;\r
-                    } else {\r
-                        int selectedRow = lsm.getMinSelectionIndex();\r
-                        String oldFvName = jTableFvImageNames.getValueAt(selectedRow, 0)+"";\r
-                    }\r
-                }\r
-            });\r
-            \r
-            jTableFvImageNames.getModel().addTableModelListener(new TableModelListener() {\r
-                public void tableChanged(TableModelEvent arg0) {\r
-                    // TODO Auto-generated method stub\r
-                    int row = arg0.getFirstRow();\r
-                    int col = arg0.getColumn();\r
-                    TableModel m = (TableModel) arg0.getSource();\r
-                    \r
-                    if (arg0.getType() == TableModelEvent.UPDATE) {\r
-                    }\r
-                }\r
-            });\r
         }\r
         return jTableFvImageNames;\r
     }\r
@@ -735,13 +719,13 @@ public class FpdFlash extends IInternalFrame {
      *         \r
      * @return javax.swing.JButton     \r
      */\r
-    private JButton getJButtonFvParaDel() {\r
-        if (jButtonFvParaDel == null) {\r
-            jButtonFvParaDel = new JButton();\r
-            jButtonFvParaDel.setPreferredSize(new Dimension(80, 20));\r
-            jButtonFvParaDel.setEnabled(true);\r
-            jButtonFvParaDel.setText("Delete");\r
-            jButtonFvParaDel.addActionListener(new AbstractAction() {\r
+    private JButton getJButtonFvNameDel() {\r
+        if (jButtonFvNameDel == null) {\r
+            jButtonFvNameDel = new JButton();\r
+            jButtonFvNameDel.setPreferredSize(new Dimension(80, 20));\r
+            jButtonFvNameDel.setEnabled(true);\r
+            jButtonFvNameDel.setText("Delete");\r
+            jButtonFvNameDel.addActionListener(new AbstractAction() {\r
                 /**\r
                  * \r
                  */\r
@@ -749,16 +733,58 @@ public class FpdFlash extends IInternalFrame {
 \r
                 public void actionPerformed(java.awt.event.ActionEvent e) {\r
                     if (jTableFvImageNames.getSelectedRow() >= 0){\r
-                                   \r
+                        int selectedRow = jTableFvInfo.getSelectedRow();\r
+                        if (selectedRow < 0) {\r
+                            return;\r
+                        }\r
+                        \r
+                        String selectedFvName = jTableFvImageNames.getValueAt(jTableFvImageNames.getSelectedRow(), 0)+"";\r
+                        String fvNameList = jTableFvInfo.getValueAt(selectedRow, 0)+"";\r
+                        String type = jTableFvInfo.getValueAt(selectedRow, 1)+"";\r
+                        int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, type);\r
+                        \r
+                        if (fvImagePos < 0) {\r
+                            return;  \r
+                        }\r
+                        else {\r
+                          //delete Fv name.\r
+                            ffc.updateFvImageNamesInFvImage(fvImagePos, selectedFvName, null);\r
+                        }\r
+                        docConsole.setSaved(false);\r
+                        String newList = removeFvNameFromList(fvNameList, selectedFvName);\r
+                        jTableFvInfo.setValueAt(newList, selectedRow, 0);           \r
                         fvImageNameTableModel.removeRow(jTableFvImageNames.getSelectedRow());\r
                     }\r
                 }\r
             });\r
         }\r
-        return jButtonFvParaDel;\r
-    }\r
-\r
-\r
+        return jButtonFvNameDel;\r
+    }\r
+\r
+  private String removeFvNameFromList (String list, String name) {\r
+      String[] nameArray = list.split(" ");\r
+      int occursAt = -1;\r
+      for (int i = 0; i < nameArray.length; ++i) {\r
+          if (nameArray[i].equals(name)) {\r
+              occursAt = i;\r
+              break;\r
+          }\r
+      }\r
+      \r
+      if (occursAt == -1) {\r
+          return list;\r
+      }\r
+      \r
+      String newList = " ";\r
+      for (int j = 0; j < nameArray.length; ++j) {\r
+          if (j != occursAt) {\r
+              newList += nameArray[j];\r
+              newList += " ";\r
+          }\r
+      }\r
+      \r
+      return newList.trim();\r
+  }\r
 \r
                        \r
   private JPanel getJPanelFvImageOpts() {\r
@@ -818,33 +844,24 @@ public class FpdFlash extends IInternalFrame {
                 private static final long serialVersionUID = 1L;\r
 \r
                 public void actionPerformed(java.awt.event.ActionEvent e) {\r
-                    if (jTableFvInfo.isEditing()) {\r
-                        jTableFvInfo.getCellEditor().stopCellEditing();\r
-                    }\r
-                    if (jTableFvImageOpts.isEditing()) {\r
-                        jTableFvImageOpts.getCellEditor().stopCellEditing();\r
-                    }\r
-                    if (jTableFvImageNames.getRowCount()== 0){\r
-                        return;\r
-                    }\r
-                    String imageName = " ";\r
-                    for (int i = 0; i < jTableFvImageNames.getRowCount(); ++i){\r
-                        imageName += (String)jTableFvImageNames.getValueAt(i, 0);\r
-                        imageName += " ";\r
-                    }\r
-                    imageName = imageName.trim();\r
                     \r
-                    \r
-                    \r
-                    LinkedHashMap<String, String> m = null;\r
-//                    if (jCheckBoxFvImageOpts.isSelected()) {\r
-                        m = new LinkedHashMap<String, String>();\r
-                        getOptionNameValue(m);\r
+//                    String imageName = " ";\r
+//                    for (int i = 0; i < jTableFvImageNames.getRowCount(); ++i){\r
+//                        imageName += (String)jTableFvImageNames.getValueAt(i, 0);\r
+//                        imageName += " ";\r
 //                    }\r
-                    ffc.genFvImagesFvImage(imageName.split(" "), jComboBoxFvParaType.getSelectedItem()+"", m);\r
-                    docConsole.setSaved(false);\r
-                    Object[] row = {imageName, jComboBoxFvParaType.getSelectedItem()};\r
-                    fvImageParaTableModel.addRow(row); \r
+//                    imageName = imageName.trim();\r
+                    \r
+//                    LinkedHashMap<String, String> m = null;\r
+//                    m = new LinkedHashMap<String, String>();\r
+//                    getOptionNameValue(m);\r
+//                    ffc.genFvImagesFvImage(imageName.split(" "), jComboBoxFvParaType.getSelectedItem()+"", m);\r
+//                    docConsole.setSaved(false);\r
+                    fvImageNameTableModel.setRowCount(0);\r
+                    fvOptionTableModel.setRowCount(0);\r
+                    Object[] row = {"", jComboBoxFvParaType.getSelectedItem()};\r
+                    fvImageParaTableModel.addRow(row);\r
+                    jTableFvInfo.changeSelection(jTableFvInfo.getRowCount() - 1, 0, false, false);\r
                 }\r
             });\r
         }\r
@@ -897,9 +914,12 @@ public class FpdFlash extends IInternalFrame {
                         jComboBoxFvParaType.setSelectedItem(type);\r
                         String[] fvNames = fvNameList.split(" ");\r
                         fvImageNameTableModel.setRowCount(0);\r
+                        fvOptionTableModel.setRowCount(0);\r
                         for (int i = 0; i < fvNames.length; ++i) {\r
                             String[] row = { fvNames[i] };\r
-                            fvImageNameTableModel.addRow(row);\r
+                            if (row[0].length() > 0) {\r
+                                fvImageNameTableModel.addRow(row);\r
+                            }\r
                         }\r
                         \r
                         int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, type);\r
@@ -909,7 +929,6 @@ public class FpdFlash extends IInternalFrame {
                         LinkedHashMap<String, String> optionMap = new LinkedHashMap<String, String>();\r
                         ffc.getFvImagesFvImageOptions(fvImagePos, optionMap);\r
                         if (optionMap.size() > 0){\r
-                            fvOptionTableModel.setRowCount(0);\r
                             Set<String> key = optionMap.keySet();\r
                             Iterator<String> i = key.iterator();\r
                             while (i.hasNext()) {\r
@@ -947,9 +966,15 @@ public class FpdFlash extends IInternalFrame {
                 public void actionPerformed(ActionEvent arg0) {\r
                     // TODO Auto-generated method stub\r
                     if (jTableFvInfo.getSelectedRow() >= 0 ) {\r
-                        ffc.removeFvImagesFvImage(jTableFvInfo.getSelectedRow());\r
+                        String fvNameList = fvImageParaTableModel.getValueAt(jTableFvInfo.getSelectedRow(), 0)+"";\r
+                        int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, jComboBoxFvParaType.getSelectedItem()+"");\r
+                        \r
+                        ffc.removeFvImagesFvImage(fvImagePos);\r
                         fvImageParaTableModel.removeRow(jTableFvInfo.getSelectedRow());\r
                         docConsole.setSaved(false);\r
+                        \r
+                        fvImageNameTableModel.setRowCount(0);\r
+                        fvOptionTableModel.setRowCount(0);\r
                     }\r
                 }\r
                 \r
@@ -1158,7 +1183,7 @@ public class FpdFlash extends IInternalFrame {
             JOptionPane.showMessageDialog(frame, "FDF file does NOT contain valid Erase Polarity.");\r
         }\r
         else {\r
-            ffc.setTypedFvImageNameValue("Attributes", "ErasePolarity", erasePolarity);\r
+            ffc.setTypedFvImageNameValue("Attributes", "EFI_ERASE_POLARITY", erasePolarity);\r
         }\r
         \r
         // BugBug: assume all blocks have same size;\r
@@ -1298,8 +1323,26 @@ public class FpdFlash extends IInternalFrame {
 \r
                 public void actionPerformed(ActionEvent e) {\r
                     if (jTextFieldFvImageOptName.getText().length() > 0 && jTextFieldFvImageOptValue.getText().length() > 0){\r
-                        String[] row = {jTextFieldFvImageOptName.getText(), jTextFieldFvImageOptValue.getText()};                        \r
+                        int selectedRow = jTableFvInfo.getSelectedRow();\r
+                        if (selectedRow < 0) {\r
+                            return;\r
+                        }\r
+                        \r
+                        String fvNameList = jTableFvInfo.getValueAt(selectedRow, 0)+"";\r
+                        String type = jTableFvInfo.getValueAt(selectedRow, 1)+"";\r
+                        int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, type);\r
+                        String[] row = {jTextFieldFvImageOptName.getText(), jTextFieldFvImageOptValue.getText()};\r
+                        \r
+                        if (fvImagePos < 0) {\r
+                            return;\r
+                        }\r
+                        else {\r
+                            //append options to FvImage.\r
+                            ffc.setFvImagesFvImageNameValue(fvImagePos, row[0], row[1]);\r
+                        }\r
+                        docConsole.setSaved(false);\r
                         fvOptionTableModel.addRow(row);\r
+                        jTableFvImageOpts.changeSelection(jTableFvImageOpts.getRowCount() - 1, 0, false, false);\r
                     }\r
                 }\r
             });\r
@@ -1326,7 +1369,22 @@ public class FpdFlash extends IInternalFrame {
 \r
                 public void actionPerformed(ActionEvent e) {\r
                     if (jTableFvImageOpts.getSelectedRow() >= 0){\r
-                        fvOptionTableModel.removeRow(jTableFvProp.getSelectedRow());\r
+                        int selectedRow = jTableFvInfo.getSelectedRow();\r
+                        if (selectedRow < 0) {\r
+                            return;\r
+                        }\r
+                        \r
+                        String fvNameList = jTableFvInfo.getValueAt(selectedRow, 0)+"";\r
+                        String type = jTableFvInfo.getValueAt(selectedRow, 1)+"";\r
+                        int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, type);\r
+                        if (fvImagePos < 0) {\r
+                            return;\r
+                        }\r
+                        \r
+                        String optName = fvOptionTableModel.getValueAt(jTableFvImageOpts.getSelectedRow(), 0)+"";\r
+                        ffc.removeFvImageNameValue(fvImagePos, optName);\r
+                        docConsole.setSaved(false);\r
+                        fvOptionTableModel.removeRow(jTableFvImageOpts.getSelectedRow());\r
                     }\r
                 }\r
             });\r
@@ -1355,7 +1413,7 @@ public class FpdFlash extends IInternalFrame {
      */\r
     private JTable getJTableFvImageOpts() {\r
         if (jTableFvImageOpts == null) {\r
-            fvOptionTableModel = new DefaultTableModel();\r
+            fvOptionTableModel = new NonEditableTableModel();\r
             fvOptionTableModel.addColumn("Name");\r
             fvOptionTableModel.addColumn("Value");\r
             jTableFvImageOpts = new JTable(fvOptionTableModel);\r
@@ -1735,7 +1793,7 @@ public class FpdFlash extends IInternalFrame {
                                 jTabbedPane.addTab(newFvName, new ModuleOrderPane(newFvName, ""));\r
                                 // Add FvImageNames in Flash\r
                                 String[] fvNames = {newFvName};\r
-                                ffc.AddFvImageFvImageNames(fvNames);\r
+                                ffc.addFvImageFvImageNames(fvNames);\r
                             }\r
                             docConsole.setSaved(false);\r
                             oldFvName = newFvName;\r
@@ -1980,8 +2038,8 @@ public class FpdFlash extends IInternalFrame {
         if (jPanelBgFvName == null) {\r
             jPanelBgFvName = new JPanel();\r
             jPanelBgFvName.setPreferredSize(new java.awt.Dimension(80,55));\r
-            jPanelBgFvName.add(getJButtonFvParaAdd(), null);\r
-            jPanelBgFvName.add(getJButtonFvParaDel(), null);\r
+            jPanelBgFvName.add(getJButtonFvNameAdd(), null);\r
+            jPanelBgFvName.add(getJButtonFvNameDel(), null);\r
         }\r
         return jPanelBgFvName;\r
     }\r