]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFlash.java
1. Add feature of ModuleSA PcdBuildDefinition editor.
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / platform / ui / FpdFlash.java
index 6ad18492202eb91802f3ab395a9e01086da116cf..19849d0277f2f6b74e722c5d3f1f374f19d6f7f8 100644 (file)
@@ -16,36 +16,27 @@ import java.awt.BorderLayout;
 import javax.swing.JPanel;\r
 \r
 import javax.swing.AbstractAction;\r
-import javax.swing.ButtonGroup;\r
 import javax.swing.DefaultCellEditor;\r
-import javax.swing.DefaultListModel;\r
-import javax.swing.JDialog;\r
 import javax.swing.JFileChooser;\r
 import javax.swing.JFrame;\r
-import javax.swing.JInternalFrame;\r
 import javax.swing.JOptionPane;\r
 import javax.swing.JTabbedPane;\r
 import javax.swing.JButton;\r
 import javax.swing.ListSelectionModel;\r
 \r
 import org.tianocore.PlatformSurfaceAreaDocument;\r
-import org.tianocore.frameworkwizard.common.Tools;\r
+import org.tianocore.frameworkwizard.common.Identifications.OpeningPlatformType;\r
 import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
 import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
 \r
 \r
 import java.awt.FlowLayout;\r
 import java.awt.event.ActionEvent;\r
-import java.awt.event.ActionListener;\r
 import java.awt.event.ComponentAdapter;\r
 import java.awt.event.ComponentEvent;\r
-import java.awt.event.FocusAdapter;\r
-import java.awt.event.FocusEvent;\r
 import java.awt.event.ItemEvent;\r
 import java.awt.event.ItemListener;\r
-import java.awt.event.ActionEvent;\r
 import java.io.File;\r
-import java.util.ArrayList;\r
 import java.util.Iterator;\r
 import java.util.LinkedHashMap;\r
 import java.util.Map;\r
@@ -57,7 +48,8 @@ import java.awt.GridLayout;
 import javax.swing.JLabel;\r
 import javax.swing.JScrollPane;\r
 import javax.swing.JTable;\r
-import javax.swing.JList;\r
+import javax.swing.event.InternalFrameAdapter;\r
+import javax.swing.event.InternalFrameEvent;\r
 import javax.swing.event.ListSelectionEvent;\r
 import javax.swing.event.ListSelectionListener;\r
 import javax.swing.event.TableModelEvent;\r
@@ -67,12 +59,13 @@ import javax.swing.table.TableColumn;
 import javax.swing.table.TableModel;\r
 import javax.swing.JComboBox;\r
 import java.awt.Dimension;\r
-import javax.swing.JRadioButton;\r
-import javax.swing.JTextArea;\r
-import java.awt.CardLayout;\r
 \r
 public class FpdFlash extends IInternalFrame {\r
 \r
+    /**\r
+     * \r
+     */\r
+    private static final long serialVersionUID = 1L;\r
     static JFrame frame;\r
     private JPanel jContentPane = null;\r
     private JPanel jPanel = null;\r
@@ -84,7 +77,6 @@ public class FpdFlash extends IInternalFrame {
     private JButton jButtonOk = null;\r
     private JButton jButtonCancel = null;\r
     private JPanel jPanelFvImageN = null;\r
-    private JPanel jPanelFvImageW = null;\r
     private JPanel jPanelFvImageS = null;\r
     private JCheckBox jCheckBox1 = null;\r
     private JLabel jLabel = null;\r
@@ -92,7 +84,6 @@ public class FpdFlash extends IInternalFrame {
     private JLabel jLabel1 = null;\r
     private JTextField jTextField1 = null;\r
     private JButton jButton = null;\r
-    private JScrollPane jScrollPane = null;\r
     private JScrollPane jScrollPane1 = null;\r
     private JTable jTable = null;\r
     private JPanel jPanel4 = null;\r
@@ -100,6 +91,7 @@ public class FpdFlash extends IInternalFrame {
     private DefaultTableModel fvPropertyTableModel = null;\r
     private DefaultTableModel fvImageNameTableModel = null;\r
     private ImageParaTableModel fvImageParaTableModel = null;\r
+    private DefaultTableModel fvOptionTableModel = null;\r
     private JPanel jPanelFvImageC = null;\r
     private JCheckBox jCheckBox2 = null;\r
     private JLabel jLabel2 = null;\r
@@ -117,32 +109,23 @@ public class FpdFlash extends IInternalFrame {
     private JTable jTable2 = null;\r
     private JButton jButton6 = null;\r
     private JCheckBox jCheckBox3 = null;\r
-    private JLabel jLabel5 = null;\r
-    private JComboBox jComboBox1 = null;\r
-    private JCheckBox jCheckBox4 = null;\r
-    private JCheckBox jCheckBox5 = null;\r
-    private JCheckBox jCheckBox6 = null;\r
-    private JCheckBox jCheckBox7 = null;\r
-    private JCheckBox jCheckBox8 = null;\r
-    private JCheckBox jCheckBox9 = null;\r
-    private JCheckBox jCheckBox10 = null;\r
-    private JCheckBox jCheckBox11 = null;\r
-    private JCheckBox jCheckBox12 = null;\r
-    private JCheckBox jCheckBox13 = null;\r
     private JPanel jPanel6 = null;\r
-    private DefaultTableModel fdfImageDefTableModel = null;\r
-    private DefaultTableModel fdfBlocksTableModel = null;\r
-    private DefaultTableModel fdfRegionsTableModel = null;\r
-    private DefaultTableModel fdfSubRegionsTableModel = null;\r
-    \r
-    private JLabel jLabel17 = null;\r
-    private DefaultListModel listModel = new DefaultListModel();\r
+    private OpeningPlatformType docConsole = null;\r
     private FpdFileContents ffc = null;\r
     private JPanel jPanel7 = null;\r
     private JCheckBox jCheckBox = null;\r
     private JTextField jTextField3 = null;\r
     private JButton jButton5 = null;\r
-    \r
+    private JLabel jLabel5 = null;\r
+    private JTextField jTextField4 = null;\r
+    private JLabel jLabel6 = null;\r
+    private JTextField jTextField5 = null;\r
+    private JPanel jPanel8 = null;\r
+    private JButton jButton7 = null;\r
+    private JButton jButton8 = null;\r
+    private JScrollPane jScrollPane = null;\r
+    private JTable jTable3 = null;\r
+    private JButton jButton9 = null;\r
     public FpdFlash() {\r
         super();\r
         // TODO Auto-generated constructor stub\r
@@ -158,6 +141,11 @@ public class FpdFlash extends IInternalFrame {
         init(ffc);\r
     }\r
     \r
+    public FpdFlash(OpeningPlatformType opt) {\r
+        this(opt.getXmlFpd());\r
+        docConsole = opt;\r
+    }\r
+    \r
     /**\r
      * This method initializes jPanel  \r
      *         \r
@@ -309,21 +297,6 @@ public class FpdFlash extends IInternalFrame {
         return jPanelFvImageN;\r
     }\r
 \r
-\r
-    /**\r
-     * This method initializes jPanelFvImageW  \r
-     *         \r
-     * @return javax.swing.JPanel      \r
-     */\r
-    private JPanel getJPanelFvImageW() {\r
-        if (jPanelFvImageW == null) {\r
-            jPanelFvImageW = new JPanel();\r
-            jPanelFvImageW.setPreferredSize(new java.awt.Dimension(10,2));\r
-        }\r
-        return jPanelFvImageW;\r
-    }\r
-\r
-\r
     /**\r
      * This method initializes jPanelFvImageS  \r
      *         \r
@@ -334,7 +307,7 @@ public class FpdFlash extends IInternalFrame {
             GridLayout gridLayout2 = new GridLayout();\r
             gridLayout2.setRows(1);\r
             jPanelFvImageS = new JPanel();\r
-            jPanelFvImageS.setPreferredSize(new java.awt.Dimension(480,200));\r
+            jPanelFvImageS.setPreferredSize(new java.awt.Dimension(480,190));\r
             jPanelFvImageS.setLayout(gridLayout2);\r
             jPanelFvImageS.add(getJScrollPane3(), null);\r
         }\r
@@ -416,10 +389,16 @@ public class FpdFlash extends IInternalFrame {
             jButton.setEnabled(false);\r
             jButton.setText("Add");\r
             jButton.addActionListener(new AbstractAction() {\r
+                /**\r
+                 * \r
+                 */\r
+                private static final long serialVersionUID = 1L;\r
+\r
                 public void actionPerformed(ActionEvent e) {\r
                     if (jTextField.getText().length() > 0 && jTextField1.getText().length() > 0){\r
                         String[] row = {jTextField.getText(), jTextField1.getText()};                        \r
                         fvPropertyTableModel.addRow(row);\r
+                        docConsole.setSaved(false);\r
                         ffc.genFvImagesNameValue(row[0], row[1]);\r
                     }\r
                 }\r
@@ -483,7 +462,7 @@ public class FpdFlash extends IInternalFrame {
                         \r
                         String name = m.getValueAt(row, 0) + "";\r
                         String value = m.getValueAt(row, 1) + "";\r
-\r
+                        docConsole.setSaved(false);\r
                         ffc.updateFvImagesNameValue(row, name, value);\r
                     }\r
                 }\r
@@ -522,9 +501,15 @@ public class FpdFlash extends IInternalFrame {
             jButton1.setEnabled(false);\r
             jButton1.setText("Delete");\r
             jButton1.addActionListener(new AbstractAction() {\r
+                /**\r
+                 * \r
+                 */\r
+                private static final long serialVersionUID = 1L;\r
+\r
                 public void actionPerformed(ActionEvent e) {\r
                     if (jTable.getSelectedRow() >= 0){\r
                         fvPropertyTableModel.removeRow(jTable.getSelectedRow());\r
+                        docConsole.setSaved(false);\r
                         ffc.removeFvImagesNameValue(jTable.getSelectedRow());\r
                     }\r
                 }\r
@@ -656,6 +641,11 @@ public class FpdFlash extends IInternalFrame {
             jButton2.setEnabled(false);\r
             jButton2.setText("Add");\r
             jButton2.addActionListener(new AbstractAction() {\r
+                /**\r
+                 * \r
+                 */\r
+                private static final long serialVersionUID = 1L;\r
+\r
                 public void actionPerformed(java.awt.event.ActionEvent e) {\r
                     if (jTextField2.getText().length() > 0){\r
                         String[] row = {jTextField2.getText()};                        \r
@@ -711,6 +701,11 @@ public class FpdFlash extends IInternalFrame {
             jButton3.setEnabled(false);\r
             jButton3.setText("Delete");\r
             jButton3.addActionListener(new AbstractAction() {\r
+                /**\r
+                 * \r
+                 */\r
+                private static final long serialVersionUID = 1L;\r
+\r
                 public void actionPerformed(java.awt.event.ActionEvent e) {\r
                     if (jTable1.getSelectedRow() >= 0){\r
                                    \r
@@ -730,33 +725,30 @@ public class FpdFlash extends IInternalFrame {
 \r
  if (jPanel5 == null) {\r
      //ToDo add ButtonGroup for RadioButtons\r
+            jLabel6 = new JLabel();\r
+            jLabel6.setEnabled(true);\r
+            jLabel6.setText("Value");\r
+            jLabel6.setPreferredSize(new Dimension(38, 20));\r
+            jLabel5 = new JLabel();\r
+            jLabel5.setEnabled(true);\r
+            jLabel5.setText("Name");\r
+            jLabel5.setPreferredSize(new Dimension(38, 20));\r
             jPanel5 = new JPanel();\r
-            jPanel5.setPreferredSize(new java.awt.Dimension(480,120));\r
+            jPanel5.setPreferredSize(new java.awt.Dimension(480,150));\r
             \r
-            GridLayout gridLayout = new GridLayout();\r
-            gridLayout.setRows(5);\r
-            gridLayout.setColumns(3);\r
-            jPanel5.setLayout(gridLayout);\r
-            jPanel5.add(getJCheckBox3(), null);\r
+            jPanel5.setLayout(new FlowLayout());\r
             \r
-            jLabel5 = new JLabel();\r
-            jLabel5.setText("EFI_ERASE_POLARITY");\r
-            jLabel5.setEnabled(false);\r
-                       jPanel5.add(jLabel5, null);\r
-                       jPanel5.add(getJComboBox1(), null);\r
-                       jPanel5.add(getJCheckBox4(), null);\r
-                       jPanel5.add(getJCheckBox5(), null);\r
-                       jPanel5.add(getJCheckBox6(), null);\r
-                       jPanel5.add(getJCheckBox7(), null);\r
-                       jPanel5.add(getJCheckBox8(), null);\r
-                       jPanel5.add(getJCheckBox9(), null);\r
-                       jPanel5.add(getJCheckBox10(), null);\r
-                       jPanel5.add(getJCheckBox11(), null);\r
-                       jPanel5.add(getJCheckBox12(), null);\r
-                       jPanel5.add(getJCheckBox13(), null);\r
-            jPanel5.add(getJButton4(), null);\r
                        jPanel5.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.LOWERED));\r
+                       jPanel5.add(getJCheckBox3(), null);\r
+                       jPanel5.add(jLabel5, null);\r
+                       jPanel5.add(getJTextField4(), null);\r
+                       jPanel5.add(jLabel6, null);\r
+                       jPanel5.add(getJTextField5(), null);\r
+                       jPanel5.add(getJScrollPane(), null);\r
+                       jPanel5.add(getJPanel8(), null);\r
+                       jPanel5.add(getJButton4(), null);\r
                        jPanel5.add(getJButton6(), null);\r
+                       jPanel5.add(getJButton9(), null);\r
             \r
             \r
                                \r
@@ -775,11 +767,22 @@ public class FpdFlash extends IInternalFrame {
     private JButton getJButton4() {\r
         if (jButton4 == null) {\r
             jButton4 = new JButton();\r
-            jButton4.setPreferredSize(new java.awt.Dimension(80,20));\r
+            jButton4.setPreferredSize(new java.awt.Dimension(120,20));\r
 //            jButton4.setEnabled(false);\r
             jButton4.setText("Add FV Image");\r
             jButton4.addActionListener(new AbstractAction() {\r
+                /**\r
+                 * \r
+                 */\r
+                private static final long serialVersionUID = 1L;\r
+\r
                 public void actionPerformed(java.awt.event.ActionEvent e) {\r
+                    if (jTable2.isEditing()) {\r
+                        jTable2.getCellEditor().stopCellEditing();\r
+                    }\r
+                    if (jTable3.isEditing()) {\r
+                        jTable3.getCellEditor().stopCellEditing();\r
+                    }\r
                     if (jTable1.getRowCount()== 0){\r
                         return;\r
                     }\r
@@ -795,22 +798,15 @@ public class FpdFlash extends IInternalFrame {
                       \r
                     }\r
                     \r
-                    LinkedHashMap<String, String> m = new LinkedHashMap<String, String>();\r
-                    boolean[] boolArray = {jComboBox1.getSelectedIndex()==0 ? true: false, jCheckBox6.isSelected(), jCheckBox9.isSelected(),\r
-                                                                            jCheckBox11.isSelected(), jCheckBox12.isSelected(),\r
-                                                                            jCheckBox13.isSelected(),jCheckBox4.isSelected(),\r
-                                                                            jCheckBox5.isSelected(), jCheckBox7.isSelected(),\r
-                                                                            jCheckBox8.isSelected(),jCheckBox10.isSelected()};\r
-                    booleanToNameValue(boolArray, m);\r
+                    LinkedHashMap<String, String> m = null;\r
+                    if (jCheckBox3.isSelected()) {\r
+                        m = new LinkedHashMap<String, String>();\r
+                        getOptionNameValue(m);\r
+                    }\r
                     ffc.genFvImagesFvImage(imageName.split(" "), jComboBox.getSelectedItem()+"", m);\r
-                    \r
-                    Object[] o = {imageName, jComboBox.getSelectedItem(), jComboBox1.getSelectedIndex()==0 ? true: false, \r
-                                  jCheckBox6.isSelected(), jCheckBox9.isSelected(),\r
-                                  jCheckBox11.isSelected(), jCheckBox12.isSelected(),\r
-                                  jCheckBox13.isSelected(),jCheckBox4.isSelected(),\r
-                                  jCheckBox5.isSelected(), jCheckBox7.isSelected(),\r
-                                  jCheckBox8.isSelected(),jCheckBox10.isSelected()};\r
-                   fvImageParaTableModel.addRow(o); \r
+                    docConsole.setSaved(false);\r
+                    Object[] row = {imageName, jComboBox.getSelectedItem()};\r
+                    fvImageParaTableModel.addRow(row); \r
                 }\r
             });\r
         }\r
@@ -842,20 +838,9 @@ public class FpdFlash extends IInternalFrame {
         if (jTable2 == null) {\r
             fvImageParaTableModel = new ImageParaTableModel();\r
             jTable2 = new JTable(fvImageParaTableModel);\r
-            jTable2.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
             fvImageParaTableModel.addColumn("FvImageNames");\r
             fvImageParaTableModel.addColumn("Type");\r
-            fvImageParaTableModel.addColumn("ErasePolarity");\r
-            fvImageParaTableModel.addColumn("ReadStatus");\r
-            fvImageParaTableModel.addColumn("WriteStatus");\r
-            fvImageParaTableModel.addColumn("LockStatus");\r
-            fvImageParaTableModel.addColumn("MemoryMapped");\r
-            fvImageParaTableModel.addColumn("StickyWrite");\r
-            fvImageParaTableModel.addColumn("ReadDisableCap");\r
-            fvImageParaTableModel.addColumn("ReadEnableCap");\r
-            fvImageParaTableModel.addColumn("WriteDisableCap");\r
-            fvImageParaTableModel.addColumn("WriteEnableCap");\r
-            fvImageParaTableModel.addColumn("LockCap");\r
+            \r
             \r
             TableColumn typeCol = jTable2.getColumnModel().getColumn(1);\r
             JComboBox cb = new JComboBox();\r
@@ -865,11 +850,6 @@ public class FpdFlash extends IInternalFrame {
             cb.addItem("Components");\r
             typeCol.setCellEditor(new DefaultCellEditor(cb));\r
             \r
-//            TableColumn epCol = jTable2.getColumnModel().getColumn(2);\r
-//            JComboBox cb1 = new JComboBox();\r
-//            cb1.addItem("1");\r
-//            cb1.addItem("0");\r
-//            epCol.setCellEditor(new DefaultCellEditor(cb1));\r
             jTable2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
             jTable2.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
                 public void valueChanged(ListSelectionEvent e) {\r
@@ -881,31 +861,27 @@ public class FpdFlash extends IInternalFrame {
                         return;\r
                     }\r
                     else{\r
-//                        selectedRow = lsm.getMinSelectionIndex();\r
-                    }\r
-                }\r
-            });\r
-            \r
-            jTable2.getModel().addTableModelListener(new TableModelListener(){\r
-                public void tableChanged(TableModelEvent arg0) {\r
-                    // TODO Auto-generated method stub\r
-                    int row = arg0.getFirstRow();\r
-                    TableModel m = (TableModel)arg0.getSource();\r
-                    if (arg0.getType() == TableModelEvent.UPDATE){\r
-                        //ToDo Check data validity before update\r
-                        String name = m.getValueAt(row, 0) + "";\r
-                        String type = m.getValueAt(row, 1) + "";\r
-                        boolean[] boolArray = new boolean[11];\r
-                        for (int i = 2; i < 13; ++i) {\r
-                            boolArray[i-2] = (Boolean)m.getValueAt(row, i);\r
+                        int selectedRow = lsm.getMinSelectionIndex();\r
+                        LinkedHashMap<String, String> optionMap = new LinkedHashMap<String, String>();\r
+                        ffc.getFvImagesFvImageOptions(selectedRow, 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
+                                \r
+                                String k = (String)i.next();\r
+                                String[] row = {k, optionMap.get(k)};\r
+                                \r
+                                fvOptionTableModel.addRow(row);\r
+                            }\r
                         }\r
-                        LinkedHashMap<String, String> lhm = new LinkedHashMap<String, String>();\r
-                        booleanToNameValue(boolArray, lhm);\r
-\r
-                        ffc.updateFvImagesFvImage(row, name.split(" "), type, lhm);\r
+                        \r
                     }\r
                 }\r
             });\r
+            \r
+            \r
         }\r
         return jTable2;\r
     }\r
@@ -919,16 +895,21 @@ public class FpdFlash extends IInternalFrame {
     private JButton getJButton6() {\r
         if (jButton6 == null) {\r
             jButton6 = new JButton();\r
-            jButton6.setPreferredSize(new java.awt.Dimension(150,20));\r
+            jButton6.setPreferredSize(new java.awt.Dimension(120,20));\r
 //            jButton6.setEnabled(false);\r
             jButton6.setText("Delete Row");\r
             jButton6.addActionListener(new AbstractAction() {\r
+                /**\r
+                 * \r
+                 */\r
+                private static final long serialVersionUID = 1L;\r
 \r
                 public void actionPerformed(ActionEvent arg0) {\r
                     // TODO Auto-generated method stub\r
                     if (jTable2.getSelectedRow() >= 0 ) {\r
-                        fvImageParaTableModel.removeRow(jTable2.getSelectedRow());\r
                         ffc.removeFvImagesFvImage(jTable2.getSelectedRow());\r
+                        fvImageParaTableModel.removeRow(jTable2.getSelectedRow());\r
+                        docConsole.setSaved(false);\r
                     }\r
                 }\r
                 \r
@@ -951,27 +932,19 @@ public class FpdFlash extends IInternalFrame {
 \r
                 public void itemStateChanged(ItemEvent arg0) {\r
                     // TODO Auto-generated method stub\r
-                    boolean seleted = jCheckBox3.isSelected();\r
+//                    boolean selected = jCheckBox3.isSelected();\r
                     \r
                         if (!jCheckBox2.isSelected() || jComboBox.getSelectedIndex() == 0) {\r
                             return;\r
                         }\r
                         \r
-                        jLabel5.setEnabled(seleted);\r
-                        jComboBox1.setEnabled(seleted);\r
-                        \r
-                        jCheckBox4.setEnabled(seleted);\r
-                        jCheckBox5.setEnabled(seleted);\r
-                        jCheckBox6.setEnabled(seleted);\r
-                        jCheckBox7.setEnabled(seleted);\r
-                        jCheckBox8.setEnabled(seleted);\r
-                        jCheckBox9.setEnabled(seleted);\r
-                        jCheckBox10.setEnabled(seleted);\r
-                        jCheckBox11.setEnabled(seleted);\r
-                        jCheckBox12.setEnabled(seleted);\r
-                        jCheckBox13.setEnabled(seleted);\r
-//                        jButton4.setEnabled(seleted);\r
-//                        jButton6.setEnabled(seleted);\r
+//                        jLabel5.setEnabled(selected);\r
+//                        jTextField4.setEnabled(selected);\r
+//                        jLabel6.setEnabled(selected);\r
+//                        jTextField5.setEnabled(selected);\r
+//                        jButton7.setEnabled(selected);\r
+//                        jButton8.setEnabled(selected);\r
+\r
                 }\r
                 \r
             });\r
@@ -980,174 +953,6 @@ public class FpdFlash extends IInternalFrame {
     }\r
 \r
 \r
-    /**\r
-     * This method initializes jComboBox1      \r
-     *         \r
-     * @return javax.swing.JComboBox   \r
-     */\r
-    private JComboBox getJComboBox1() {\r
-        if (jComboBox1 == null) {\r
-            jComboBox1 = new JComboBox();\r
-            jComboBox1.setPreferredSize(new java.awt.Dimension(20,20));\r
-            jComboBox1.setEnabled(false);\r
-            jComboBox1.addItem("1");\r
-            jComboBox1.addItem("0");\r
-            jComboBox1.setSelectedIndex(0);\r
-        }\r
-        return jComboBox1;\r
-    }\r
-\r
-\r
-    /**\r
-     * This method initializes jCheckBox4      \r
-     *         \r
-     * @return javax.swing.JCheckBox   \r
-     */\r
-    private JCheckBox getJCheckBox4() {\r
-        if (jCheckBox4 == null) {\r
-            jCheckBox4 = new JCheckBox();\r
-            jCheckBox4.setText("Read Disable CAP");\r
-            jCheckBox4.setEnabled(false);\r
-        }\r
-        return jCheckBox4;\r
-    }\r
-\r
-\r
-    /**\r
-     * This method initializes jCheckBox5      \r
-     *         \r
-     * @return javax.swing.JCheckBox   \r
-     */\r
-    private JCheckBox getJCheckBox5() {\r
-        if (jCheckBox5 == null) {\r
-            jCheckBox5 = new JCheckBox();\r
-            jCheckBox5.setText("Read Enable CAP");\r
-            jCheckBox5.setEnabled(false);\r
-        }\r
-        return jCheckBox5;\r
-    }\r
-\r
-\r
-    /**\r
-     * This method initializes jCheckBox6      \r
-     *         \r
-     * @return javax.swing.JCheckBox   \r
-     */\r
-    private JCheckBox getJCheckBox6() {\r
-        if (jCheckBox6 == null) {\r
-            jCheckBox6 = new JCheckBox();\r
-            jCheckBox6.setText("Read Status");\r
-            jCheckBox6.setEnabled(false);\r
-        }\r
-        return jCheckBox6;\r
-    }\r
-\r
-\r
-    /**\r
-     * This method initializes jCheckBox7      \r
-     *         \r
-     * @return javax.swing.JCheckBox   \r
-     */\r
-    private JCheckBox getJCheckBox7() {\r
-        if (jCheckBox7 == null) {\r
-            jCheckBox7 = new JCheckBox();\r
-            jCheckBox7.setText("Write Disable CAP");\r
-            jCheckBox7.setEnabled(false);\r
-        }\r
-        return jCheckBox7;\r
-    }\r
-\r
-\r
-    /**\r
-     * This method initializes jCheckBox8      \r
-     *         \r
-     * @return javax.swing.JCheckBox   \r
-     */\r
-    private JCheckBox getJCheckBox8() {\r
-        if (jCheckBox8 == null) {\r
-            jCheckBox8 = new JCheckBox();\r
-            jCheckBox8.setText("Write Enable CAP");\r
-            jCheckBox8.setEnabled(false);\r
-        }\r
-        return jCheckBox8;\r
-    }\r
-\r
-\r
-    /**\r
-     * This method initializes jCheckBox9      \r
-     *         \r
-     * @return javax.swing.JCheckBox   \r
-     */\r
-    private JCheckBox getJCheckBox9() {\r
-        if (jCheckBox9 == null) {\r
-            jCheckBox9 = new JCheckBox();\r
-            jCheckBox9.setText("Write Status");\r
-            jCheckBox9.setEnabled(false);\r
-        }\r
-        return jCheckBox9;\r
-    }\r
-\r
-\r
-    /**\r
-     * This method initializes jCheckBox10     \r
-     *         \r
-     * @return javax.swing.JCheckBox   \r
-     */\r
-    private JCheckBox getJCheckBox10() {\r
-        if (jCheckBox10 == null) {\r
-            jCheckBox10 = new JCheckBox();\r
-            jCheckBox10.setText("Lock CAP");\r
-            jCheckBox10.setEnabled(false);\r
-        }\r
-        return jCheckBox10;\r
-    }\r
-\r
-\r
-    /**\r
-     * This method initializes jCheckBox11     \r
-     *         \r
-     * @return javax.swing.JCheckBox   \r
-     */\r
-    private JCheckBox getJCheckBox11() {\r
-        if (jCheckBox11 == null) {\r
-            jCheckBox11 = new JCheckBox();\r
-            jCheckBox11.setText("Lock Status");\r
-            jCheckBox11.setEnabled(false);\r
-        }\r
-        return jCheckBox11;\r
-    }\r
-\r
-\r
-    /**\r
-     * This method initializes jCheckBox12     \r
-     *         \r
-     * @return javax.swing.JCheckBox   \r
-     */\r
-    private JCheckBox getJCheckBox12() {\r
-        if (jCheckBox12 == null) {\r
-            jCheckBox12 = new JCheckBox();\r
-            jCheckBox12.setText("Memory Mapped");\r
-            jCheckBox12.setEnabled(false);\r
-        }\r
-        return jCheckBox12;\r
-    }\r
-\r
-\r
-    /**\r
-     * This method initializes jCheckBox13     \r
-     *         \r
-     * @return javax.swing.JCheckBox   \r
-     */\r
-    private JCheckBox getJCheckBox13() {\r
-        if (jCheckBox13 == null) {\r
-            jCheckBox13 = new JCheckBox();\r
-            jCheckBox13.setText("Sticky Write");\r
-            jCheckBox13.setEnabled(false);\r
-        }\r
-        return jCheckBox13;\r
-    }\r
-\r
-\r
     /**\r
      * This method initializes jPanel6 \r
      *         \r
@@ -1242,6 +1047,11 @@ public class FpdFlash extends IInternalFrame {
             jTextField3 = new JTextField();\r
             jTextField3.setEnabled(false);\r
             jTextField3.setPreferredSize(new Dimension(300, 20));\r
+            jTextField3.addFocusListener(new java.awt.event.FocusAdapter() {\r
+                public void focusLost(java.awt.event.FocusEvent e) {\r
+                    ffc.genFlashDefinitionFile(jTextField3.getText());\r
+                }\r
+            });\r
         }\r
         return jTextField3;\r
     }\r
@@ -1258,16 +1068,27 @@ public class FpdFlash extends IInternalFrame {
             jButton5.setText("Browse");\r
             jButton5.setPreferredSize(new Dimension(78, 20));\r
             jButton5.addActionListener(new AbstractAction(){\r
+                /**\r
+                 * \r
+                 */\r
+                private static final long serialVersionUID = 1L;\r
+\r
                 public void actionPerformed(ActionEvent e) {\r
                     // TODO Auto-generated method stub\r
-                    JFileChooser chooser = new JFileChooser();\r
+                    String wsDir = System.getenv("WORKSPACE");\r
+                    JFileChooser chooser = new JFileChooser(wsDir);\r
                     chooser.setMultiSelectionEnabled(false);\r
                     chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);\r
                     int retval = chooser.showOpenDialog(frame);\r
                     if (retval == JFileChooser.APPROVE_OPTION) {\r
 \r
                         File theFile = chooser.getSelectedFile();\r
-                        jTextField3.setText(theFile.getPath());\r
+                        String filePath = theFile.getPath();\r
+                        if (!filePath.startsWith(wsDir)) {\r
+                            JOptionPane.showMessageDialog(frame, "You can only select files in current WORKSPACE.");\r
+                            return;\r
+                        }\r
+                        jTextField3.setText(filePath.substring(wsDir.length() + 1).replace('\\', '/'));\r
                     }\r
                 }\r
                 \r
@@ -1276,6 +1097,174 @@ public class FpdFlash extends IInternalFrame {
         return jButton5;\r
     }\r
 \r
+    /**\r
+     * This method initializes jTextField4     \r
+     *         \r
+     * @return javax.swing.JTextField  \r
+     */\r
+    private JTextField getJTextField4() {\r
+        if (jTextField4 == null) {\r
+            jTextField4 = new JTextField();\r
+            jTextField4.setEnabled(true);\r
+            jTextField4.setPreferredSize(new Dimension(100, 20));\r
+        }\r
+        return jTextField4;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jTextField5     \r
+     *         \r
+     * @return javax.swing.JTextField  \r
+     */\r
+    private JTextField getJTextField5() {\r
+        if (jTextField5 == null) {\r
+            jTextField5 = new JTextField();\r
+            jTextField5.setEnabled(true);\r
+            jTextField5.setPreferredSize(new Dimension(100, 20));\r
+        }\r
+        return jTextField5;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jPanel8 \r
+     *         \r
+     * @return javax.swing.JPanel      \r
+     */\r
+    private JPanel getJPanel8() {\r
+        if (jPanel8 == null) {\r
+            jPanel8 = new JPanel();\r
+            jPanel8.setPreferredSize(new Dimension(80, 55));\r
+            jPanel8.add(getJButton7(), null);\r
+            jPanel8.add(getJButton8(), null);\r
+        }\r
+        return jPanel8;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jButton7        \r
+     *         \r
+     * @return javax.swing.JButton     \r
+     */\r
+    private JButton getJButton7() {\r
+        if (jButton7 == null) {\r
+            jButton7 = new JButton();\r
+            jButton7.setEnabled(true);\r
+            jButton7.setText("Add");\r
+            jButton7.setPreferredSize(new Dimension(80, 20));\r
+            jButton7.addActionListener(new AbstractAction() {\r
+                /**\r
+                 * \r
+                 */\r
+                private static final long serialVersionUID = 1L;\r
+\r
+                public void actionPerformed(ActionEvent e) {\r
+                    if (jTextField4.getText().length() > 0 && jTextField5.getText().length() > 0){\r
+                        String[] row = {jTextField4.getText(), jTextField5.getText()};                        \r
+                        fvOptionTableModel.addRow(row);\r
+                    }\r
+                }\r
+            });\r
+        }\r
+        return jButton7;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jButton8        \r
+     *         \r
+     * @return javax.swing.JButton     \r
+     */\r
+    private JButton getJButton8() {\r
+        if (jButton8 == null) {\r
+            jButton8 = new JButton();\r
+            jButton8.setEnabled(true);\r
+            jButton8.setText("Delete");\r
+            jButton8.setPreferredSize(new Dimension(80, 20));\r
+            jButton8.addActionListener(new AbstractAction() {\r
+                /**\r
+                 * \r
+                 */\r
+                private static final long serialVersionUID = 1L;\r
+\r
+                public void actionPerformed(ActionEvent e) {\r
+                    if (jTable3.getSelectedRow() >= 0){\r
+                        fvOptionTableModel.removeRow(jTable.getSelectedRow());\r
+                    }\r
+                }\r
+            });\r
+        }\r
+        return jButton8;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jScrollPane     \r
+     *         \r
+     * @return javax.swing.JScrollPane \r
+     */\r
+    private JScrollPane getJScrollPane() {\r
+        if (jScrollPane == null) {\r
+            jScrollPane = new JScrollPane();\r
+            jScrollPane.setPreferredSize(new java.awt.Dimension(350,80));\r
+            jScrollPane.setViewportView(getJTable3());\r
+        }\r
+        return jScrollPane;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jTable3 \r
+     *         \r
+     * @return javax.swing.JTable      \r
+     */\r
+    private JTable getJTable3() {\r
+        if (jTable3 == null) {\r
+            fvOptionTableModel = new DefaultTableModel();\r
+            fvOptionTableModel.addColumn("Name");\r
+            fvOptionTableModel.addColumn("Value");\r
+            jTable3 = new JTable(fvOptionTableModel);\r
+\r
+            jTable3.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+            jTable3.setRowHeight(20);\r
+            \r
+        }\r
+        return jTable3;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jButton9        \r
+     *         \r
+     * @return javax.swing.JButton     \r
+     */\r
+    private JButton getJButton9() {\r
+        if (jButton9 == null) {\r
+            jButton9 = new JButton();\r
+            jButton9.setPreferredSize(new Dimension(120, 20));\r
+            jButton9.setActionCommand("Update");\r
+            jButton9.setText("Update FV");\r
+            jButton9.addActionListener(new java.awt.event.ActionListener() {\r
+                public void actionPerformed(java.awt.event.ActionEvent e) {\r
+                    int row = jTable2.getSelectedRow();\r
+                    if (jTable2.isEditing()) {\r
+                        jTable2.getCellEditor().stopCellEditing();\r
+                    }\r
+                    if (jTable3.isEditing()) {\r
+                        jTable3.getCellEditor().stopCellEditing();\r
+                    }\r
+                    \r
+                        //ToDo Check data validity before update\r
+                        String name = fvImageParaTableModel.getValueAt(row, 0) + "";\r
+                        String type = fvImageParaTableModel.getValueAt(row, 1) + "";\r
+                        \r
+                        LinkedHashMap<String, String> lhm = new LinkedHashMap<String, String>();\r
+                        getOptionNameValue(lhm);\r
+                        \r
+                        docConsole.setSaved(false);\r
+                        ffc.updateFvImagesFvImage(row, name.split(" "), type, lhm);\r
+                    \r
+                }\r
+            });\r
+        }\r
+        return jButton9;\r
+    }\r
+\r
     /**\r
      * @param args\r
      */\r
@@ -1294,6 +1283,19 @@ public class FpdFlash extends IInternalFrame {
         this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);\r
         this.setContentPane(getJContentPane());\r
         this.setTitle("FPD Flash Definitions");\r
+        this.addInternalFrameListener(new InternalFrameAdapter(){\r
+            public void internalFrameDeactivated(InternalFrameEvent e){\r
+                if (jTable.isEditing()) {\r
+                    jTable.getCellEditor().stopCellEditing();\r
+                }\r
+                if (jTable1.isEditing()) {\r
+                    jTable1.getCellEditor().stopCellEditing();\r
+                }\r
+                if (jTable2.isEditing()) {\r
+                    jTable2.getCellEditor().stopCellEditing();\r
+                }\r
+            }\r
+        });\r
     }\r
 \r
     private void init(FpdFileContents ffc) {\r
@@ -1301,145 +1303,30 @@ public class FpdFlash extends IInternalFrame {
             return;\r
         }\r
         String[][] saa = new String[ffc.getFvImagesFvImageCount()][2];\r
-        ArrayList<LinkedHashMap<String, String>> options = new ArrayList<LinkedHashMap<String, String>>(ffc.getFvImagesFvImageCount());\r
-\r
-        for (int j = 0; j < ffc.getFvImagesFvImageCount(); ++j){\r
-            options.add(new LinkedHashMap<String, String>());\r
-        }\r
-        ffc.getFvImagesFvImages(saa, options);\r
+//        ArrayList<LinkedHashMap<String, String>> options = new ArrayList<LinkedHashMap<String, String>>(ffc.getFvImagesFvImageCount());\r
+//\r
+//        for (int j = 0; j < ffc.getFvImagesFvImageCount(); ++j){\r
+//            options.add(new LinkedHashMap<String, String>());\r
+//        }\r
+        ffc.getFvImagesFvImages(saa);\r
         \r
-        Object[] rowData = new Object[13];\r
+       \r
         int i = 0;\r
-        Boolean f = new Boolean("false");\r
         while (i < saa.length) {\r
-            rowData[0] = saa[i][0];\r
-            rowData[1] = saa[i][1];\r
             \r
-            \r
-            //ToDo: add alignment settings\r
-            Boolean[] boolArray = new Boolean[11];\r
-            int k = 0;\r
-            while (k < 11){\r
-                boolArray[k] = f;\r
-                ++k;\r
-            }\r
-            namevalueToBoolean(options.get(i), boolArray);\r
-            for (k = 2; k < 13; ++k) {\r
-                rowData[k] = boolArray[k-2];\r
-            }\r
-            fvImageParaTableModel.addRow(rowData);\r
+            fvImageParaTableModel.addRow(saa[i]);\r
             ++i;\r
         }\r
+        \r
+//        String fdfFile = ffc.getFlashDefinitionFile();\r
+//        if (fdfFile != null) {\r
+//            jTextField3.setText(fdfFile);\r
+//        }\r
     }\r
     \r
-    private void namevalueToBoolean(Map<String, String> m, Boolean[] boolArray){\r
-        Set<String> key = m.keySet();\r
-        Iterator<String> ki= key.iterator();\r
-        Boolean t = new Boolean("true");\r
-        while(ki.hasNext()) {\r
-            String k = ki.next();\r
-            if (k.equals("EFI_ERASE_POLARITY") && m.get(k).equals("1")) {\r
-                boolArray[0] = t;\r
-            }\r
-            if (k.equals("EFI_READ_STATUS") && m.get(k).equals("1")) {\r
-                boolArray[1] = t;\r
-            }\r
-            if (k.equals("EFI_WRITE_STATUS") && m.get(k).equals("1")) {\r
-                boolArray[2] = t;\r
-            }\r
-            if (k.equals("EFI_LOCK_STATUS") && m.get(k).equals("1")) {\r
-                boolArray[3] = t;\r
-            }\r
-            if (k.equals("EFI_MEMORY_MAPPED") && m.get(k).equals("1")) {\r
-                boolArray[4] = t;\r
-            }\r
-            if (k.equals("EFI_STICKY_WRITE") && m.get(k).equals("1")) {\r
-                boolArray[5] = t;\r
-            }\r
-            if (k.equals("EFI_READ_DISABLED_CAP") && m.get(k).equals("1")) {\r
-                boolArray[6] = t;\r
-            }\r
-            if (k.equals("EFI_READ_ENABLED_CAP") && m.get(k).equals("1")) {\r
-                boolArray[7] = t;\r
-            }\r
-            if (k.equals("EFI_WRITE_DISABLED_CAP") && m.get(k).equals("1")) {\r
-                boolArray[8] = t;\r
-            }\r
-            if (k.equals("EFI_WRITE_ENABLED_CAP") && m.get(k).equals("1")) {\r
-                boolArray[9] = t;\r
-            }\r
-            if (k.equals("EFI_LOCK_CAP") && m.get(k).equals("1")) {\r
-                boolArray[10] = t;\r
-            }\r
-        }\r
-    }\r
-    \r
-    private void booleanToNameValue(boolean[] boolArray, Map<String, String> m){\r
-        if (boolArray[0]) {\r
-            m.put("EFI_ERASE_POLARITY", "1");\r
-        }\r
-        else {\r
-            m.put("EFI_ERASE_POLARITY", "0");\r
-        }\r
-        if (boolArray[1]) {\r
-            m.put("EFI_READ_STATUS", "1");\r
-        }\r
-        else {\r
-            m.put("EFI_READ_STATUS", "0");\r
-        }\r
-        if (boolArray[2]) {\r
-            m.put("EFI_WRITE_STATUS", "1");\r
-        }\r
-        else {\r
-            m.put("EFI_WRITE_STATUS", "0");\r
-        }\r
-        if (boolArray[3]) {\r
-            m.put("EFI_LOCK_STATUS", "1");\r
-        }\r
-        else {\r
-            m.put("EFI_LOCK_STATUS", "0");\r
-        }\r
-        if (boolArray[4]) {\r
-            m.put("EFI_MEMORY_MAPPED", "1");\r
-        }\r
-        else {\r
-            m.put("EFI_MEMORY_MAPPED", "0");\r
-        }\r
-        if (boolArray[5]) {\r
-            m.put("EFI_STICKY_WRITE", "1");\r
-        }\r
-        else {\r
-            m.put("EFI_STICKY_WRITE", "0");\r
-        }\r
-        if (boolArray[6]) {\r
-            m.put("EFI_READ_DISABLED_CAP", "1");\r
-        }\r
-        else {\r
-            m.put("EFI_READ_DISABLED_CAP", "0");\r
-        }\r
-        if (boolArray[7]) {\r
-            m.put("EFI_READ_ENABLED_CAP", "1");\r
-        }\r
-        else {\r
-            m.put("EFI_READ_ENABLED_CAP", "0");\r
-        }\r
-        if (boolArray[8]) {\r
-            m.put("EFI_WRITE_DISABLED_CAP", "1");\r
-        }\r
-        else {\r
-            m.put("EFI_WRITE_DISABLED_CAP", "0");\r
-        }\r
-        if (boolArray[9]) {\r
-            m.put("EFI_WRITE_ENABLED_CAP", "1");\r
-        }\r
-        else {\r
-            m.put("EFI_WRITE_ENABLED_CAP", "0");\r
-        }\r
-        if (boolArray[10]) {\r
-            m.put("EFI_LOCK_CAP", "1");\r
-        }\r
-        else {\r
-            m.put("EFI_LOCK_CAP", "0");\r
+    private void getOptionNameValue(Map<String, String> m){\r
+        for (int i = 0; i < jTable3.getRowCount(); ++i) {\r
+            m.put(fvOptionTableModel.getValueAt(i, 0)+"", fvOptionTableModel.getValueAt(i, 1)+"");\r
         }\r
     }\r
     /**\r
@@ -1464,7 +1351,13 @@ public class FpdFlash extends IInternalFrame {
 \r
 class ImageParaTableModel extends DefaultTableModel {\r
 \r
-    public Class getColumnClass (int c) {\r
-        return getValueAt(0, c).getClass();\r
+    private static final long serialVersionUID = 1L;\r
+    \r
+   public boolean isCellEditable(int row, int col) {\r
+        if (getValueAt(row, 1).equals("ImageName") && col >=1) {\r
+            return false;\r
+        }\r
+        return true;\r
     }\r
 }\r
+\r