]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdBuildOptions.java
UI rearrangement for build options and moduleSa settings.
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / platform / ui / FpdBuildOptions.java
index af0c95cadd394ad61e7ccc864925a2f6d07fa130..f292d38c1cdb6b6f34180c2447ac17bba1db8a80 100644 (file)
@@ -26,6 +26,9 @@ import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;\r
 \r
 import javax.swing.DefaultCellEditor;\r
+import javax.swing.JFileChooser;\r
+import javax.swing.JFrame;\r
+import javax.swing.JOptionPane;\r
 import javax.swing.JTextField;\r
 import javax.swing.JButton;\r
 import javax.swing.JScrollPane;\r
@@ -39,38 +42,43 @@ import javax.swing.event.ListSelectionListener;
 import javax.swing.event.TableModelEvent;\r
 import javax.swing.event.TableModelListener;\r
 import javax.swing.table.DefaultTableModel;\r
-import javax.swing.table.TableColumn;\r
 import javax.swing.table.TableModel;\r
 \r
 import org.tianocore.PlatformSurfaceAreaDocument;\r
+import org.tianocore.frameworkwizard.common.DataValidation;\r
+import org.tianocore.frameworkwizard.common.Identifications.OpeningPlatformType;\r
 import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
+\r
+import java.io.File;\r
 import java.util.ArrayList;\r
 import java.util.Iterator;\r
 import java.util.LinkedHashMap;\r
 import java.util.Set;\r
 import java.util.Vector;\r
+import java.awt.Dimension;\r
+import javax.swing.JSplitPane;\r
 \r
 public class FpdBuildOptions extends IInternalFrame {\r
 \r
     private static final long serialVersionUID = 1L;\r
+    static JFrame frame;\r
     private JPanel jContentPane = null;\r
-    private JPanel jPanel = null;\r
-    private JPanel jPanel1 = null;\r
-    private JPanel jPanel2 = null;\r
-    private JPanel jPanel3 = null;\r
+    private JPanel jPanelContentSouth = null;\r
+    private JPanel jPanelContentNorth = null;\r
+    private JPanel jPanelContentWest = null;\r
+    private JPanel jPanelContentEast = null;\r
     private JTabbedPane jTabbedPane = null;\r
-    private JPanel jPanel8 = null;\r
-    private JPanel jPanel9 = null;\r
-    private JPanel jPanel10 = null;\r
-    private JPanel jPanel11 = null;\r
-    private JTextField jTextField2 = null;\r
-    private JLabel jLabel3 = null;\r
-    private JTextField jTextField3 = null;\r
-    private JButton jButton4 = null;\r
-    private JButton jButton5 = null;\r
-    private JTextField jTextField4 = null;\r
-    private JScrollPane jScrollPane2 = null;\r
-    private JTable jTable2 = null;\r
+    private JPanel jPanelUserDef = null;\r
+    private JPanel jPanelUserDefNorth = null;\r
+    private JPanel jPanelUserDefCenter = null;\r
+    private JTextField jTextFieldAntTaskFile = null;\r
+    private JLabel jLabelAntTaskId = null;\r
+    private JTextField jTextFieldAntTaskId = null;\r
+    private JButton jButtonAntTaskAdd = null;\r
+    private JButton jButtonAntTaskDel = null;\r
+    private JTextField jTextFieldAntCmdOpts = null;\r
+    private JScrollPane jScrollPaneAntTasks = null;\r
+    private JTable jTableAntTasks = null;\r
     private DefaultTableModel ffsTableModel = null;\r
     private DefaultTableModel sectionsTableModel = null;\r
     private DefaultTableModel sectionTableModel = null;\r
@@ -78,78 +86,91 @@ public class FpdBuildOptions extends IInternalFrame {
     private DefaultTableModel antTaskTableModel = null;\r
     private DefaultTableModel ffsAttributesTableModel = null;\r
     private DefaultTableModel optionsTableModel = null;\r
-    private JPanel jPanel13 = null;\r
-    private JPanel jPanel18 = null;\r
-    private JPanel jPanel15 = null;\r
-    private JPanel jPanel16 = null;\r
-    private JPanel jPanel17 = null;\r
-    private JLabel jLabel7 = null;\r
-    private JTextField jTextField6 = null;\r
-    private JButton jButton8 = null;\r
-    private JButton jButton9 = null;\r
-    private JScrollPane jScrollPane5 = null;\r
-    private JTable jTable4 = null;\r
-    private JPanel jPanel19 = null;\r
-    private JPanel jPanel20 = null;\r
-    private JLabel jLabel9 = null;\r
-    private JTextField jTextField7 = null;\r
-    private JLabel jLabel10 = null;\r
-    private JComboBox jComboBox2 = null;\r
-    private JLabel jLabel11 = null;\r
-    private JLabel jLabel12 = null;\r
-    private JTextField jTextField8 = null;\r
-    private JScrollPane jScrollPane6 = null;\r
-    private JTable jTable5 = null;\r
-    private JButton jButton10 = null;\r
-    private JButton jButton11 = null;\r
-    private JButton jButton17 = null;\r
-    private JButton jButton18 = null;\r
+    private JPanel jPanelFfsTab = null;\r
+    private JPanel jPanelFfsTabCenter = null;\r
+    private JPanel jPanelFfsTabCenterN = null;\r
+    private JPanel jPanelFfsTabCenterS = null;\r
+    private JLabel jLabelFfsKey = null;\r
+    private JTextField jTextFieldFfsKey = null;\r
+    private JButton jButtonFfsAdd = null;\r
+    private JButton jButtonFfsDel = null;\r
+    private JScrollPane jScrollPaneFfsAttribs = null;\r
+    private JTable jTableFfsAttribs = null;\r
+    private JPanel jPanelOptionsTab = null;\r
+    private JLabel jLabelOptionContents = null;\r
+    private JTextField jTextFieldOptionContents = null;\r
+    private JLabel jLabelToolChainFamily = null;\r
+    private JLabel jLabelSupArch = null;\r
+    private JLabel jLabelToolCmd = null;\r
+    private JTextField jTextFieldToolCmd = null;\r
+    private JScrollPane jScrollPaneOptions = null;\r
+    private JTable jTableOptions = null;\r
+    private JButton jButtonOptionsAdd = null;\r
+    private JButton jButtonOptionsDel = null;\r
+    private JButton jButtonFfsAttribNew = null;\r
+    private JButton jButtonFfsAttribRemove = null;\r
     private FpdFileContents ffc = null;\r
-    private JButton jButton19 = 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 JCheckBox jCheckBox14 = null;\r
-    private JLabel jLabel14 = null;\r
-    private JTextField jTextField12 = null;\r
-    private JTextField jTextField13 = null;\r
-    private JLabel jLabel15 = null;\r
+    private OpeningPlatformType docConsole = null;\r
+    private JCheckBox jCheckBoxIA32 = null;\r
+    private JCheckBox jCheckBoxIpf = null;\r
+    private JCheckBox jCheckBoxX64 = null;\r
+    private JCheckBox jCheckBoxEBC = null;\r
+    private JCheckBox jCheckBoxARM = null;\r
+    private JCheckBox jCheckBoxPPC = null;\r
+    private JLabel jLabelBuildTargets = null;\r
+    private JTextField jTextFieldBuildTargets = null;\r
+    private JTextField jTextFieldTagName = null;\r
+    private JLabel jLabelTagName = null;\r
     private int selectedRow = -1;\r
-    private JLabel jLabel = null;\r
-    private JLabel jLabel1 = null;\r
-    private JScrollPane jScrollPane = null;\r
-    private JTable jTable = null;\r
-    private JLabel jLabel2 = null;\r
-    private JScrollPane jScrollPane1 = null;\r
-    private JTable jTable1 = null;\r
-    private JLabel jLabel4 = null;\r
-    private JScrollPane jScrollPane3 = null;\r
-    private JTable jTable3 = null;\r
-    private JLabel jLabel5 = null;\r
-    private JTextField jTextField = null;\r
-    private JPanel jPanel4 = null;\r
-    private JLabel jLabel6 = null;\r
-    private JButton jButton = null;\r
-    private JButton jButton1 = null;\r
-    private JButton jButton2 = null;\r
-    private JButton jButton3 = null;\r
-    private JLabel jLabel8 = null;\r
-    private JButton jButton6 = null;\r
-    private JButton jButton7 = null;\r
-    private JScrollPane jScrollPane4 = null;\r
-    private JTable jTable6 = null;\r
+    private JLabel jLabelAntTaskFile = null;\r
+    private JLabel jLabelAntCmdOpts = null;\r
+    private JScrollPane jScrollPaneFfs = null;\r
+    private JTable jTableFfs = null;\r
+    private JLabel jLabelFfsSection = null;\r
+    private JScrollPane jScrollPaneFfsSection = null;\r
+    private JTable jTableFfsSection = null;\r
+    private JLabel jLabelFfsSubSections = null;\r
+    private JScrollPane jScrollPaneFfsSubSection = null;\r
+    private JTable jTableFfsSubSection = null;\r
+    private JLabel jLabelEncapType = null;\r
+    private JTextField jTextFieldEncapType = null;\r
+    private JPanel jPanelFfsAttribButtonGroup = null;\r
+    private JLabel jLabelFfsAttribs = null;\r
+    private JButton jButtonFfsSectionNew = null;\r
+    private JButton jButtonFfsSectionRemove = null;\r
+    private JButton jButtonFfsSubSectionNew = null;\r
+    private JButton jButtonFfsSubSectionRemove = null;\r
+    private JLabel jLabelFfsSections = null;\r
+    private JButton jButtonFfsSectionsNew = null;\r
+    private JButton jButtonFfsSectionsRemove = null;\r
+    private JScrollPane jScrollPaneFfsSections = null;\r
+    private JTable jTableFfsSections = null;\r
+    private JButton jButtonAntTaskFileBrowse = null;\r
+    private JTextField jTextFieldToolChainFamily = null;\r
+    private JSplitPane jSplitPaneFfsC = null;\r
+    private JPanel jPanelFfsCTop = null;\r
+    private JSplitPane jSplitPaneFfsCBottom = null;\r
+    private JPanel jPanelFfsCBottomTop = null;\r
+    private JPanel jPanelFfsCBottomBottom = null;\r
+    private JPanel jPanelSectionN = null;\r
+    private JPanel jPanelSectionC = null;\r
+    private JPanel jPanelSectionsN = null;\r
+    private JPanel jPanelSectionsC = null;\r
+    private JPanel jPanelSubSectionN = null;\r
+    private JPanel jPanelSubSectionC = null;\r
+    private JPanel jPanelOptionsContainer = null;\r
+    private JPanel jPanelUserDefCenterN = null;\r
+    private JPanel jPanelUserDefCenterC = null;\r
     /**\r
      * This method initializes jPanel  \r
      *         \r
      * @return javax.swing.JPanel      \r
      */\r
-    private JPanel getJPanel() {\r
-        if (jPanel == null) {\r
-            jPanel = new JPanel();\r
+    private JPanel getJPanelContentSouth() {\r
+        if (jPanelContentSouth == null) {\r
+            jPanelContentSouth = new JPanel();\r
         }\r
-        return jPanel;\r
+        return jPanelContentSouth;\r
     }\r
 \r
     /**\r
@@ -157,11 +178,11 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JPanel      \r
      */\r
-    private JPanel getJPanel1() {\r
-        if (jPanel1 == null) {\r
-            jPanel1 = new JPanel();\r
+    private JPanel getJPanelContentNorth() {\r
+        if (jPanelContentNorth == null) {\r
+            jPanelContentNorth = new JPanel();\r
         }\r
-        return jPanel1;\r
+        return jPanelContentNorth;\r
     }\r
 \r
     /**\r
@@ -169,11 +190,11 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JPanel      \r
      */\r
-    private JPanel getJPanel2() {\r
-        if (jPanel2 == null) {\r
-            jPanel2 = new JPanel();\r
+    private JPanel getJPanelContentWest() {\r
+        if (jPanelContentWest == null) {\r
+            jPanelContentWest = new JPanel();\r
         }\r
-        return jPanel2;\r
+        return jPanelContentWest;\r
     }\r
 \r
     /**\r
@@ -181,11 +202,11 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JPanel      \r
      */\r
-    private JPanel getJPanel3() {\r
-        if (jPanel3 == null) {\r
-            jPanel3 = new JPanel();\r
+    private JPanel getJPanelContentEast() {\r
+        if (jPanelContentEast == null) {\r
+            jPanelContentEast = new JPanel();\r
         }\r
-        return jPanel3;\r
+        return jPanelContentEast;\r
     }\r
 \r
     /**\r
@@ -196,9 +217,9 @@ public class FpdBuildOptions extends IInternalFrame {
     private JTabbedPane getJTabbedPane() {\r
         if (jTabbedPane == null) {\r
             jTabbedPane = new JTabbedPane();\r
-            jTabbedPane.addTab("FFS", null, getJPanel13(), null);\r
-            jTabbedPane.addTab("Options", null, getJPanel20(), null);\r
-            jTabbedPane.addTab("User Defined ANT Tasks", null, getJPanel8(), null);\r
+            jTabbedPane.addTab("FFS", null, getJPanelFfsTab(), null);\r
+            jTabbedPane.addTab("Options", null, getJPanelOptionsTab(), null);\r
+            jTabbedPane.addTab("User Defined ANT Tasks", null, getJPanelUserDef(), null);\r
         }\r
         return jTabbedPane;\r
     }\r
@@ -209,16 +230,15 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JPanel      \r
      */\r
-    private JPanel getJPanel8() {\r
-        if (jPanel8 == null) {\r
-            jPanel8 = new JPanel();\r
-            jPanel8.setLayout(new BorderLayout());\r
-            jPanel8.add(getJPanel9(), java.awt.BorderLayout.NORTH);\r
-            jPanel8.add(getJPanel10(), java.awt.BorderLayout.SOUTH);\r
-            jPanel8.add(getJPanel11(), java.awt.BorderLayout.CENTER);\r
+    private JPanel getJPanelUserDef() {\r
+        if (jPanelUserDef == null) {\r
+            jPanelUserDef = new JPanel();\r
+            jPanelUserDef.setLayout(new BorderLayout());\r
+            jPanelUserDef.add(getJPanelUserDefNorth(), java.awt.BorderLayout.NORTH);\r
+            jPanelUserDef.add(getJPanelUserDefCenter(), java.awt.BorderLayout.CENTER);\r
 \r
         }\r
-        return jPanel8;\r
+        return jPanelUserDef;\r
     }\r
 \r
     /**\r
@@ -226,35 +246,24 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JPanel      \r
      */\r
-    private JPanel getJPanel9() {\r
-        if (jPanel9 == null) {\r
-            jLabel = new JLabel();\r
-            jLabel.setText("ANT Task File");\r
-            jLabel.setPreferredSize(new java.awt.Dimension(80,20));\r
+    private JPanel getJPanelUserDefNorth() {\r
+        if (jPanelUserDefNorth == null) {\r
+            jLabelAntTaskFile = new JLabel();\r
+            jLabelAntTaskFile.setText("ANT Task File");\r
+            jLabelAntTaskFile.setPreferredSize(new java.awt.Dimension(80,20));\r
             FlowLayout flowLayout8 = new FlowLayout();\r
-            flowLayout8.setAlignment(java.awt.FlowLayout.LEFT);\r
-            jLabel3 = new JLabel();\r
-            jLabel3.setText("ID");\r
-            jPanel9 = new JPanel();\r
-            jPanel9.setLayout(flowLayout8);\r
-            jPanel9.add(jLabel, null);\r
-            jPanel9.add(getJTextField2(), null);\r
-            jPanel9.add(jLabel3, null);\r
-            jPanel9.add(getJTextField3(), null);\r
+            flowLayout8.setAlignment(java.awt.FlowLayout.CENTER);\r
+            jLabelAntTaskId = new JLabel();\r
+            jLabelAntTaskId.setText("ID");\r
+            jPanelUserDefNorth = new JPanel();\r
+            jPanelUserDefNorth.setLayout(flowLayout8);\r
+            jPanelUserDefNorth.add(jLabelAntTaskFile, null);\r
+            jPanelUserDefNorth.add(getJTextFieldAntTaskFile(), null);\r
+            jPanelUserDefNorth.add(getJButtonAntTaskFileBrowse(), null);\r
+            jPanelUserDefNorth.add(jLabelAntTaskId, null);\r
+            jPanelUserDefNorth.add(getJTextFieldAntTaskId(), null);\r
         }\r
-        return jPanel9;\r
-    }\r
-\r
-    /**\r
-     * This method initializes jPanel10        \r
-     *         \r
-     * @return javax.swing.JPanel      \r
-     */\r
-    private JPanel getJPanel10() {\r
-        if (jPanel10 == null) {\r
-            jPanel10 = new JPanel();\r
-        }\r
-        return jPanel10;\r
+        return jPanelUserDefNorth;\r
     }\r
 \r
     /**\r
@@ -262,23 +271,18 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JPanel      \r
      */\r
-    private JPanel getJPanel11() {\r
-        if (jPanel11 == null) {\r
-            jLabel1 = new JLabel();\r
-            jLabel1.setText("ANT Command Options");\r
-            jLabel1.setPreferredSize(new java.awt.Dimension(131,20));\r
-            FlowLayout flowLayout3 = new FlowLayout();\r
-            flowLayout3.setHgap(5);\r
-            flowLayout3.setAlignment(java.awt.FlowLayout.LEFT);\r
-            jPanel11 = new JPanel();\r
-            jPanel11.setLayout(flowLayout3);\r
-            jPanel11.add(jLabel1, null);\r
-            jPanel11.add(getJTextField4(), null);\r
-            jPanel11.add(getJButton4(), null);\r
-            jPanel11.add(getJButton5(), null);\r
-            jPanel11.add(getJScrollPane2(), null);\r
+    private JPanel getJPanelUserDefCenter() {\r
+        if (jPanelUserDefCenter == null) {\r
+            jLabelAntCmdOpts = new JLabel();\r
+            jLabelAntCmdOpts.setText("ANT Command Options");\r
+            jLabelAntCmdOpts.setPreferredSize(new java.awt.Dimension(131,20));\r
+            jPanelUserDefCenter = new JPanel();\r
+            jPanelUserDefCenter.setLayout(new BorderLayout());\r
+\r
+            jPanelUserDefCenter.add(getJPanelUserDefCenterN(), java.awt.BorderLayout.NORTH);\r
+            jPanelUserDefCenter.add(getJPanelUserDefCenterC(), java.awt.BorderLayout.CENTER);\r
         }\r
-        return jPanel11;\r
+        return jPanelUserDefCenter;\r
     }\r
 \r
     /**\r
@@ -286,12 +290,12 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JTextField  \r
      */\r
-    private JTextField getJTextField2() {\r
-        if (jTextField2 == null) {\r
-            jTextField2 = new JTextField();\r
-            jTextField2.setPreferredSize(new java.awt.Dimension(200,20));\r
+    private JTextField getJTextFieldAntTaskFile() {\r
+        if (jTextFieldAntTaskFile == null) {\r
+            jTextFieldAntTaskFile = new JTextField();\r
+            jTextFieldAntTaskFile.setPreferredSize(new java.awt.Dimension(200,20));\r
         }\r
-        return jTextField2;\r
+        return jTextFieldAntTaskFile;\r
     }\r
 \r
     /**\r
@@ -299,12 +303,12 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JTextField  \r
      */\r
-    private JTextField getJTextField3() {\r
-        if (jTextField3 == null) {\r
-            jTextField3 = new JTextField();\r
-            jTextField3.setPreferredSize(new java.awt.Dimension(100,20));\r
+    private JTextField getJTextFieldAntTaskId() {\r
+        if (jTextFieldAntTaskId == null) {\r
+            jTextFieldAntTaskId = new JTextField();\r
+            jTextFieldAntTaskId.setPreferredSize(new java.awt.Dimension(100,20));\r
         }\r
-        return jTextField3;\r
+        return jTextFieldAntTaskId;\r
     }\r
 \r
     /**\r
@@ -312,23 +316,27 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JButton     \r
      */\r
-    private JButton getJButton4() {\r
-        if (jButton4 == null) {\r
-            jButton4 = new JButton();\r
-            jButton4.setPreferredSize(new java.awt.Dimension(90,20));\r
-            jButton4.setText("Add");\r
-            jButton4.addActionListener(new ActionListener() {\r
+    private JButton getJButtonAntTaskAdd() {\r
+        if (jButtonAntTaskAdd == null) {\r
+            jButtonAntTaskAdd = new JButton();\r
+            jButtonAntTaskAdd.setPreferredSize(new java.awt.Dimension(90,20));\r
+            jButtonAntTaskAdd.setText("Add");\r
+            jButtonAntTaskAdd.addActionListener(new ActionListener() {\r
                 public void actionPerformed(ActionEvent e) {\r
-                    Object[] o = {jTextField3.getText(), null, null};\r
-                        o[1] = jTextField2.getText();\r
-                        o[2] = jTextField4.getText();\r
-                        ffc.genBuildOptionsUserDefAntTask(o[0]+"", null, o[2]+"");\r
+                    if (!DataValidation.isInt(jTextFieldAntTaskId.getText()) || jTextFieldAntTaskId.getText().length() != 8) {\r
+                        JOptionPane.showMessageDialog(frame, "ID must be an 8-digit integer.");\r
+                        return;\r
+                    }\r
+                    Object[] o = {jTextFieldAntTaskId.getText(), null, null};\r
+                        o[1] = jTextFieldAntTaskFile.getText();\r
+                        o[2] = jTextFieldAntCmdOpts.getText();\r
+                        ffc.genBuildOptionsUserDefAntTask(o[0]+"", o[1]+"", o[2]+"");\r
                     antTaskTableModel.addRow(o);\r
-                    \r
+                    docConsole.setSaved(false);\r
                 }\r
             });\r
         }\r
-        return jButton4;\r
+        return jButtonAntTaskAdd;\r
     }\r
 \r
     /**\r
@@ -336,21 +344,22 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JButton     \r
      */\r
-    private JButton getJButton5() {\r
-        if (jButton5 == null) {\r
-            jButton5 = new JButton();\r
-            jButton5.setPreferredSize(new java.awt.Dimension(90,20));\r
-            jButton5.setText("Delete");\r
-            jButton5.addActionListener(new ActionListener() {\r
+    private JButton getJButtonAntTaskDel() {\r
+        if (jButtonAntTaskDel == null) {\r
+            jButtonAntTaskDel = new JButton();\r
+            jButtonAntTaskDel.setPreferredSize(new java.awt.Dimension(90,20));\r
+            jButtonAntTaskDel.setText("Delete");\r
+            jButtonAntTaskDel.addActionListener(new ActionListener() {\r
                 public void actionPerformed(ActionEvent e) {\r
                     if (selectedRow >= 0) {\r
+                        docConsole.setSaved(false);\r
                         antTaskTableModel.removeRow(selectedRow);\r
                         ffc.removeBuildOptionsUserDefAntTask(selectedRow);\r
                     }\r
                 }\r
             });\r
         }\r
-        return jButton5;\r
+        return jButtonAntTaskDel;\r
     }\r
 \r
     /**\r
@@ -358,13 +367,13 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JTextField  \r
      */\r
-    private JTextField getJTextField4() {\r
-        if (jTextField4 == null) {\r
-            jTextField4 = new JTextField();\r
-            jTextField4.setPreferredSize(new java.awt.Dimension(270,20));\r
-            jTextField4.setEnabled(true);\r
+    private JTextField getJTextFieldAntCmdOpts() {\r
+        if (jTextFieldAntCmdOpts == null) {\r
+            jTextFieldAntCmdOpts = new JTextField();\r
+            jTextFieldAntCmdOpts.setPreferredSize(new java.awt.Dimension(270,20));\r
+            jTextFieldAntCmdOpts.setEnabled(true);\r
         }\r
-        return jTextField4;\r
+        return jTextFieldAntCmdOpts;\r
     }\r
 \r
     /**\r
@@ -372,13 +381,13 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JScrollPane \r
      */\r
-    private JScrollPane getJScrollPane2() {\r
-        if (jScrollPane2 == null) {\r
-            jScrollPane2 = new JScrollPane();\r
-            jScrollPane2.setPreferredSize(new java.awt.Dimension(600,100));\r
-            jScrollPane2.setViewportView(getJTable2());\r
+    private JScrollPane getJScrollPaneAntTasks() {\r
+        if (jScrollPaneAntTasks == null) {\r
+            jScrollPaneAntTasks = new JScrollPane();\r
+            jScrollPaneAntTasks.setPreferredSize(new java.awt.Dimension(600,400));\r
+            jScrollPaneAntTasks.setViewportView(getJTableAntTasks());\r
         }\r
-        return jScrollPane2;\r
+        return jScrollPaneAntTasks;\r
     }\r
 \r
     /**\r
@@ -386,17 +395,17 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JTable      \r
      */\r
-    private JTable getJTable2() {\r
-        if (jTable2 == null) {\r
+    private JTable getJTableAntTasks() {\r
+        if (jTableAntTasks == null) {\r
             antTaskTableModel = new DefaultTableModel();\r
-            jTable2 = new JTable(antTaskTableModel);\r
-            jTable2.setRowHeight(20);\r
+            jTableAntTasks = new JTable(antTaskTableModel);\r
+            jTableAntTasks.setRowHeight(20);\r
             antTaskTableModel.addColumn("ID");\r
             antTaskTableModel.addColumn("Filename");\r
             antTaskTableModel.addColumn("ANT Command Options");\r
             \r
-            jTable2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
-            jTable2.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
+            jTableAntTasks.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+            jTableAntTasks.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
                 public void valueChanged(ListSelectionEvent e) {\r
                     selectedRow = -1;\r
                     if (e.getValueIsAdjusting()){\r
@@ -412,7 +421,7 @@ public class FpdBuildOptions extends IInternalFrame {
                 }\r
             });\r
             \r
-            jTable2.getModel().addTableModelListener(new TableModelListener() {\r
+            jTableAntTasks.getModel().addTableModelListener(new TableModelListener() {\r
                 public void tableChanged(TableModelEvent arg0) {\r
                     // TODO Auto-generated method stub\r
                     int row = arg0.getFirstRow();\r
@@ -440,7 +449,7 @@ public class FpdBuildOptions extends IInternalFrame {
                 }\r
             });\r
         }\r
-        return jTable2;\r
+        return jTableAntTasks;\r
     }\r
 \r
     /**\r
@@ -448,14 +457,14 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JPanel      \r
      */\r
-    private JPanel getJPanel13() {\r
-        if (jPanel13 == null) {\r
-            jPanel13 = new JPanel();\r
-            jPanel13.setLayout(new BorderLayout());\r
-            jPanel13.add(getJPanel18(), java.awt.BorderLayout.CENTER);\r
-            jPanel13.add(getJScrollPane(), java.awt.BorderLayout.WEST);\r
+    private JPanel getJPanelFfsTab() {\r
+        if (jPanelFfsTab == null) {\r
+            jPanelFfsTab = new JPanel();\r
+            jPanelFfsTab.setLayout(new BorderLayout());\r
+            jPanelFfsTab.add(getJPanelFfsTabCenter(), java.awt.BorderLayout.CENTER);\r
+            jPanelFfsTab.add(getJScrollPaneFfs(), java.awt.BorderLayout.WEST);\r
         }\r
-        return jPanel13;\r
+        return jPanelFfsTab;\r
     }\r
 \r
     /**\r
@@ -463,16 +472,15 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JPanel      \r
      */\r
-    private JPanel getJPanel18() {\r
-        if (jPanel18 == null) {\r
-            jPanel18 = new JPanel();\r
-            jPanel18.setLayout(new BorderLayout());\r
-            jPanel18.add(getJPanel15(), java.awt.BorderLayout.NORTH);\r
-            jPanel18.add(getJPanel16(), java.awt.BorderLayout.SOUTH);\r
-            jPanel18.add(getJPanel17(), java.awt.BorderLayout.EAST);\r
-            jPanel18.add(getJPanel19(), java.awt.BorderLayout.CENTER);\r
+    private JPanel getJPanelFfsTabCenter() {\r
+        if (jPanelFfsTabCenter == null) {\r
+            jPanelFfsTabCenter = new JPanel();\r
+            jPanelFfsTabCenter.setLayout(new BorderLayout());\r
+            jPanelFfsTabCenter.add(getJPanelFfsTabCenterN(), java.awt.BorderLayout.NORTH);\r
+            jPanelFfsTabCenter.add(getJPanelFfsTabCenterS(), java.awt.BorderLayout.SOUTH);\r
+            jPanelFfsTabCenter.add(getJSplitPaneFfsC(), java.awt.BorderLayout.CENTER);\r
         }\r
-        return jPanel18;\r
+        return jPanelFfsTabCenter;\r
     }\r
 \r
     /**\r
@@ -480,24 +488,24 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JPanel      \r
      */\r
-    private JPanel getJPanel15() {\r
-        if (jPanel15 == null) {\r
-            jLabel5 = new JLabel();\r
-            jLabel5.setText("Encapsulation Type");\r
+    private JPanel getJPanelFfsTabCenterN() {\r
+        if (jPanelFfsTabCenterN == null) {\r
+            jLabelEncapType = new JLabel();\r
+            jLabelEncapType.setText("Encapsulation Type");\r
             FlowLayout flowLayout5 = new FlowLayout();\r
             flowLayout5.setAlignment(java.awt.FlowLayout.RIGHT);\r
-            jLabel7 = new JLabel();\r
-            jLabel7.setText("FFS Key");\r
-            jPanel15 = new JPanel();\r
-            jPanel15.setLayout(flowLayout5);\r
-            jPanel15.add(jLabel7, null);\r
-            jPanel15.add(getJTextField6(), null);\r
-            jPanel15.add(jLabel5, null);\r
-            jPanel15.add(getJTextField(), null);\r
-            jPanel15.add(getJButton8(), null);\r
-            jPanel15.add(getJButton9(), null);\r
+            jLabelFfsKey = new JLabel();\r
+            jLabelFfsKey.setText("FFS Key");\r
+            jPanelFfsTabCenterN = new JPanel();\r
+            jPanelFfsTabCenterN.setLayout(flowLayout5);\r
+            jPanelFfsTabCenterN.add(jLabelFfsKey, null);\r
+            jPanelFfsTabCenterN.add(getJTextFieldFfsKey(), null);\r
+            jPanelFfsTabCenterN.add(jLabelEncapType, null);\r
+            jPanelFfsTabCenterN.add(getJTextFieldEncapType(), null);\r
+            jPanelFfsTabCenterN.add(getJButtonFfsAdd(), null);\r
+            jPanelFfsTabCenterN.add(getJButtonFfsDel(), null);\r
         }\r
-        return jPanel15;\r
+        return jPanelFfsTabCenterN;\r
     }\r
 \r
     /**\r
@@ -505,34 +513,22 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JPanel      \r
      */\r
-    private JPanel getJPanel16() {\r
-        if (jPanel16 == null) {\r
-            jLabel6 = new JLabel();\r
-            jLabel6.setText("Attributes");\r
+    private JPanel getJPanelFfsTabCenterS() {\r
+        if (jPanelFfsTabCenterS == null) {\r
+            jLabelFfsAttribs = new JLabel();\r
+            jLabelFfsAttribs.setText("Attributes");\r
             FlowLayout flowLayout6 = new FlowLayout();\r
             flowLayout6.setHgap(5);\r
             flowLayout6.setVgap(20);\r
             flowLayout6.setAlignment(java.awt.FlowLayout.CENTER);\r
-            jPanel16 = new JPanel();\r
-            jPanel16.setPreferredSize(new java.awt.Dimension(491,130));\r
-            jPanel16.setLayout(flowLayout6);\r
-            jPanel16.add(jLabel6, null);\r
-            jPanel16.add(getJScrollPane5(), null);\r
-            jPanel16.add(getJPanel4(), null);\r
-        }\r
-        return jPanel16;\r
-    }\r
-\r
-    /**\r
-     * This method initializes jPanel17        \r
-     *         \r
-     * @return javax.swing.JPanel      \r
-     */\r
-    private JPanel getJPanel17() {\r
-        if (jPanel17 == null) {\r
-            jPanel17 = new JPanel();\r
+            jPanelFfsTabCenterS = new JPanel();\r
+            jPanelFfsTabCenterS.setPreferredSize(new java.awt.Dimension(491,130));\r
+            jPanelFfsTabCenterS.setLayout(flowLayout6);\r
+            jPanelFfsTabCenterS.add(jLabelFfsAttribs, null);\r
+            jPanelFfsTabCenterS.add(getJScrollPaneFfsAttribs(), null);\r
+            jPanelFfsTabCenterS.add(getJPanelFfsAttribButtonGroup(), null);\r
         }\r
-        return jPanel17;\r
+        return jPanelFfsTabCenterS;\r
     }\r
 \r
     /**\r
@@ -540,21 +536,21 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JTextField  \r
      */\r
-    private JTextField getJTextField6() {\r
-        if (jTextField6 == null) {\r
-            jTextField6 = new JTextField();\r
-            jTextField6.setPreferredSize(new java.awt.Dimension(100,20));\r
-            jTextField6.setEditable(false);\r
-            jTextField6.addFocusListener(new java.awt.event.FocusAdapter() {\r
+    private JTextField getJTextFieldFfsKey() {\r
+        if (jTextFieldFfsKey == null) {\r
+            jTextFieldFfsKey = new JTextField();\r
+            jTextFieldFfsKey.setPreferredSize(new java.awt.Dimension(100,20));\r
+            jTextFieldFfsKey.setEditable(true);\r
+            jTextFieldFfsKey.addFocusListener(new java.awt.event.FocusAdapter() {\r
                 public void focusLost(java.awt.event.FocusEvent e) {\r
-                    if (jTable.getSelectedRow() < 0) {\r
+                    if (jTableFfs.getSelectedRow() < 0) {\r
                         return;\r
                     }\r
 //                    ffc.updateBuildOptionsFfsKey(jTable.getSelectedRow(), jTextField6.getText());\r
                 }\r
             });\r
         }\r
-        return jTextField6;\r
+        return jTextFieldFfsKey;\r
     }\r
 \r
     /**\r
@@ -562,27 +558,28 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JButton     \r
      */\r
-    private JButton getJButton8() {\r
-        if (jButton8 == null) {\r
-            jButton8 = new JButton();\r
-            jButton8.setPreferredSize(new java.awt.Dimension(70,20));\r
-            jButton8.setText("Add");\r
-            jButton8.addActionListener(new AbstractAction() {\r
+    private JButton getJButtonFfsAdd() {\r
+        if (jButtonFfsAdd == null) {\r
+            jButtonFfsAdd = new JButton();\r
+            jButtonFfsAdd.setPreferredSize(new java.awt.Dimension(70,20));\r
+            jButtonFfsAdd.setText("Add");\r
+            jButtonFfsAdd.addActionListener(new AbstractAction() {\r
                 /**\r
                  * \r
                  */\r
                 private static final long serialVersionUID = -2923720717273384221L;\r
 \r
                 public void actionPerformed(java.awt.event.ActionEvent e) {\r
-                    if (jTextField6.getText().length() > 0) {\r
-                        String[] row = {jTextField6.getText()};\r
+                    if (jTextFieldFfsKey.getText().length() > 0) {\r
+                        String[] row = {jTextFieldFfsKey.getText()};\r
                         ffsTableModel.addRow(row);\r
-                        ffc.genBuildOptionsFfs(jTextField6.getText(), jTextField.getText());\r
+                        docConsole.setSaved(false);\r
+                        ffc.genBuildOptionsFfs(jTextFieldFfsKey.getText(), jTextFieldEncapType.getText());\r
                     }\r
                 }\r
             });\r
         }\r
-        return jButton8;\r
+        return jButtonFfsAdd;\r
     }\r
 \r
     /**\r
@@ -590,26 +587,28 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JButton     \r
      */\r
-    private JButton getJButton9() {\r
-        if (jButton9 == null) {\r
-            jButton9 = new JButton();\r
-            jButton9.setPreferredSize(new java.awt.Dimension(70,20));\r
-            jButton9.setText("Delete");\r
-            jButton9.addActionListener(new AbstractAction() {\r
+    private JButton getJButtonFfsDel() {\r
+        if (jButtonFfsDel == null) {\r
+            jButtonFfsDel = new JButton();\r
+            jButtonFfsDel.setPreferredSize(new java.awt.Dimension(70,20));\r
+            jButtonFfsDel.setText("Delete");\r
+            jButtonFfsDel.addActionListener(new AbstractAction() {\r
                 /**\r
                  * \r
                  */\r
                 private static final long serialVersionUID = -4002678939178194476L;\r
 \r
                 public void actionPerformed(ActionEvent arg0){\r
-                    if (jTable.getSelectedRow() < 0) {\r
+                    if (jTableFfs.getSelectedRow() < 0) {\r
                         return;\r
                     }\r
-                    ffc.removeBuildOptionsFfs(jTable.getSelectedRow());\r
+                    docConsole.setSaved(false);\r
+                    ffc.removeBuildOptionsFfs(jTableFfs.getSelectedRow());\r
+                    ffsTableModel.removeRow(jTableFfs.getSelectedRow());\r
                 }\r
             });\r
         }\r
-        return jButton9;\r
+        return jButtonFfsDel;\r
     }\r
 \r
     /**\r
@@ -617,13 +616,13 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JScrollPane \r
      */\r
-    private JScrollPane getJScrollPane5() {\r
-        if (jScrollPane5 == null) {\r
-            jScrollPane5 = new JScrollPane();\r
-            jScrollPane5.setPreferredSize(new java.awt.Dimension(350,100));\r
-            jScrollPane5.setViewportView(getJTable4());\r
+    private JScrollPane getJScrollPaneFfsAttribs() {\r
+        if (jScrollPaneFfsAttribs == null) {\r
+            jScrollPaneFfsAttribs = new JScrollPane();\r
+            jScrollPaneFfsAttribs.setPreferredSize(new java.awt.Dimension(350,100));\r
+            jScrollPaneFfsAttribs.setViewportView(getJTableFfsAttribs());\r
         }\r
-        return jScrollPane5;\r
+        return jScrollPaneFfsAttribs;\r
     }\r
 \r
     /**\r
@@ -631,17 +630,17 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JTable      \r
      */\r
-    private JTable getJTable4() {\r
-        if (jTable4 == null) {\r
+    private JTable getJTableFfsAttribs() {\r
+        if (jTableFfsAttribs == null) {\r
             ffsAttributesTableModel = new DefaultTableModel();\r
-            jTable4 = new JTable(ffsAttributesTableModel);\r
-            jTable4.setPreferredSize(new java.awt.Dimension(400,80));\r
-            jTable4.setRowHeight(20);\r
+            jTableFfsAttribs = new JTable(ffsAttributesTableModel);\r
+            jTableFfsAttribs.setPreferredSize(new java.awt.Dimension(400,80));\r
+            jTableFfsAttribs.setRowHeight(20);\r
             ffsAttributesTableModel.addColumn("Name");\r
             ffsAttributesTableModel.addColumn("Value");\r
             \r
-            jTable4.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
-            jTable4.getModel().addTableModelListener(new TableModelListener() {\r
+            jTableFfsAttribs.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+            jTableFfsAttribs.getModel().addTableModelListener(new TableModelListener() {\r
                 public void tableChanged(TableModelEvent arg0) {\r
                     // TODO Auto-generated method stub\r
                     int row = arg0.getFirstRow();\r
@@ -657,43 +656,13 @@ public class FpdBuildOptions extends IInternalFrame {
                         if (value.length() == 0){\r
                             return;\r
                         }\r
-                        ffc.updateBuildOptionsFfsAttribute(jTable.getSelectedRow(), row, name, value);\r
+                        docConsole.setSaved(false);\r
+                        ffc.updateBuildOptionsFfsAttribute(jTableFfs.getSelectedRow(), row, name, value);\r
                     }\r
                 }\r
             });\r
         }\r
-        return jTable4;\r
-    }\r
-\r
-    /**\r
-     * This method initializes jPanel19        \r
-     *         \r
-     * @return javax.swing.JPanel      \r
-     */\r
-    private JPanel getJPanel19() {\r
-        if (jPanel19 == null) {\r
-            jLabel8 = new JLabel();\r
-            jLabel8.setText("Sections");\r
-            jLabel4 = new JLabel();\r
-            jLabel4.setText("Sub-Sections");\r
-            jLabel2 = new JLabel();\r
-            jLabel2.setText("Section");\r
-            jPanel19 = new JPanel();\r
-            jPanel19.setLayout(new FlowLayout());\r
-            jPanel19.add(jLabel2, null);\r
-            jPanel19.add(getJButton(), null);\r
-            jPanel19.add(getJButton1(), null);\r
-            jPanel19.add(getJScrollPane1(), null);\r
-            jPanel19.add(jLabel8, null);\r
-            jPanel19.add(getJButton6(), null);\r
-            jPanel19.add(getJButton7(), null);\r
-            jPanel19.add(getJScrollPane4(), null);\r
-            jPanel19.add(jLabel4, null);\r
-            jPanel19.add(getJButton2(), null);\r
-            jPanel19.add(getJButton3(), null);\r
-            jPanel19.add(getJScrollPane3(), null);\r
-        }\r
-        return jPanel19;\r
+        return jTableFfsAttribs;\r
     }\r
 \r
     /**\r
@@ -701,47 +670,29 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JPanel      \r
      */\r
-    private JPanel getJPanel20() {\r
-        if (jPanel20 == null) {\r
-            jLabel15 = new JLabel();\r
-            jLabel15.setText("Tag Name");\r
+    private JPanel getJPanelOptionsTab() {\r
+        if (jPanelOptionsTab == null) {\r
+            jLabelTagName = new JLabel();\r
+            jLabelTagName.setText("Tag Name");\r
             FlowLayout flowLayout9 = new FlowLayout();\r
             flowLayout9.setAlignment(java.awt.FlowLayout.LEFT);\r
-            jLabel14 = new JLabel();\r
-            jLabel14.setText("Build Targets");\r
-            jLabel12 = new JLabel();\r
-            jLabel12.setText("Tool Command");\r
-            jLabel11 = new JLabel();\r
-            jLabel11.setText("Supported Arch");\r
-            jLabel10 = new JLabel();\r
-            jLabel10.setText("Tool Chain Family");\r
-            jLabel9 = new JLabel();\r
-            jLabel9.setText("Option Contents");\r
-            jPanel20 = new JPanel();\r
-            jPanel20.setLayout(flowLayout9);\r
-            jPanel20.add(jLabel14, null);\r
-            jPanel20.add(getJTextField12(), null);\r
-            jPanel20.add(jLabel10, null);\r
-            jPanel20.add(getJComboBox2(), null);\r
-            jPanel20.add(jLabel12, null);\r
-            jPanel20.add(getJTextField8(), null);\r
-            jPanel20.add(jLabel11, null);\r
-            jPanel20.add(getJCheckBox9(), null);\r
-            jPanel20.add(getJCheckBox10(), null);\r
-            jPanel20.add(getJCheckBox11(), null);\r
-            jPanel20.add(getJCheckBox12(), null);\r
-            jPanel20.add(getJCheckBox13(), null);\r
-            jPanel20.add(getJCheckBox14(), null);\r
-            jPanel20.add(jLabel15, null);\r
-            jPanel20.add(getJTextField13(), null);\r
-            jPanel20.add(jLabel9, null);\r
-            jPanel20.add(getJTextField7(), null);\r
-            jPanel20.add(getJButton10(), null);\r
-            jPanel20.add(getJButton11(), null);\r
-            jPanel20.add(getJButton19(), null);\r
-            jPanel20.add(getJScrollPane6(), null);\r
-        }\r
-        return jPanel20;\r
+            jLabelBuildTargets = new JLabel();\r
+            jLabelBuildTargets.setText("Build Targets");\r
+            jLabelToolCmd = new JLabel();\r
+            jLabelToolCmd.setText("Tool Command");\r
+            jLabelSupArch = new JLabel();\r
+            jLabelSupArch.setText("Supported Arch");\r
+            jLabelToolChainFamily = new JLabel();\r
+            jLabelToolChainFamily.setText("Tool Chain Family");\r
+            jLabelOptionContents = new JLabel();\r
+            jLabelOptionContents.setText("Option Contents");\r
+            jPanelOptionsTab = new JPanel();\r
+            jPanelOptionsTab.setLayout(flowLayout9);\r
+            jPanelOptionsTab.add(getJPanelOptionsContainer(), null);\r
+            jPanelOptionsTab.add(getJScrollPaneOptions(), null);\r
+            \r
+        }\r
+        return jPanelOptionsTab;\r
     }\r
 \r
     /**\r
@@ -749,30 +700,12 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JTextField  \r
      */\r
-    private JTextField getJTextField7() {\r
-        if (jTextField7 == null) {\r
-            jTextField7 = new JTextField();\r
-            jTextField7.setPreferredSize(new java.awt.Dimension(300,20));\r
+    private JTextField getJTextFieldOptionContents() {\r
+        if (jTextFieldOptionContents == null) {\r
+            jTextFieldOptionContents = new JTextField();\r
+            jTextFieldOptionContents.setPreferredSize(new java.awt.Dimension(300,20));\r
         }\r
-        return jTextField7;\r
-    }\r
-\r
-    /**\r
-     * This method initializes jComboBox2      \r
-     *         \r
-     * @return javax.swing.JComboBox   \r
-     */\r
-    private JComboBox getJComboBox2() {\r
-        if (jComboBox2 == null) {\r
-            jComboBox2 = new JComboBox();\r
-            jComboBox2.setPreferredSize(new java.awt.Dimension(80,20));\r
-            jComboBox2.addItem("MSFT");\r
-            jComboBox2.addItem("GCC");\r
-            jComboBox2.addItem("CYGWIN");\r
-            jComboBox2.addItem("INTEL");\r
-            jComboBox2.setSelectedIndex(0);\r
-        }\r
-        return jComboBox2;\r
+        return jTextFieldOptionContents;\r
     }\r
 \r
     /**\r
@@ -780,12 +713,12 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JTextField  \r
      */\r
-    private JTextField getJTextField8() {\r
-        if (jTextField8 == null) {\r
-            jTextField8 = new JTextField();\r
-            jTextField8.setPreferredSize(new java.awt.Dimension(110,20));\r
+    private JTextField getJTextFieldToolCmd() {\r
+        if (jTextFieldToolCmd == null) {\r
+            jTextFieldToolCmd = new JTextField();\r
+            jTextFieldToolCmd.setPreferredSize(new java.awt.Dimension(110,20));\r
         }\r
-        return jTextField8;\r
+        return jTextFieldToolCmd;\r
     }\r
 \r
     /**\r
@@ -793,13 +726,13 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JScrollPane \r
      */\r
-    private JScrollPane getJScrollPane6() {\r
-        if (jScrollPane6 == null) {\r
-            jScrollPane6 = new JScrollPane();\r
-            jScrollPane6.setPreferredSize(new java.awt.Dimension(630,200));\r
-            jScrollPane6.setViewportView(getJTable5());\r
+    private JScrollPane getJScrollPaneOptions() {\r
+        if (jScrollPaneOptions == null) {\r
+            jScrollPaneOptions = new JScrollPane();\r
+            jScrollPaneOptions.setPreferredSize(new java.awt.Dimension(650,400));\r
+            jScrollPaneOptions.setViewportView(getJTableOptions());\r
         }\r
-        return jScrollPane6;\r
+        return jScrollPaneOptions;\r
     }\r
 \r
     /**\r
@@ -807,11 +740,11 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JTable      \r
      */\r
-    private JTable getJTable5() {\r
-        if (jTable5 == null) {\r
+    private JTable getJTableOptions() {\r
+        if (jTableOptions == null) {\r
             optionsTableModel = new DefaultTableModel();\r
-            jTable5 = new JTable(optionsTableModel);\r
-            jTable5.setRowHeight(20);\r
+            jTableOptions = new JTable(optionsTableModel);\r
+            jTableOptions.setRowHeight(20);\r
             optionsTableModel.addColumn("BuildTargets");\r
             optionsTableModel.addColumn("ToolChainFamily");\r
             optionsTableModel.addColumn("SupportedArch");\r
@@ -819,16 +752,23 @@ public class FpdBuildOptions extends IInternalFrame {
             optionsTableModel.addColumn("TagName");\r
             optionsTableModel.addColumn("Contents");\r
             \r
-            TableColumn toolFamilyCol = jTable5.getColumnModel().getColumn(1);\r
-            JComboBox cb = new JComboBox();\r
-            cb.addItem("MSFT");\r
-            cb.addItem("GCC");\r
-            cb.addItem("CYGWIN");\r
-            cb.addItem("INTEL");\r
-            toolFamilyCol.setCellEditor(new DefaultCellEditor(cb));\r
-            \r
-            jTable5.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
-            jTable5.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
+//            TableColumn toolFamilyCol = jTable5.getColumnModel().getColumn(1);\r
+//            JComboBox cb = new JComboBox();\r
+//            cb.addItem("MSFT");\r
+//            cb.addItem("GCC");\r
+//            cb.addItem("CYGWIN");\r
+//            cb.addItem("INTEL");\r
+//            toolFamilyCol.setCellEditor(new DefaultCellEditor(cb));\r
+            Vector<String> vArch = new Vector<String>();\r
+            vArch.add("IA32");\r
+            vArch.add("X64");\r
+            vArch.add("IPF");\r
+            vArch.add("EBC");\r
+            vArch.add("ARM");\r
+            vArch.add("PPC");\r
+            jTableOptions.getColumnModel().getColumn(2).setCellEditor(new ListEditor(vArch));\r
+            jTableOptions.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+            jTableOptions.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
                 public void valueChanged(ListSelectionEvent e) {\r
                     selectedRow = -1;\r
                     if (e.getValueIsAdjusting()){\r
@@ -844,7 +784,7 @@ public class FpdBuildOptions extends IInternalFrame {
                 }\r
             });\r
             \r
-            jTable5.getModel().addTableModelListener(new TableModelListener() {\r
+            jTableOptions.getModel().addTableModelListener(new TableModelListener() {\r
                 public void tableChanged(TableModelEvent arg0) {\r
                     // TODO Auto-generated method stub\r
                     int row = arg0.getFirstRow();\r
@@ -859,23 +799,25 @@ public class FpdBuildOptions extends IInternalFrame {
                         }\r
                         String toolChain = m.getValueAt(row, 1) + "";\r
                         String archs = m.getValueAt(row, 2) + "";\r
-                        Vector<Object> supArch = new Vector<Object>();\r
-                        String[] sArray1 = archs.split("( )+");\r
-                        for (int i = 0; i < sArray1.length; ++i) {\r
-                            supArch.add(sArray1[i]);\r
-                        }\r
-                        if (supArch.size() == 0) {\r
-                            supArch.add("IA32");\r
+                        Vector<Object> supArch = null;\r
+                        if (archs.length() > 0) {\r
+                            supArch = new Vector<Object>();\r
+                            String[] sArray1 = archs.split("( )+");\r
+                            for (int i = 0; i < sArray1.length; ++i) {\r
+                                supArch.add(sArray1[i]);\r
+                            }\r
                         }\r
+                        \r
                         String toolCmd = m.getValueAt(row, 3) + "";\r
                         String tagName = m.getValueAt(row, 4) + "";\r
                         String contents = m.getValueAt(row, 5) + "";\r
+                        docConsole.setSaved(false);\r
                         ffc.updateBuildOptionsOpt(row, targetName, toolChain, tagName, toolCmd, supArch, contents);\r
                     }\r
                 }\r
             });\r
         }\r
-        return jTable5;\r
+        return jTableOptions;\r
     }\r
 \r
     /**\r
@@ -883,37 +825,40 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JButton     \r
      */\r
-    private JButton getJButton10() {\r
-        if (jButton10 == null) {\r
-            jButton10 = new JButton();\r
-            jButton10.setText("Add");\r
-            jButton10.setPreferredSize(new java.awt.Dimension(70,20));\r
-            jButton10.addActionListener(new AbstractAction() {\r
+    private JButton getJButtonOptionsAdd() {\r
+        if (jButtonOptionsAdd == null) {\r
+            jButtonOptionsAdd = new JButton();\r
+            jButtonOptionsAdd.setText("Add");\r
+            jButtonOptionsAdd.setPreferredSize(new java.awt.Dimension(90,20));\r
+            jButtonOptionsAdd.addActionListener(new AbstractAction() {\r
                 /**\r
                  * \r
                  */\r
                 private static final long serialVersionUID = 1L;\r
 \r
                 public void actionPerformed(java.awt.event.ActionEvent e) {\r
-                    boolean[] boolArray = {jCheckBox9.isSelected(),jCheckBox10.isSelected(),jCheckBox11.isSelected(),\r
-                                           jCheckBox12.isSelected(),jCheckBox13.isSelected(),jCheckBox14.isSelected()};\r
+                    boolean[] boolArray = {jCheckBoxIA32.isSelected(),jCheckBoxIpf.isSelected(),jCheckBoxX64.isSelected(),\r
+                                           jCheckBoxEBC.isSelected(),jCheckBoxARM.isSelected(),jCheckBoxPPC.isSelected()};\r
                     String s = boolToList(boolArray);\r
-                    Object[] o = {jTextField12.getText(), jComboBox2.getSelectedItem(), s,\r
-                                  jTextField8.getText(), jTextField13.getText(), jTextField7.getText()};\r
+                    Object[] o = {jTextFieldBuildTargets.getText(), jTextFieldToolChainFamily.getText(), s,\r
+                                  jTextFieldToolCmd.getText(), jTextFieldTagName.getText(), jTextFieldOptionContents.getText()};\r
                     optionsTableModel.addRow(o);\r
-                  \r
-                    ffc.genBuildOptionsOpt(stringToVector(jTextField12.getText()), jComboBox2.getSelectedItem()+"", jTextField13.getText(), jTextField8.getText(),  stringToVector(s), jTextField7.getText());\r
+                    docConsole.setSaved(false);\r
+                    ffc.genBuildOptionsOpt(stringToVector(jTextFieldBuildTargets.getText()), jTextFieldToolChainFamily.getText(), jTextFieldTagName.getText(), jTextFieldToolCmd.getText(),  stringToVector(s), jTextFieldOptionContents.getText());\r
                 }\r
             });\r
         }\r
-        return jButton10;\r
+        return jButtonOptionsAdd;\r
     }\r
     \r
     private Vector<Object> stringToVector(String s) {\r
         String[] sArray = s.split(" ");\r
-        Vector<Object> v = new Vector<Object>();\r
-        for (int i = 0; i < sArray.length; ++i) {\r
-            v.add(sArray[i]);\r
+        Vector<Object> v = null;\r
+        if (s.length() > 0) {\r
+            v = new Vector<Object>();\r
+            for (int i = 0; i < sArray.length; ++i) {\r
+                v.add(sArray[i]);\r
+            } \r
         }\r
         return v;\r
     }\r
@@ -949,12 +894,12 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JButton     \r
      */\r
-    private JButton getJButton11() {\r
-        if (jButton11 == null) {\r
-            jButton11 = new JButton();\r
-            jButton11.setText("Delete");\r
-            jButton11.setPreferredSize(new java.awt.Dimension(70,20));\r
-            jButton11.addActionListener(new AbstractAction() {\r
+    private JButton getJButtonOptionsDel() {\r
+        if (jButtonOptionsDel == null) {\r
+            jButtonOptionsDel = new JButton();\r
+            jButtonOptionsDel.setText("Delete");\r
+            jButtonOptionsDel.setPreferredSize(new java.awt.Dimension(90,20));\r
+            jButtonOptionsDel.addActionListener(new AbstractAction() {\r
                 /**\r
                  * \r
                  */\r
@@ -963,12 +908,13 @@ public class FpdBuildOptions extends IInternalFrame {
                 public void actionPerformed(java.awt.event.ActionEvent e) {\r
                     if (selectedRow >= 0) {\r
                         optionsTableModel.removeRow(selectedRow);\r
+                        docConsole.setSaved(false);\r
                         ffc.removeBuildOptionsOpt(selectedRow);\r
                     }\r
                 }\r
             });\r
         }\r
-        return jButton11;\r
+        return jButtonOptionsDel;\r
     }\r
 \r
     /**\r
@@ -976,28 +922,29 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JButton     \r
      */\r
-    private JButton getJButton17() {\r
-        if (jButton17 == null) {\r
-            jButton17 = new JButton();\r
-            jButton17.setPreferredSize(new java.awt.Dimension(80,20));\r
-            jButton17.setText("New");\r
-            jButton17.addActionListener(new AbstractAction() {\r
+    private JButton getJButtonFfsAttribNew() {\r
+        if (jButtonFfsAttribNew == null) {\r
+            jButtonFfsAttribNew = new JButton();\r
+            jButtonFfsAttribNew.setPreferredSize(new java.awt.Dimension(80,20));\r
+            jButtonFfsAttribNew.setText("New");\r
+            jButtonFfsAttribNew.addActionListener(new AbstractAction() {\r
                 /**\r
                  * \r
                  */\r
                 private static final long serialVersionUID = 1L;\r
 \r
                 public void actionPerformed(ActionEvent arg0){\r
-                    if (jTable.getSelectedRow() < 0) {\r
+                    if (jTableFfs.getSelectedRow() < 0) {\r
                         return;\r
                     }\r
                     Object[] o = {"", ""};\r
                     ffsAttributesTableModel.addRow(o);\r
-                    ffc.genBuildOptionsFfsAttribute(jTable.getSelectedRow(), "", "");\r
+                    docConsole.setSaved(false);\r
+                    ffc.genBuildOptionsFfsAttribute(jTableFfs.getSelectedRow(), "", "");\r
                 }\r
             });\r
         }\r
-        return jButton17;\r
+        return jButtonFfsAttribNew;\r
     }\r
 \r
     /**\r
@@ -1005,44 +952,30 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JButton     \r
      */\r
-    private JButton getJButton18() {\r
-        if (jButton18 == null) {\r
-            jButton18 = new JButton();\r
-            jButton18.setPreferredSize(new java.awt.Dimension(80,20));\r
-            jButton18.setText("Remove");\r
-            jButton18.addActionListener(new AbstractAction(){\r
+    private JButton getJButtonFfsAttribRemove() {\r
+        if (jButtonFfsAttribRemove == null) {\r
+            jButtonFfsAttribRemove = new JButton();\r
+            jButtonFfsAttribRemove.setPreferredSize(new java.awt.Dimension(80,20));\r
+            jButtonFfsAttribRemove.setText("Remove");\r
+            jButtonFfsAttribRemove.addActionListener(new AbstractAction(){\r
                 /**\r
                  * \r
                  */\r
                 private static final long serialVersionUID = 1L;\r
 \r
                 public void actionPerformed(ActionEvent arg0){\r
-                    if (jTable.getSelectedRow() < 0) {\r
+                    if (jTableFfs.getSelectedRow() < 0) {\r
                         return;\r
                     }\r
-                    if (jTable4.getSelectedRow() >= 0){\r
-                        ffsAttributesTableModel.removeRow(jTable4.getSelectedRow());\r
-                        ffc.removeBuildOptionsFfsAttribute(jTable.getSelectedRow(), jTable4.getSelectedRow());\r
+                    if (jTableFfsAttribs.getSelectedRow() >= 0){\r
+                        docConsole.setSaved(false);\r
+                        ffsAttributesTableModel.removeRow(jTableFfsAttribs.getSelectedRow());\r
+                        ffc.removeBuildOptionsFfsAttribute(jTableFfs.getSelectedRow(), jTableFfsAttribs.getSelectedRow());\r
                     }\r
                 }\r
             });\r
         }\r
-        return jButton18;\r
-    }\r
-\r
-    /**\r
-     * This method initializes jButton19       \r
-     *         \r
-     * @return javax.swing.JButton     \r
-     */\r
-    private JButton getJButton19() {\r
-        if (jButton19 == null) {\r
-            jButton19 = new JButton();\r
-            jButton19.setPreferredSize(new java.awt.Dimension(75,20));\r
-            jButton19.setEnabled(false);\r
-            jButton19.setText("Update");\r
-        }\r
-        return jButton19;\r
+        return jButtonFfsAttribRemove;\r
     }\r
 \r
     /**\r
@@ -1050,13 +983,13 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JCheckBox   \r
      */\r
-    private JCheckBox getJCheckBox9() {\r
-        if (jCheckBox9 == null) {\r
-            jCheckBox9 = new JCheckBox();\r
-            jCheckBox9.setPreferredSize(new java.awt.Dimension(50,20));\r
-            jCheckBox9.setText("IA32");\r
+    private JCheckBox getJCheckBoxIA32() {\r
+        if (jCheckBoxIA32 == null) {\r
+            jCheckBoxIA32 = new JCheckBox();\r
+            jCheckBoxIA32.setPreferredSize(new java.awt.Dimension(50,20));\r
+            jCheckBoxIA32.setText("IA32");\r
         }\r
-        return jCheckBox9;\r
+        return jCheckBoxIA32;\r
     }\r
 \r
     /**\r
@@ -1064,13 +997,13 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JCheckBox   \r
      */\r
-    private JCheckBox getJCheckBox10() {\r
-        if (jCheckBox10 == null) {\r
-            jCheckBox10 = new JCheckBox();\r
-            jCheckBox10.setPreferredSize(new java.awt.Dimension(50,20));\r
-            jCheckBox10.setText("IPF");\r
+    private JCheckBox getJCheckBoxIpf() {\r
+        if (jCheckBoxIpf == null) {\r
+            jCheckBoxIpf = new JCheckBox();\r
+            jCheckBoxIpf.setPreferredSize(new java.awt.Dimension(50,20));\r
+            jCheckBoxIpf.setText("IPF");\r
         }\r
-        return jCheckBox10;\r
+        return jCheckBoxIpf;\r
     }\r
 \r
     /**\r
@@ -1078,13 +1011,13 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JCheckBox   \r
      */\r
-    private JCheckBox getJCheckBox11() {\r
-        if (jCheckBox11 == null) {\r
-            jCheckBox11 = new JCheckBox();\r
-            jCheckBox11.setText("X64");\r
-            jCheckBox11.setPreferredSize(new java.awt.Dimension(47,20));\r
+    private JCheckBox getJCheckBoxX64() {\r
+        if (jCheckBoxX64 == null) {\r
+            jCheckBoxX64 = new JCheckBox();\r
+            jCheckBoxX64.setText("X64");\r
+            jCheckBoxX64.setPreferredSize(new java.awt.Dimension(47,20));\r
         }\r
-        return jCheckBox11;\r
+        return jCheckBoxX64;\r
     }\r
 \r
     /**\r
@@ -1092,13 +1025,13 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JCheckBox   \r
      */\r
-    private JCheckBox getJCheckBox12() {\r
-        if (jCheckBox12 == null) {\r
-            jCheckBox12 = new JCheckBox();\r
-            jCheckBox12.setPreferredSize(new java.awt.Dimension(50,20));\r
-            jCheckBox12.setText("EBC");\r
+    private JCheckBox getJCheckBoxEBC() {\r
+        if (jCheckBoxEBC == null) {\r
+            jCheckBoxEBC = new JCheckBox();\r
+            jCheckBoxEBC.setPreferredSize(new java.awt.Dimension(50,20));\r
+            jCheckBoxEBC.setText("EBC");\r
         }\r
-        return jCheckBox12;\r
+        return jCheckBoxEBC;\r
     }\r
 \r
     /**\r
@@ -1106,13 +1039,13 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JCheckBox   \r
      */\r
-    private JCheckBox getJCheckBox13() {\r
-        if (jCheckBox13 == null) {\r
-            jCheckBox13 = new JCheckBox();\r
-            jCheckBox13.setPreferredSize(new java.awt.Dimension(55,20));\r
-            jCheckBox13.setText("ARM");\r
+    private JCheckBox getJCheckBoxARM() {\r
+        if (jCheckBoxARM == null) {\r
+            jCheckBoxARM = new JCheckBox();\r
+            jCheckBoxARM.setPreferredSize(new java.awt.Dimension(55,20));\r
+            jCheckBoxARM.setText("ARM");\r
         }\r
-        return jCheckBox13;\r
+        return jCheckBoxARM;\r
     }\r
 \r
     /**\r
@@ -1120,13 +1053,13 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JCheckBox   \r
      */\r
-    private JCheckBox getJCheckBox14() {\r
-        if (jCheckBox14 == null) {\r
-            jCheckBox14 = new JCheckBox();\r
-            jCheckBox14.setPreferredSize(new java.awt.Dimension(50,20));\r
-            jCheckBox14.setText("PPC");\r
+    private JCheckBox getJCheckBoxPPC() {\r
+        if (jCheckBoxPPC == null) {\r
+            jCheckBoxPPC = new JCheckBox();\r
+            jCheckBoxPPC.setPreferredSize(new java.awt.Dimension(50,20));\r
+            jCheckBoxPPC.setText("PPC");\r
         }\r
-        return jCheckBox14;\r
+        return jCheckBoxPPC;\r
     }\r
 \r
     /**\r
@@ -1134,12 +1067,12 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JTextField  \r
      */\r
-    private JTextField getJTextField12() {\r
-        if (jTextField12 == null) {\r
-            jTextField12 = new JTextField();\r
-            jTextField12.setPreferredSize(new java.awt.Dimension(150,20));\r
+    private JTextField getJTextFieldBuildTargets() {\r
+        if (jTextFieldBuildTargets == null) {\r
+            jTextFieldBuildTargets = new JTextField();\r
+            jTextFieldBuildTargets.setPreferredSize(new java.awt.Dimension(150,20));\r
         }\r
-        return jTextField12;\r
+        return jTextFieldBuildTargets;\r
     }\r
 \r
     /**\r
@@ -1147,12 +1080,12 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JTextField  \r
      */\r
-    private JTextField getJTextField13() {\r
-        if (jTextField13 == null) {\r
-            jTextField13 = new JTextField();\r
-            jTextField13.setPreferredSize(new java.awt.Dimension(140,20));\r
+    private JTextField getJTextFieldTagName() {\r
+        if (jTextFieldTagName == null) {\r
+            jTextFieldTagName = new JTextField();\r
+            jTextFieldTagName.setPreferredSize(new java.awt.Dimension(140,20));\r
         }\r
-        return jTextField13;\r
+        return jTextFieldTagName;\r
     }\r
 \r
     /**\r
@@ -1160,13 +1093,13 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \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(150,419));\r
-            jScrollPane.setViewportView(getJTable());\r
+    private JScrollPane getJScrollPaneFfs() {\r
+        if (jScrollPaneFfs == null) {\r
+            jScrollPaneFfs = new JScrollPane();\r
+            jScrollPaneFfs.setPreferredSize(new java.awt.Dimension(150,419));\r
+            jScrollPaneFfs.setViewportView(getJTableFfs());\r
         }\r
-        return jScrollPane;\r
+        return jScrollPaneFfs;\r
     }\r
 \r
     /**\r
@@ -1174,16 +1107,16 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JTable      \r
      */\r
-    private JTable getJTable() {\r
-        if (jTable == null) {\r
+    private JTable getJTableFfs() {\r
+        if (jTableFfs == null) {\r
             ffsTableModel = new DefaultTableModel();\r
             ffsTableModel.addColumn("FFS Type");\r
-            jTable = new JTable(ffsTableModel);\r
-            jTable.setShowGrid(false);\r
-            jTable.setRowHeight(20);\r
+            jTableFfs = new JTable(ffsTableModel);\r
+            jTableFfs.setShowGrid(false);\r
+            jTableFfs.setRowHeight(20);\r
             \r
-            jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
-            jTable.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
+            jTableFfs.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+            jTableFfs.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
                 public void valueChanged(ListSelectionEvent e) {\r
                     \r
                     if (e.getValueIsAdjusting()){\r
@@ -1204,8 +1137,8 @@ public class FpdBuildOptions extends IInternalFrame {
                         ArrayList<String> alSections = new ArrayList<String>();\r
                         ArrayList<String> alSection = new ArrayList<String>();\r
                         ffc.getBuildOptionsFfs(row, sArray, lhm, alSections, alSection);\r
-                        jTextField6.setText(sArray[0]);\r
-                        jTextField.setText(sArray[1]);\r
+                        jTextFieldFfsKey.setText(sArray[0]);\r
+                        jTextFieldEncapType.setText(sArray[1]);\r
                         for (int i = 0; i < alSection.size(); ++i) {\r
                             String[] sectionRow = {alSection.get(i)};\r
                             sectionTableModel.addRow(sectionRow);\r
@@ -1228,7 +1161,7 @@ public class FpdBuildOptions extends IInternalFrame {
                 }\r
             });\r
             \r
-            jTable.getModel().addTableModelListener(new TableModelListener() {\r
+            jTableFfs.getModel().addTableModelListener(new TableModelListener() {\r
                 public void tableChanged(TableModelEvent arg0) {\r
                     // TODO Auto-generated method stub\r
                     int row = arg0.getFirstRow();\r
@@ -1240,13 +1173,13 @@ public class FpdBuildOptions extends IInternalFrame {
                         if (id.length() == 0) {\r
                             return;\r
                         }\r
-                       \r
+                        docConsole.setSaved(false);\r
                         ffc.updateBuildOptionsFfsKey(row, id);\r
                     }\r
                 }\r
             });\r
         }\r
-        return jTable;\r
+        return jTableFfs;\r
     }\r
 \r
     /**\r
@@ -1254,13 +1187,13 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JScrollPane \r
      */\r
-    private JScrollPane getJScrollPane1() {\r
-        if (jScrollPane1 == null) {\r
-            jScrollPane1 = new JScrollPane();\r
-            jScrollPane1.setPreferredSize(new java.awt.Dimension(500,80));\r
-            jScrollPane1.setViewportView(getJTable1());\r
+    private JScrollPane getJScrollPaneFfsSection() {\r
+        if (jScrollPaneFfsSection == null) {\r
+            jScrollPaneFfsSection = new JScrollPane();\r
+            jScrollPaneFfsSection.setPreferredSize(new java.awt.Dimension(500,80));\r
+            jScrollPaneFfsSection.setViewportView(getJTableFfsSection());\r
         }\r
-        return jScrollPane1;\r
+        return jScrollPaneFfsSection;\r
     }\r
 \r
     /**\r
@@ -1268,13 +1201,13 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JTable      \r
      */\r
-    private JTable getJTable1() {\r
-        if (jTable1 == null) {\r
+    private JTable getJTableFfsSection() {\r
+        if (jTableFfsSection == null) {\r
             sectionTableModel = new DefaultTableModel();\r
             sectionTableModel.addColumn("SectionType");\r
             \r
-            jTable1 = new JTable(sectionTableModel);\r
-            jTable1.setRowHeight(20);\r
+            jTableFfsSection = new JTable(sectionTableModel);\r
+            jTableFfsSection.setRowHeight(20);\r
             JComboBox cb = new JComboBox();\r
             cb.addItem("EFI_SECTION_FREEFORM_SUBTYPE_GUID");\r
             cb.addItem("EFI_SECTION_VERSION");\r
@@ -1289,14 +1222,14 @@ public class FpdBuildOptions extends IInternalFrame {
             cb.addItem("EFI_SECTION_GUID_DEFINED");\r
             cb.addItem("EFI_SECTION_COMPATIBILITY16");\r
             cb.addItem("EFI_SECTION_FIRMWARE_VOLUME_IMAGE");\r
-            jTable1.getColumnModel().getColumn(0).setCellEditor(new DefaultCellEditor(cb));\r
+            jTableFfsSection.getColumnModel().getColumn(0).setCellEditor(new DefaultCellEditor(cb));\r
             \r
-            jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+            jTableFfsSection.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
             \r
-            jTable1.getModel().addTableModelListener(new TableModelListener() {\r
+            jTableFfsSection.getModel().addTableModelListener(new TableModelListener() {\r
                 public void tableChanged(TableModelEvent arg0) {\r
                     // TODO Auto-generated method stub\r
-                    if (jTable.getSelectedRow() < 0) {\r
+                    if (jTableFfs.getSelectedRow() < 0) {\r
                         return;\r
                     }\r
                     int row = arg0.getFirstRow();\r
@@ -1304,13 +1237,13 @@ public class FpdBuildOptions extends IInternalFrame {
                     if (arg0.getType() == TableModelEvent.UPDATE){\r
                         //ToDo Data Validition check.\r
                         String type = m.getValueAt(row, 0) + "";\r
-                        \r
-                       ffc.updateBuildOptionsFfsSectionsSection(jTable.getSelectedRow(), row, type);\r
+                        docConsole.setSaved(false);\r
+                       ffc.updateBuildOptionsFfsSectionsSection(jTableFfs.getSelectedRow(), row, type);\r
                     }\r
                 }\r
             });\r
         }\r
-        return jTable1;\r
+        return jTableFfsSection;\r
     }\r
 \r
     /**\r
@@ -1318,13 +1251,13 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JScrollPane \r
      */\r
-    private JScrollPane getJScrollPane3() {\r
-        if (jScrollPane3 == null) {\r
-            jScrollPane3 = new JScrollPane();\r
-            jScrollPane3.setPreferredSize(new java.awt.Dimension(500,90));\r
-            jScrollPane3.setViewportView(getJTable3());\r
+    private JScrollPane getJScrollPaneFfsSubSection() {\r
+        if (jScrollPaneFfsSubSection == null) {\r
+            jScrollPaneFfsSubSection = new JScrollPane();\r
+            jScrollPaneFfsSubSection.setPreferredSize(new java.awt.Dimension(500,90));\r
+            jScrollPaneFfsSubSection.setViewportView(getJTableFfsSubSection());\r
         }\r
-        return jScrollPane3;\r
+        return jScrollPaneFfsSubSection;\r
     }\r
 \r
     /**\r
@@ -1332,12 +1265,12 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JTable      \r
      */\r
-    private JTable getJTable3() {\r
-        if (jTable3 == null) {\r
+    private JTable getJTableFfsSubSection() {\r
+        if (jTableFfsSubSection == null) {\r
             subsectionsTableModel = new DefaultTableModel();\r
             subsectionsTableModel.addColumn("SectionType");\r
-            jTable3 = new JTable(subsectionsTableModel);\r
-            jTable3.setRowHeight(20);\r
+            jTableFfsSubSection = new JTable(subsectionsTableModel);\r
+            jTableFfsSubSection.setRowHeight(20);\r
             JComboBox cb = new JComboBox();\r
             cb.addItem("EFI_SECTION_FREEFORM_SUBTYPE_GUID");\r
             cb.addItem("EFI_SECTION_VERSION");\r
@@ -1352,13 +1285,13 @@ public class FpdBuildOptions extends IInternalFrame {
             cb.addItem("EFI_SECTION_GUID_DEFINED");\r
             cb.addItem("EFI_SECTION_COMPATIBILITY16");\r
             cb.addItem("EFI_SECTION_FIRMWARE_VOLUME_IMAGE");\r
-            jTable3.getColumnModel().getColumn(0).setCellEditor(new DefaultCellEditor(cb));\r
-            jTable3.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+            jTableFfsSubSection.getColumnModel().getColumn(0).setCellEditor(new DefaultCellEditor(cb));\r
+            jTableFfsSubSection.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
             \r
-            jTable3.getModel().addTableModelListener(new TableModelListener() {\r
+            jTableFfsSubSection.getModel().addTableModelListener(new TableModelListener() {\r
                 public void tableChanged(TableModelEvent arg0) {\r
                     // TODO Auto-generated method stub\r
-                    if (jTable.getSelectedRow() < 0 || jTable6.getSelectedRow() < 0) {\r
+                    if (jTableFfs.getSelectedRow() < 0 || jTableFfsSections.getSelectedRow() < 0) {\r
                         return;\r
                     }\r
                     int row = arg0.getFirstRow();\r
@@ -1366,12 +1299,13 @@ public class FpdBuildOptions extends IInternalFrame {
                     if (arg0.getType() == TableModelEvent.UPDATE){\r
                         //ToDo Data Validition check.\r
                         String type = m.getValueAt(row, 0) + "";\r
-                        ffc.updateBuildOptionsFfsSectionsSectionsSection(jTable.getSelectedRow(), jTable6.getSelectedRow(), row, type);\r
+                        docConsole.setSaved(false);\r
+                        ffc.updateBuildOptionsFfsSectionsSectionsSection(jTableFfs.getSelectedRow(), jTableFfsSections.getSelectedRow(), row, type);\r
                     }\r
                 }\r
             });\r
         }\r
-        return jTable3;\r
+        return jTableFfsSubSection;\r
     }\r
 \r
     /**\r
@@ -1379,20 +1313,20 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JTextField  \r
      */\r
-    private JTextField getJTextField() {\r
-        if (jTextField == null) {\r
-            jTextField = new JTextField();\r
-            jTextField.setPreferredSize(new java.awt.Dimension(100,20));\r
-            jTextField.addFocusListener(new java.awt.event.FocusAdapter() {\r
+    private JTextField getJTextFieldEncapType() {\r
+        if (jTextFieldEncapType == null) {\r
+            jTextFieldEncapType = new JTextField();\r
+            jTextFieldEncapType.setPreferredSize(new java.awt.Dimension(100,20));\r
+            jTextFieldEncapType.addFocusListener(new java.awt.event.FocusAdapter() {\r
                 public void focusLost(java.awt.event.FocusEvent e) {\r
-                    if (jTable.getSelectedRow() < 0) {\r
+                    if (jTableFfs.getSelectedRow() < 0) {\r
                         return;\r
                     }\r
-                    ffc.updateBuildOptionsFfsSectionsType(jTable.getSelectedRow(), jTextField.getText());\r
+                    ffc.updateBuildOptionsFfsSectionsType(jTableFfs.getSelectedRow(), jTextFieldEncapType.getText());\r
                 }\r
             });\r
         }\r
-        return jTextField;\r
+        return jTextFieldEncapType;\r
     }\r
 \r
     /**\r
@@ -1400,14 +1334,14 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JPanel      \r
      */\r
-    private JPanel getJPanel4() {\r
-        if (jPanel4 == null) {\r
-            jPanel4 = new JPanel();\r
-            jPanel4.setPreferredSize(new java.awt.Dimension(100,100));\r
-            jPanel4.add(getJButton17(), null);\r
-            jPanel4.add(getJButton18(), null);\r
+    private JPanel getJPanelFfsAttribButtonGroup() {\r
+        if (jPanelFfsAttribButtonGroup == null) {\r
+            jPanelFfsAttribButtonGroup = new JPanel();\r
+            jPanelFfsAttribButtonGroup.setPreferredSize(new java.awt.Dimension(100,100));\r
+            jPanelFfsAttribButtonGroup.add(getJButtonFfsAttribNew(), null);\r
+            jPanelFfsAttribButtonGroup.add(getJButtonFfsAttribRemove(), null);\r
         }\r
-        return jPanel4;\r
+        return jPanelFfsAttribButtonGroup;\r
     }\r
 \r
     /**\r
@@ -1415,23 +1349,24 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JButton     \r
      */\r
-    private JButton getJButton() {\r
-        if (jButton == null) {\r
-            jButton = new JButton();\r
-            jButton.setPreferredSize(new java.awt.Dimension(80,20));\r
-            jButton.setText("New");\r
-            jButton.addActionListener(new java.awt.event.ActionListener() {\r
+    private JButton getJButtonFfsSectionNew() {\r
+        if (jButtonFfsSectionNew == null) {\r
+            jButtonFfsSectionNew = new JButton();\r
+            jButtonFfsSectionNew.setPreferredSize(new java.awt.Dimension(80,20));\r
+            jButtonFfsSectionNew.setText("New");\r
+            jButtonFfsSectionNew.addActionListener(new java.awt.event.ActionListener() {\r
                 public void actionPerformed(java.awt.event.ActionEvent e) {\r
-                    if (jTable.getSelectedRow() < 0) {\r
+                    if (jTableFfs.getSelectedRow() < 0) {\r
                         return;\r
                     }\r
+                    docConsole.setSaved(false);\r
                     String[] row = {"EFI_SECTION_RAW"};\r
                     sectionTableModel.addRow(row);\r
-                    ffc.genBuildOptionsFfsSectionsSection(jTable.getSelectedRow(), row[0]);\r
+                    ffc.genBuildOptionsFfsSectionsSection(jTableFfs.getSelectedRow(), row[0]);\r
                 }\r
             });\r
         }\r
-        return jButton;\r
+        return jButtonFfsSectionNew;\r
     }\r
 \r
     /**\r
@@ -1439,23 +1374,24 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JButton     \r
      */\r
-    private JButton getJButton1() {\r
-        if (jButton1 == null) {\r
-            jButton1 = new JButton();\r
-            jButton1.setPreferredSize(new java.awt.Dimension(80,20));\r
-            jButton1.setText("Remove");\r
+    private JButton getJButtonFfsSectionRemove() {\r
+        if (jButtonFfsSectionRemove == null) {\r
+            jButtonFfsSectionRemove = new JButton();\r
+            jButtonFfsSectionRemove.setPreferredSize(new java.awt.Dimension(80,20));\r
+            jButtonFfsSectionRemove.setText("Remove");\r
           \r
-            jButton1.addActionListener(new java.awt.event.ActionListener() {\r
+            jButtonFfsSectionRemove.addActionListener(new java.awt.event.ActionListener() {\r
                 public void actionPerformed(java.awt.event.ActionEvent e) {\r
-                    if (jTable.getSelectedRow() < 0 || jTable1.getSelectedRow() < 0) {\r
+                    if (jTableFfs.getSelectedRow() < 0 || jTableFfsSection.getSelectedRow() < 0) {\r
                         return;\r
                     }\r
-                    sectionTableModel.removeRow(jTable1.getSelectedRow());\r
-                    ffc.removeBuildOptionsFfsSectionsSection(jTable.getSelectedRow(), jTable1.getSelectedRow());\r
+                    docConsole.setSaved(false);\r
+                    sectionTableModel.removeRow(jTableFfsSection.getSelectedRow());\r
+                    ffc.removeBuildOptionsFfsSectionsSection(jTableFfs.getSelectedRow(), jTableFfsSection.getSelectedRow());\r
                 }\r
             });\r
         }\r
-        return jButton1;\r
+        return jButtonFfsSectionRemove;\r
     }\r
 \r
     /**\r
@@ -1463,24 +1399,25 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JButton     \r
      */\r
-    private JButton getJButton2() {\r
-        if (jButton2 == null) {\r
-            jButton2 = new JButton();\r
-            jButton2.setPreferredSize(new java.awt.Dimension(80,20));\r
-            jButton2.setText("New");\r
-            jButton2.addActionListener(new java.awt.event.ActionListener() {\r
+    private JButton getJButtonFfsSubSectionNew() {\r
+        if (jButtonFfsSubSectionNew == null) {\r
+            jButtonFfsSubSectionNew = new JButton();\r
+            jButtonFfsSubSectionNew.setPreferredSize(new java.awt.Dimension(80,20));\r
+            jButtonFfsSubSectionNew.setText("New");\r
+            jButtonFfsSubSectionNew.addActionListener(new java.awt.event.ActionListener() {\r
                 public void actionPerformed(java.awt.event.ActionEvent e) {\r
-                    if (jTable.getSelectedRow() < 0 || jTable6.getSelectedRow() < 0) {\r
+                    if (jTableFfs.getSelectedRow() < 0 || jTableFfsSections.getSelectedRow() < 0) {\r
                         return;\r
                     }\r
+                    docConsole.setSaved(false);\r
                     String[] row = {"EFI_SECTION_RAW"};\r
                     subsectionsTableModel.addRow(row);\r
-                    ffc.genBuildOptionsFfsSectionsSectionsSection(jTable.getSelectedRow(), jTable6.getSelectedRow(), row[0]);\r
+                    ffc.genBuildOptionsFfsSectionsSectionsSection(jTableFfs.getSelectedRow(), jTableFfsSections.getSelectedRow(), row[0]);\r
                     \r
                 }\r
             });\r
         }\r
-        return jButton2;\r
+        return jButtonFfsSubSectionNew;\r
     }\r
 \r
     /**\r
@@ -1488,22 +1425,23 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JButton     \r
      */\r
-    private JButton getJButton3() {\r
-        if (jButton3 == null) {\r
-            jButton3 = new JButton();\r
-            jButton3.setPreferredSize(new java.awt.Dimension(80,20));\r
-            jButton3.setText("Remove");\r
-            jButton3.addActionListener(new java.awt.event.ActionListener() {\r
+    private JButton getJButtonFfsSubSectionRemove() {\r
+        if (jButtonFfsSubSectionRemove == null) {\r
+            jButtonFfsSubSectionRemove = new JButton();\r
+            jButtonFfsSubSectionRemove.setPreferredSize(new java.awt.Dimension(80,20));\r
+            jButtonFfsSubSectionRemove.setText("Remove");\r
+            jButtonFfsSubSectionRemove.addActionListener(new java.awt.event.ActionListener() {\r
                 public void actionPerformed(java.awt.event.ActionEvent e) {\r
-                    if (jTable.getSelectedRow() < 0 || jTable6.getSelectedRow() < 0 || jTable3.getSelectedRow() < 0) {\r
+                    if (jTableFfs.getSelectedRow() < 0 || jTableFfsSections.getSelectedRow() < 0 || jTableFfsSubSection.getSelectedRow() < 0) {\r
                         return;\r
                     }\r
-                    subsectionsTableModel.removeRow(jTable3.getSelectedRow());\r
-                    ffc.removeBuildOptionsFfsSectionsSectionsSection(jTable.getSelectedRow(), jTable6.getSelectedRow(), jTable3.getSelectedRow());\r
+                    docConsole.setSaved(false);\r
+                    subsectionsTableModel.removeRow(jTableFfsSubSection.getSelectedRow());\r
+                    ffc.removeBuildOptionsFfsSectionsSectionsSection(jTableFfs.getSelectedRow(), jTableFfsSections.getSelectedRow(), jTableFfsSubSection.getSelectedRow());\r
                 }\r
             });\r
         }\r
-        return jButton3;\r
+        return jButtonFfsSubSectionRemove;\r
     }\r
 \r
     /**\r
@@ -1511,23 +1449,24 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JButton     \r
      */\r
-    private JButton getJButton6() {\r
-        if (jButton6 == null) {\r
-            jButton6 = new JButton();\r
-            jButton6.setPreferredSize(new java.awt.Dimension(80,20));\r
-            jButton6.setText("New");\r
-            jButton6.addActionListener(new java.awt.event.ActionListener() {\r
+    private JButton getJButtonFfsSectionsNew() {\r
+        if (jButtonFfsSectionsNew == null) {\r
+            jButtonFfsSectionsNew = new JButton();\r
+            jButtonFfsSectionsNew.setPreferredSize(new java.awt.Dimension(80,20));\r
+            jButtonFfsSectionsNew.setText("New");\r
+            jButtonFfsSectionsNew.addActionListener(new java.awt.event.ActionListener() {\r
                 public void actionPerformed(java.awt.event.ActionEvent e) {\r
-                    if (jTable.getSelectedRow() < 0) {\r
+                    if (jTableFfs.getSelectedRow() < 0) {\r
                         return;\r
                     }\r
+                    docConsole.setSaved(false);\r
                     String[] row = {""};\r
                     sectionsTableModel.addRow(row);\r
-                    ffc.genBuildOptionsFfsSectionsSections(jTable.getSelectedRow(), "");\r
+                    ffc.genBuildOptionsFfsSectionsSections(jTableFfs.getSelectedRow(), "");\r
                 }\r
             });\r
         }\r
-        return jButton6;\r
+        return jButtonFfsSectionsNew;\r
     }\r
 \r
     /**\r
@@ -1535,22 +1474,23 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JButton     \r
      */\r
-    private JButton getJButton7() {\r
-        if (jButton7 == null) {\r
-            jButton7 = new JButton();\r
-            jButton7.setPreferredSize(new java.awt.Dimension(80,20));\r
-            jButton7.setText("Remove");\r
-            jButton7.addActionListener(new java.awt.event.ActionListener() {\r
+    private JButton getJButtonFfsSectionsRemove() {\r
+        if (jButtonFfsSectionsRemove == null) {\r
+            jButtonFfsSectionsRemove = new JButton();\r
+            jButtonFfsSectionsRemove.setPreferredSize(new java.awt.Dimension(80,20));\r
+            jButtonFfsSectionsRemove.setText("Remove");\r
+            jButtonFfsSectionsRemove.addActionListener(new java.awt.event.ActionListener() {\r
                 public void actionPerformed(java.awt.event.ActionEvent e) {\r
-                    if (jTable.getSelectedRow() < 0 || jTable6.getSelectedRow() < 0) {\r
+                    if (jTableFfs.getSelectedRow() < 0 || jTableFfsSections.getSelectedRow() < 0) {\r
                         return;\r
                     }\r
-                    sectionsTableModel.removeRow(jTable6.getSelectedRow());\r
-                    ffc.removeBuildOptionsFfsSectionsSections(jTable.getSelectedRow(), jTable6.getSelectedRow());\r
+                    docConsole.setSaved(false);\r
+                    sectionsTableModel.removeRow(jTableFfsSections.getSelectedRow());\r
+                    ffc.removeBuildOptionsFfsSectionsSections(jTableFfs.getSelectedRow(), jTableFfsSections.getSelectedRow());\r
                 }\r
             });\r
         }\r
-        return jButton7;\r
+        return jButtonFfsSectionsRemove;\r
     }\r
 \r
     /**\r
@@ -1558,13 +1498,13 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JScrollPane \r
      */\r
-    private JScrollPane getJScrollPane4() {\r
-        if (jScrollPane4 == null) {\r
-            jScrollPane4 = new JScrollPane();\r
-            jScrollPane4.setPreferredSize(new java.awt.Dimension(500,80));\r
-            jScrollPane4.setViewportView(getJTable6());\r
+    private JScrollPane getJScrollPaneFfsSections() {\r
+        if (jScrollPaneFfsSections == null) {\r
+            jScrollPaneFfsSections = new JScrollPane();\r
+            jScrollPaneFfsSections.setPreferredSize(new java.awt.Dimension(500,80));\r
+            jScrollPaneFfsSections.setViewportView(getJTableFfsSections());\r
         }\r
-        return jScrollPane4;\r
+        return jScrollPaneFfsSections;\r
     }\r
 \r
     /**\r
@@ -1572,14 +1512,14 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JTable      \r
      */\r
-    private JTable getJTable6() {\r
-        if (jTable6 == null) {\r
+    private JTable getJTableFfsSections() {\r
+        if (jTableFfsSections == null) {\r
             sectionsTableModel = new DefaultTableModel();\r
             sectionsTableModel.addColumn("EncapsulationType");\r
-            jTable6 = new JTable(sectionsTableModel);\r
-            jTable6.setRowHeight(20);\r
-            jTable6.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
-            jTable6.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
+            jTableFfsSections = new JTable(sectionsTableModel);\r
+            jTableFfsSections.setRowHeight(20);\r
+            jTableFfsSections.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+            jTableFfsSections.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
                 public void valueChanged(ListSelectionEvent e) {\r
                     if (e.getValueIsAdjusting()){\r
                         return;\r
@@ -1590,12 +1530,12 @@ public class FpdBuildOptions extends IInternalFrame {
                     }\r
                     else{\r
                         int sectionsRow = lsm.getMinSelectionIndex();\r
-                        if (jTable.getSelectedRow() < 0) {\r
+                        if (jTableFfs.getSelectedRow() < 0) {\r
                             return;\r
                         }\r
                         subsectionsTableModel.setRowCount(0);\r
                         ArrayList<String> al = new ArrayList<String>();\r
-                        ffc.getBuildOptionsFfsSectionsSectionsSection(jTable.getSelectedRow(), sectionsRow, al);\r
+                        ffc.getBuildOptionsFfsSectionsSectionsSection(jTableFfs.getSelectedRow(), sectionsRow, al);\r
                         for (int i = 0; i < al.size(); ++i) {\r
                             String[] subsectionRow = {al.get(i)};\r
                             subsectionsTableModel.addRow(subsectionRow);\r
@@ -1604,7 +1544,7 @@ public class FpdBuildOptions extends IInternalFrame {
                 }\r
             });\r
             \r
-            jTable6.getModel().addTableModelListener(new TableModelListener() {\r
+            jTableFfsSections.getModel().addTableModelListener(new TableModelListener() {\r
                 public void tableChanged(TableModelEvent arg0) {\r
                     // TODO Auto-generated method stub\r
                     int row = arg0.getFirstRow();\r
@@ -1612,12 +1552,308 @@ public class FpdBuildOptions extends IInternalFrame {
                     if (arg0.getType() == TableModelEvent.UPDATE){\r
                         //ToDo Data Validition check.\r
                         String encapType = m.getValueAt(row, 0) + "";\r
-                        ffc.updateBuildOptionsFfsSectionsSections(jTable.getSelectedRow(), row, encapType);\r
+                        docConsole.setSaved(false);\r
+                        ffc.updateBuildOptionsFfsSectionsSections(jTableFfs.getSelectedRow(), row, encapType);\r
                     }\r
                 }\r
             });\r
         }\r
-        return jTable6;\r
+        return jTableFfsSections;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jButton12       \r
+     *         \r
+     * @return javax.swing.JButton     \r
+     */\r
+    private JButton getJButtonAntTaskFileBrowse() {\r
+        if (jButtonAntTaskFileBrowse == null) {\r
+            jButtonAntTaskFileBrowse = new JButton();\r
+            jButtonAntTaskFileBrowse.setPreferredSize(new Dimension(90, 20));\r
+            jButtonAntTaskFileBrowse.setText("Browse");\r
+            jButtonAntTaskFileBrowse.addActionListener(new AbstractAction() {\r
+                private static final long serialVersionUID = 1L;\r
+\r
+                public void actionPerformed(ActionEvent arg0) {\r
+                    //\r
+                    // Select files from current workspace\r
+                    //\r
+                    String dirPrefix = System.getenv("WORKSPACE");\r
+                    JFileChooser chooser = new JFileChooser(dirPrefix);\r
+                    File theFile = null;\r
+                    String headerDest = null;\r
+                    \r
+                    chooser.setMultiSelectionEnabled(false);\r
+                    chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);\r
+                    int retval = chooser.showOpenDialog(frame);\r
+                    if (retval == JFileChooser.APPROVE_OPTION) {\r
+\r
+                        theFile = chooser.getSelectedFile();\r
+                        String file = theFile.getPath();\r
+                        if (!file.startsWith(dirPrefix)) {\r
+                            JOptionPane.showMessageDialog(frame, "You can only select files in current package!");\r
+                            return;\r
+                        }\r
+                    }\r
+                    else {\r
+                        return;\r
+                    }\r
+                    \r
+                    headerDest = theFile.getPath();\r
+                    jTextFieldAntTaskFile.setText(headerDest.substring(dirPrefix.length()).replace('\\', '/'));\r
+               \r
+                }\r
+\r
+            });\r
+        }\r
+        return jButtonAntTaskFileBrowse;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jTextField1     \r
+     *         \r
+     * @return javax.swing.JTextField  \r
+     */\r
+    private JTextField getJTextFieldToolChainFamily() {\r
+        if (jTextFieldToolChainFamily == null) {\r
+            jTextFieldToolChainFamily = new JTextField();\r
+            jTextFieldToolChainFamily.setPreferredSize(new java.awt.Dimension(85,20));\r
+        }\r
+        return jTextFieldToolChainFamily;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jSplitPaneFfsC  \r
+     *         \r
+     * @return javax.swing.JSplitPane  \r
+     */\r
+    private JSplitPane getJSplitPaneFfsC() {\r
+        if (jSplitPaneFfsC == null) {\r
+            jSplitPaneFfsC = new JSplitPane();\r
+            jSplitPaneFfsC.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);\r
+            jSplitPaneFfsC.setDividerLocation(130);\r
+            jSplitPaneFfsC.setTopComponent(getJPanelFfsCTop());\r
+            jSplitPaneFfsC.setBottomComponent(getJSplitPaneFfsCBottom());\r
+            jSplitPaneFfsC.setDividerSize(5);\r
+        }\r
+        return jSplitPaneFfsC;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jPanelFfsCTop   \r
+     *         \r
+     * @return javax.swing.JPanel      \r
+     */\r
+    private JPanel getJPanelFfsCTop() {\r
+        if (jPanelFfsCTop == null) {\r
+            jPanelFfsCTop = new JPanel();\r
+            jPanelFfsCTop.setLayout(new BorderLayout());\r
+            jPanelFfsCTop.add(getJPanelSectionN(), java.awt.BorderLayout.NORTH);\r
+            jPanelFfsCTop.add(getJPanelSectionC(), java.awt.BorderLayout.CENTER);\r
+        }\r
+        return jPanelFfsCTop;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jSplitPaneFfsCBottom    \r
+     *         \r
+     * @return javax.swing.JSplitPane  \r
+     */\r
+    private JSplitPane getJSplitPaneFfsCBottom() {\r
+        if (jSplitPaneFfsCBottom == null) {\r
+            jSplitPaneFfsCBottom = new JSplitPane();\r
+            jSplitPaneFfsCBottom.setDividerSize(5);\r
+            jSplitPaneFfsCBottom.setDividerLocation(130);\r
+            jSplitPaneFfsCBottom.setTopComponent(getJPanelFfsCBottomTop());\r
+            jSplitPaneFfsCBottom.setBottomComponent(getJPanelFfsCBottomBottom());\r
+            jSplitPaneFfsCBottom.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);\r
+        }\r
+        return jSplitPaneFfsCBottom;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jPanelFfsCBottomTop     \r
+     *         \r
+     * @return javax.swing.JPanel      \r
+     */\r
+    private JPanel getJPanelFfsCBottomTop() {\r
+        if (jPanelFfsCBottomTop == null) {\r
+            jPanelFfsCBottomTop = new JPanel();\r
+            jPanelFfsCBottomTop.setLayout(new BorderLayout());\r
+            jPanelFfsCBottomTop.add(getJPanelSectionsN(), java.awt.BorderLayout.NORTH);\r
+            jPanelFfsCBottomTop.add(getJPanelSectionsC(), java.awt.BorderLayout.CENTER);\r
+        }\r
+        return jPanelFfsCBottomTop;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jPanelFfsCBottomBottom  \r
+     *         \r
+     * @return javax.swing.JPanel      \r
+     */\r
+    private JPanel getJPanelFfsCBottomBottom() {\r
+        if (jPanelFfsCBottomBottom == null) {\r
+            jPanelFfsCBottomBottom = new JPanel();\r
+            jPanelFfsCBottomBottom.setLayout(new BorderLayout());\r
+            jPanelFfsCBottomBottom.add(getJPanelSubSectionN(), java.awt.BorderLayout.NORTH);\r
+            jPanelFfsCBottomBottom.add(getJPanelSubSectionC(), java.awt.BorderLayout.CENTER);\r
+        }\r
+        return jPanelFfsCBottomBottom;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jPanelSectionN  \r
+     *         \r
+     * @return javax.swing.JPanel      \r
+     */\r
+    private JPanel getJPanelSectionN() {\r
+        if (jPanelSectionN == null) {\r
+            jPanelSectionN = new JPanel();\r
+            jLabelFfsSection = new JLabel();\r
+            jLabelFfsSection.setText("Section");\r
+            jPanelSectionN.add(jLabelFfsSection, null);\r
+            jPanelSectionN.add(getJButtonFfsSectionNew(), null);\r
+            jPanelSectionN.add(getJButtonFfsSectionRemove(), null);\r
+        }\r
+        return jPanelSectionN;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jPanelSectionC  \r
+     *         \r
+     * @return javax.swing.JPanel      \r
+     */\r
+    private JPanel getJPanelSectionC() {\r
+        if (jPanelSectionC == null) {\r
+            jPanelSectionC = new JPanel();\r
+            jPanelSectionC.add(getJScrollPaneFfsSection(), null);\r
+        }\r
+        return jPanelSectionC;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jPanelSectionsN \r
+     *         \r
+     * @return javax.swing.JPanel      \r
+     */\r
+    private JPanel getJPanelSectionsN() {\r
+        if (jPanelSectionsN == null) {\r
+            jPanelSectionsN = new JPanel();\r
+            jLabelFfsSections = new JLabel();\r
+            jLabelFfsSections.setText("Sections");\r
+            jPanelSectionsN.add(jLabelFfsSections, null);\r
+            jPanelSectionsN.add(getJButtonFfsSectionsNew(), null);\r
+            jPanelSectionsN.add(getJButtonFfsSectionsRemove(), null);\r
+        }\r
+        return jPanelSectionsN;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jPanelSectionsC \r
+     *         \r
+     * @return javax.swing.JPanel      \r
+     */\r
+    private JPanel getJPanelSectionsC() {\r
+        if (jPanelSectionsC == null) {\r
+            jPanelSectionsC = new JPanel();\r
+            jPanelSectionsC.add(getJScrollPaneFfsSections(), null);\r
+        }\r
+        return jPanelSectionsC;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jPanelSubSectionN       \r
+     *         \r
+     * @return javax.swing.JPanel      \r
+     */\r
+    private JPanel getJPanelSubSectionN() {\r
+        if (jPanelSubSectionN == null) {\r
+            jPanelSubSectionN = new JPanel();\r
+            jLabelFfsSubSections = new JLabel();\r
+            jLabelFfsSubSections.setText("Sub-Sections");\r
+            jPanelSubSectionN.add(jLabelFfsSubSections, null);\r
+            jPanelSubSectionN.add(getJButtonFfsSubSectionNew(), null);\r
+            jPanelSubSectionN.add(getJButtonFfsSubSectionRemove(), null);\r
+        }\r
+        return jPanelSubSectionN;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jPanelSubSectionC       \r
+     *         \r
+     * @return javax.swing.JPanel      \r
+     */\r
+    private JPanel getJPanelSubSectionC() {\r
+        if (jPanelSubSectionC == null) {\r
+            jPanelSubSectionC = new JPanel();\r
+            jPanelSubSectionC.add(getJScrollPaneFfsSubSection(), null);\r
+        }\r
+        return jPanelSubSectionC;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jPanelOptionsContainer  \r
+     *         \r
+     * @return javax.swing.JPanel      \r
+     */\r
+    private JPanel getJPanelOptionsContainer() {\r
+        if (jPanelOptionsContainer == null) {\r
+            FlowLayout flowLayout = new FlowLayout();\r
+            flowLayout.setAlignment(java.awt.FlowLayout.LEFT);\r
+            jPanelOptionsContainer = new JPanel();\r
+            jPanelOptionsContainer.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));\r
+            jPanelOptionsContainer.setLayout(flowLayout);\r
+            jPanelOptionsContainer.setPreferredSize(new java.awt.Dimension(650,100));\r
+            jPanelOptionsContainer.add(jLabelBuildTargets, null);\r
+            jPanelOptionsContainer.add(getJTextFieldBuildTargets(), null);\r
+            jPanelOptionsContainer.add(jLabelToolChainFamily, null);\r
+            jPanelOptionsContainer.add(getJTextFieldToolChainFamily(), null);\r
+            jPanelOptionsContainer.add(jLabelToolCmd, null);\r
+            jPanelOptionsContainer.add(getJTextFieldToolCmd(), null);\r
+            jPanelOptionsContainer.add(jLabelSupArch, null);\r
+            jPanelOptionsContainer.add(getJCheckBoxIA32(), null);\r
+            jPanelOptionsContainer.add(getJCheckBoxIpf(), null);\r
+            jPanelOptionsContainer.add(getJCheckBoxX64(), null);\r
+            jPanelOptionsContainer.add(getJCheckBoxEBC(), null);\r
+            jPanelOptionsContainer.add(getJCheckBoxARM(), null);\r
+            jPanelOptionsContainer.add(getJCheckBoxPPC(), null);\r
+            jPanelOptionsContainer.add(jLabelTagName, null);\r
+            jPanelOptionsContainer.add(getJTextFieldTagName(), null);\r
+            jPanelOptionsContainer.add(jLabelOptionContents, null);\r
+            jPanelOptionsContainer.add(getJTextFieldOptionContents(), null);\r
+            jPanelOptionsContainer.add(getJButtonOptionsAdd(), null);\r
+            jPanelOptionsContainer.add(getJButtonOptionsDel(), null);\r
+        }\r
+        return jPanelOptionsContainer;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jPanelUserDefCenterN    \r
+     *         \r
+     * @return javax.swing.JPanel      \r
+     */\r
+    private JPanel getJPanelUserDefCenterN() {\r
+        if (jPanelUserDefCenterN == null) {\r
+            jPanelUserDefCenterN = new JPanel();\r
+            jPanelUserDefCenterN.add(jLabelAntCmdOpts, null);\r
+            jPanelUserDefCenterN.add(getJTextFieldAntCmdOpts(), null);\r
+            jPanelUserDefCenterN.add(getJButtonAntTaskAdd(), null);\r
+            jPanelUserDefCenterN.add(getJButtonAntTaskDel(), null);\r
+        }\r
+        return jPanelUserDefCenterN;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jPanelUserDefCenterC    \r
+     *         \r
+     * @return javax.swing.JPanel      \r
+     */\r
+    private JPanel getJPanelUserDefCenterC() {\r
+        if (jPanelUserDefCenterC == null) {\r
+            jPanelUserDefCenterC = new JPanel();\r
+            jPanelUserDefCenterC.add(getJScrollPaneAntTasks(), null);\r
+        }\r
+        return jPanelUserDefCenterC;\r
     }\r
 \r
     /**\r
@@ -1642,6 +1878,11 @@ public class FpdBuildOptions extends IInternalFrame {
         ffc = new FpdFileContents(fpd);\r
         init(ffc);\r
     }\r
+    \r
+    public FpdBuildOptions(OpeningPlatformType opt) {\r
+        this(opt.getXmlFpd());\r
+        docConsole = opt;\r
+    }\r
 \r
     private void init(FpdFileContents ffc) {\r
         initOptionTable();\r
@@ -1649,23 +1890,23 @@ public class FpdBuildOptions extends IInternalFrame {
         initFfsTable();\r
         this.addInternalFrameListener(new InternalFrameAdapter(){\r
             public void internalFrameDeactivated(InternalFrameEvent e){\r
-                if (jTable.isEditing()) {\r
-                    jTable.getCellEditor().stopCellEditing();\r
+                if (jTableFfs.isEditing()) {\r
+                    jTableFfs.getCellEditor().stopCellEditing();\r
                 }\r
-                if (jTable1.isEditing()) {\r
-                    jTable1.getCellEditor().stopCellEditing();\r
+                if (jTableFfsSection.isEditing()) {\r
+                    jTableFfsSection.getCellEditor().stopCellEditing();\r
                 }\r
-                if (jTable2.isEditing()) {\r
-                    jTable2.getCellEditor().stopCellEditing();\r
+                if (jTableAntTasks.isEditing()) {\r
+                    jTableAntTasks.getCellEditor().stopCellEditing();\r
                 }\r
-                if (jTable3.isEditing()) {\r
-                    jTable3.getCellEditor().stopCellEditing();\r
+                if (jTableFfsSubSection.isEditing()) {\r
+                    jTableFfsSubSection.getCellEditor().stopCellEditing();\r
                 }\r
-                if (jTable4.isEditing()) {\r
-                    jTable4.getCellEditor().stopCellEditing();\r
+                if (jTableFfsAttribs.isEditing()) {\r
+                    jTableFfsAttribs.getCellEditor().stopCellEditing();\r
                 }\r
-                if (jTable5.isEditing()) {\r
-                    jTable5.getCellEditor().stopCellEditing();\r
+                if (jTableOptions.isEditing()) {\r
+                    jTableOptions.getCellEditor().stopCellEditing();\r
                 }\r
             }\r
         });\r
@@ -1725,10 +1966,10 @@ public class FpdBuildOptions extends IInternalFrame {
         if (jContentPane == null) {\r
             jContentPane = new JPanel();\r
             jContentPane.setLayout(new BorderLayout());\r
-            jContentPane.add(getJPanel(), java.awt.BorderLayout.SOUTH);\r
-            jContentPane.add(getJPanel1(), java.awt.BorderLayout.NORTH);\r
-            jContentPane.add(getJPanel2(), java.awt.BorderLayout.WEST);\r
-            jContentPane.add(getJPanel3(), java.awt.BorderLayout.EAST);\r
+            jContentPane.add(getJPanelContentSouth(), java.awt.BorderLayout.SOUTH);\r
+            jContentPane.add(getJPanelContentNorth(), java.awt.BorderLayout.NORTH);\r
+            jContentPane.add(getJPanelContentWest(), java.awt.BorderLayout.WEST);\r
+            jContentPane.add(getJPanelContentEast(), java.awt.BorderLayout.EAST);\r
             jContentPane.add(getJTabbedPane(), java.awt.BorderLayout.CENTER);\r
         }\r
         return jContentPane;\r