]> git.proxmox.com Git - mirror_edk2.git/commitdiff
FV from FDF file options editor.
authorjlin16 <jlin16@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 6 Sep 2006 09:28:47 +0000 (09:28 +0000)
committerjlin16 <jlin16@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 6 Sep 2006 09:28:47 +0000 (09:28 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1483 6f19259b-4bc3-4df7-8a09-765794883524

Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFileContents.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFlash.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFvOptions.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdModuleSA.java

index 20b5c10568c8c7237e260b2504ac49cbd81a3251..c80d758f284f0b3ca92dc051fc6f80aa0a283485 100644 (file)
@@ -2847,6 +2847,22 @@ public class FpdFileContents {
         }\r
     }\r
     \r
+    public void removeTypedNamedFvImageNameValue (String fvName, String type, String optName) {\r
+        Vector<FvImagesDocument.FvImages.FvImage> vFvImage = getFvImagesFvImageWithName(fvName, type);\r
+        for (int i = 0; i < vFvImage.size(); ++i) {\r
+            FvImagesDocument.FvImages.FvImage fi = vFvImage.get(i);\r
+            if (fi.getFvImageOptions() != null && fi.getFvImageOptions().getNameValueList() != null) {\r
+                ListIterator<FvImagesDocument.FvImages.FvImage.FvImageOptions.NameValue> li = fi.getFvImageOptions().getNameValueList().listIterator();\r
+                while (li.hasNext()) {\r
+                    FvImagesDocument.FvImages.FvImage.FvImageOptions.NameValue nv = li.next();\r
+                    if (nv.getName().equals(optName)) {\r
+                        li.remove();\r
+                    }\r
+                }\r
+            }\r
+        }\r
+    }\r
+    \r
     /**Add name-value pair to FvImage element with type.\r
      * @param fvName FV name to add name-value pair.\r
      * @param type FvImage attribute.\r
@@ -2854,6 +2870,7 @@ public class FpdFileContents {
      * @param value\r
      */\r
     public void setTypedNamedFvImageNameValue (String fvName, String type, String name, String value) {\r
+        boolean fvImageExists = false;\r
         if (getfpdFlash().getFvImages() == null) {\r
             return;\r
         }\r
@@ -2870,8 +2887,15 @@ public class FpdFileContents {
             if (!fi.getFvImageNamesList().contains(fvName)) {\r
                 continue;\r
             }\r
+            fvImageExists = true;\r
             setFvImagesFvImageNameValue (fi, name, value, null);\r
         }\r
+        \r
+        if (!fvImageExists) {\r
+            HashMap<String, String> map = new HashMap<String, String>();\r
+            map.put(name, value);\r
+            genFvImagesFvImage(new String[]{fvName}, type, map);\r
+        }\r
     }\r
     \r
     /**Add to all FvImage elements with type, the name-value pair.\r
@@ -2895,6 +2919,7 @@ public class FpdFileContents {
             }\r
             setFvImagesFvImageNameValue (fi, name, value, null);\r
         }\r
+        \r
     }\r
     \r
     /**Add to FvImage the name-value pair, or replace old name with newName, or generate new name-value pair if not exists before.\r
index 74999ef5ec944fa5bf75838b8d18b6d2294347c5..ee419d5d0beec83e52e6d8ac12de8be6b036b698 100644 (file)
@@ -162,7 +162,8 @@ public class FpdFlash extends IInternalFrame {
     private String determinedFvBlockSize = null;\r
     private String erasePolarity = "";\r
     boolean memModified = false;\r
-    \r
+    private FvOptsTableModel fvInFdfOptTableModel = null;\r
+    private FvOptsTableModel fvAdditionalOptTableModel = null;\r
     \r
     public FpdFlash() {\r
         super();\r
@@ -1171,7 +1172,7 @@ public class FpdFlash extends IInternalFrame {
                 if (blockSizeWellFormat && numOfBlockWellFormat) {\r
                     int size = Integer.decode(bSize);\r
                     int num = Integer.decode(numBlks);\r
-                    fvSize = size*num + "";\r
+                    fvSize = "0x" + Integer.toHexString(size*num);\r
                 }\r
             }\r
             fvAdditionalTableModel.addRow(new String[]{fvName, fvSize, fvFile});\r
@@ -1659,7 +1660,7 @@ public class FpdFlash extends IInternalFrame {
         if (jButtonFvInFdfOptions == null) {\r
             jButtonFvInFdfOptions = new JButton();\r
             jButtonFvInFdfOptions.setPreferredSize(new java.awt.Dimension(80,20));\r
-            jButtonFvInFdfOptions.setEnabled(false);\r
+            jButtonFvInFdfOptions.setEnabled(true);\r
             jButtonFvInFdfOptions.setText("Options");\r
             jButtonFvInFdfOptions.addActionListener(new java.awt.event.ActionListener() {\r
                 public void actionPerformed(java.awt.event.ActionEvent e) {\r
@@ -1667,11 +1668,29 @@ public class FpdFlash extends IInternalFrame {
                     if (selectedRow < 0) {\r
                         return;\r
                     }\r
+                    String fvName = jTableFvInFdf.getValueAt(selectedRow, 0)+"";\r
+                    DefaultTableModel dtm = getFvInFdfOptTableModel();\r
+                    new FpdFvOptions(fvName, dtm, ffc, docConsole);\r
                 }\r
             });\r
         }\r
         return jButtonFvInFdfOptions;\r
     }\r
+    \r
+    private DefaultTableModel getFvInFdfOptTableModel() {\r
+        if (fvInFdfOptTableModel == null) {\r
+            fvInFdfOptTableModel = new FvOptsTableModel();\r
+            fvInFdfOptTableModel.addColumn("Name");\r
+            fvInFdfOptTableModel.addColumn("Value");\r
+            Vector<Object> v = new Vector<Object>();\r
+            v.add("EFI_BLOCK_SIZE");\r
+            v.add("EFI_NUM_BLOCKS");\r
+            v.add("EFI_FILE_NAME");\r
+            fvInFdfOptTableModel.setVKeyWords(v);\r
+            fvInFdfOptTableModel.setVNonEditableName(v);\r
+        }\r
+        return fvInFdfOptTableModel;\r
+    }\r
 \r
     /**\r
      * This method initializes jScrollPaneFvAdditional \r
@@ -1910,7 +1929,7 @@ public class FpdFlash extends IInternalFrame {
         if (jButtonAddFvOptions == null) {\r
             jButtonAddFvOptions = new JButton();\r
             jButtonAddFvOptions.setPreferredSize(new java.awt.Dimension(80,20));\r
-            jButtonAddFvOptions.setEnabled(false);\r
+            jButtonAddFvOptions.setEnabled(true);\r
             jButtonAddFvOptions.setText("Options");\r
             jButtonAddFvOptions.addActionListener(new java.awt.event.ActionListener() {\r
                 public void actionPerformed(java.awt.event.ActionEvent e) {\r
@@ -2594,6 +2613,57 @@ public class FpdFlash extends IInternalFrame {
 \r
 }  //  @jve:decl-index=0:visual-constraint="10,10"\r
 \r
+class FvOptsTableModel extends DefaultTableModel {\r
+\r
+    private static final long serialVersionUID = 1L;\r
+    \r
+    private Vector<Object> vNonEditableName = new Vector<Object>();\r
+    private Vector<Object> vKeyWords = new Vector<Object>();\r
+    \r
+    public boolean isCellEditable(int row, int col) {\r
+        if (vNonEditableName.size() > 0 || vKeyWords.size() > 0) {\r
+            if (vKeyWords.contains(getValueAt(row, 0))) {\r
+                return false;\r
+            }\r
+            if (vNonEditableName.contains(getValueAt(row, 0)) && col == 0) {\r
+                return false;\r
+            }\r
+        }  \r
+       \r
+        return true;\r
+    }\r
+\r
+    /**\r
+     * @return Returns the vKeyWords.\r
+     */\r
+    protected Vector<Object> getVKeyWords() {\r
+        return vKeyWords;\r
+    }\r
+\r
+    /**\r
+     * @param keyWords The vKeyWords to set.\r
+     */\r
+    protected void setVKeyWords(Vector<Object> keyWords) {\r
+        vKeyWords.removeAllElements();\r
+        vKeyWords.addAll(keyWords);\r
+    }\r
+\r
+    /**\r
+     * @return Returns the vNonEditableName.\r
+     */\r
+    protected Vector<Object> getVNonEditableName() {\r
+        return vNonEditableName;\r
+    }\r
+\r
+    /**\r
+     * @param nonEditableName The vNonEditableName to set.\r
+     */\r
+    protected void setVNonEditableName(Vector<Object> nonEditableName) {\r
+        vNonEditableName.removeAllElements();\r
+        vNonEditableName.addAll(nonEditableName);\r
+    }\r
+    \r
+}\r
 class ImageParaTableModel extends DefaultTableModel {\r
 \r
     private static final long serialVersionUID = 1L;\r
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFvOptions.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFvOptions.java
new file mode 100644 (file)
index 0000000..b093941
--- /dev/null
@@ -0,0 +1,269 @@
+/** @file\r
+  Java class FpdFvOptions is GUI for FV options in FPD file.\r
\r
+Copyright (c) 2006, Intel Corporation\r
+All rights reserved. This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution.  The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+**/\r
+package org.tianocore.frameworkwizard.platform.ui;\r
+\r
+import java.awt.BorderLayout;\r
+import java.awt.Dimension;\r
+import java.awt.Toolkit;\r
+import java.util.HashMap;\r
+import java.util.Iterator;\r
+import java.util.Set;\r
+\r
+import javax.swing.JPanel;\r
+import javax.swing.JDialog;\r
+import javax.swing.JScrollPane;\r
+import javax.swing.JTable;\r
+import javax.swing.event.TableModelEvent;\r
+import javax.swing.event.TableModelListener;\r
+import javax.swing.table.DefaultTableModel;\r
+import javax.swing.table.TableModel;\r
+import javax.swing.JButton;\r
+\r
+import org.tianocore.frameworkwizard.common.Identifications.OpeningPlatformType;\r
+\r
+/**\r
+ * \r
+ *\r
+ */\r
+public class FpdFvOptions extends JDialog {\r
+\r
+    private JPanel jContentPane = null;\r
+    private JPanel jPanelN = null;\r
+    private JPanel jPanelS = null;\r
+    private JPanel jPanelC = null;\r
+    private JScrollPane jScrollPaneFvOptions = null;\r
+    private JTable jTableFvOptions = null;\r
+    private DefaultTableModel tableModel = null;\r
+    private String fvName = null;\r
+    private FpdFileContents ffc = null;\r
+    private OpeningPlatformType docConsole = null;\r
+    private JButton jButtonNew = null;\r
+    private JButton jButtonDelete = null;\r
+\r
+    /**\r
+     * This is the default constructor\r
+     */\r
+    public FpdFvOptions(String name, DefaultTableModel tm, FpdFileContents ffc, OpeningPlatformType dc) {\r
+        super();\r
+        fvName = name;\r
+        this.ffc = ffc;\r
+        this.docConsole = dc;\r
+        setTableModel(tm);\r
+        initOptions();\r
+        initialize();\r
+        \r
+    }\r
+\r
+    private void initOptions() {\r
+        tableModel.setRowCount(0);\r
+        HashMap<String, String> mOpts = new HashMap<String, String>();\r
+        ffc.getFvImagesFvImageOptions(fvName, mOpts);\r
+        Set<String> sKey = mOpts.keySet();\r
+        Iterator<String> iter = sKey.iterator();\r
+        while (iter.hasNext()) {\r
+            String name = iter.next();\r
+            String value = mOpts.get(name);\r
+            tableModel.addRow(new String[]{name, value});\r
+        }\r
+    }\r
+    /**\r
+     * This method initializes this\r
+     * \r
+     * @return void\r
+     */\r
+    private void initialize() {\r
+        this.setSize(650, 400);\r
+        this.setModal(true);\r
+        this.setTitle("FV Options");\r
+        this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);\r
+        this.setContentPane(getJContentPane());\r
+        this.centerWindow();\r
+        this.setVisible(true);\r
+    }\r
+\r
+    /**\r
+     * This method initializes jContentPane\r
+     * \r
+     * @return javax.swing.JPanel\r
+     */\r
+    private JPanel getJContentPane() {\r
+        if (jContentPane == null) {\r
+            jContentPane = new JPanel();\r
+            jContentPane.setLayout(new BorderLayout());\r
+            jContentPane.add(getJPanelN(), java.awt.BorderLayout.NORTH);\r
+            jContentPane.add(getJPanelS(), java.awt.BorderLayout.SOUTH);\r
+            jContentPane.add(getJPanelC(), java.awt.BorderLayout.CENTER);\r
+        }\r
+        return jContentPane;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jPanelN \r
+     *         \r
+     * @return javax.swing.JPanel      \r
+     */\r
+    private JPanel getJPanelN() {\r
+        if (jPanelN == null) {\r
+            jPanelN = new JPanel();\r
+        }\r
+        return jPanelN;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jPanelS \r
+     *         \r
+     * @return javax.swing.JPanel      \r
+     */\r
+    private JPanel getJPanelS() {\r
+        if (jPanelS == null) {\r
+            jPanelS = new JPanel();\r
+            jPanelS.add(getJButtonNew(), null);\r
+            jPanelS.add(getJButtonDelete(), null);\r
+        }\r
+        return jPanelS;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jPanelC \r
+     *         \r
+     * @return javax.swing.JPanel      \r
+     */\r
+    private JPanel getJPanelC() {\r
+        if (jPanelC == null) {\r
+            jPanelC = new JPanel();\r
+            jPanelC.add(getJScrollPaneFvOptions(), null);\r
+        }\r
+        return jPanelC;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jScrollPaneFvOptions    \r
+     *         \r
+     * @return javax.swing.JScrollPane \r
+     */\r
+    private JScrollPane getJScrollPaneFvOptions() {\r
+        if (jScrollPaneFvOptions == null) {\r
+            jScrollPaneFvOptions = new JScrollPane();\r
+            jScrollPaneFvOptions.setPreferredSize(new java.awt.Dimension(600,320));\r
+            jScrollPaneFvOptions.setViewportView(getJTableFvOptions());\r
+        }\r
+        return jScrollPaneFvOptions;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jTableFvOptions \r
+     *         \r
+     * @return javax.swing.JTable      \r
+     */\r
+    private JTable getJTableFvOptions() {\r
+        if (jTableFvOptions == null) {\r
+            jTableFvOptions = new JTable();\r
+            jTableFvOptions.setRowHeight(20);\r
+            jTableFvOptions.setModel(getTableModel());\r
+            \r
+            jTableFvOptions.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
+                        if (m.getValueAt(row, 0).equals("")) {\r
+                            return;\r
+                        }\r
+                        ffc.setTypedNamedFvImageNameValue(fvName, "Options", m.getValueAt(row, 0)+"", m.getValueAt(row, 1)+"");\r
+                        docConsole.setSaved(false);\r
+                    }\r
+                }\r
+            });\r
+        }\r
+        return jTableFvOptions;\r
+    }\r
+\r
+    protected DefaultTableModel getTableModel() {\r
+        return tableModel;\r
+    }\r
+\r
+    protected void setTableModel(DefaultTableModel tableModel) {\r
+        \r
+        this.tableModel = tableModel;\r
+        \r
+    }\r
+\r
+    /**\r
+    Start the window at the center of screen\r
+    \r
+    **/\r
+   protected void centerWindow(int intWidth, int intHeight) {\r
+       Dimension d = Toolkit.getDefaultToolkit().getScreenSize();\r
+       this.setLocation((d.width - intWidth) / 2, (d.height - intHeight) / 2);\r
+   }\r
+\r
+   /**\r
+    Start the window at the center of screen\r
+    \r
+    **/\r
+   protected void centerWindow() {\r
+       centerWindow(this.getSize().width, this.getSize().height);\r
+   }\r
+\r
+/**\r
+ * This method initializes jButtonNew  \r
+ *     \r
+ * @return javax.swing.JButton \r
+ */\r
+private JButton getJButtonNew() {\r
+    if (jButtonNew == null) {\r
+        jButtonNew = new JButton();\r
+        jButtonNew.setPreferredSize(new java.awt.Dimension(80,20));\r
+        jButtonNew.setText("New");\r
+        jButtonNew.addActionListener(new java.awt.event.ActionListener() {\r
+            public void actionPerformed(java.awt.event.ActionEvent e) {\r
+                tableModel.addRow(new String[]{"", ""});\r
+            }\r
+        });\r
+    }\r
+    return jButtonNew;\r
+}\r
+\r
+/**\r
+ * This method initializes jButtonDelete       \r
+ *     \r
+ * @return javax.swing.JButton \r
+ */\r
+private JButton getJButtonDelete() {\r
+    if (jButtonDelete == null) {\r
+        jButtonDelete = new JButton();\r
+        jButtonDelete.setPreferredSize(new java.awt.Dimension(80,20));\r
+        jButtonDelete.setText("Delete");\r
+        jButtonDelete.addActionListener(new java.awt.event.ActionListener() {\r
+            public void actionPerformed(java.awt.event.ActionEvent e) {\r
+                int selectedRow = jTableFvOptions.getSelectedRow();\r
+                if (selectedRow < 0) {\r
+                    return;\r
+                }\r
+                String optName = tableModel.getValueAt(selectedRow, 0)+"";\r
+                if (((FvOptsTableModel)tableModel).getVKeyWords().contains(optName)){\r
+                    return;\r
+                }\r
+                \r
+                ffc.removeTypedNamedFvImageNameValue(fvName, "Options", optName);\r
+                tableModel.removeRow(selectedRow);\r
+                docConsole.setSaved(false);\r
+            }\r
+        });\r
+    }\r
+    return jButtonDelete;\r
+}\r
+}\r
index 14fd02499f7c0a001e9137fc57572e9eaf158931..44cead811a368abaaa2fc4e103bdbde93f97b0de 100644 (file)
@@ -440,6 +440,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
      */\r
     private void initialize() {\r
         this.setSize(664, 515);\r
+        this.setResizable(false);\r
         this.centerWindow();\r
         this.setModal(true);\r
         this.setTitle("Module Settings");\r