Adjust Platform Definition and Module SA operations in FPD editor.
authorjlin16 <jlin16@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 4 Jul 2006 03:56:07 +0000 (03:56 +0000)
committerjlin16 <jlin16@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 4 Jul 2006 03:56:07 +0000 (03:56 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@729 6f19259b-4bc3-4df7-8a09-765794883524

Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFileContents.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdModuleSA.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdPlatformDefs.java

index 2f2dbc6b757b7efc9b20af386e324ddbfeccc509..b9e772e0b3b868716eb47cd358d2621fdbb7f642 100644 (file)
@@ -23,6 +23,7 @@ import java.util.List;
 import java.util.ListIterator;\r
 import java.util.Map;\r
 import java.util.Set;\r
+import java.util.Vector;\r
 \r
 import javax.xml.namespace.QName;\r
 \r
@@ -36,6 +37,7 @@ import org.tianocore.EfiSectionType;
 import org.tianocore.FlashDefinitionFileDocument;\r
 import org.tianocore.FlashDocument;\r
 import org.tianocore.FrameworkModulesDocument;\r
+import org.tianocore.IntermediateOutputType;\r
 import org.tianocore.LibrariesDocument;\r
 import org.tianocore.ModuleSADocument;\r
 import org.tianocore.ModuleSurfaceAreaDocument;\r
@@ -172,29 +174,6 @@ public class FpdFileContents {
         return fpdFrameworkModules;\r
     }\r
     \r
-    public int getPlatformDefsSkuInfoCount(){\r
-        if (getfpdPlatformDefs().getSkuInfo() == null || getfpdPlatformDefs().getSkuInfo().getUiSkuNameList() == null) {\r
-            return 0;\r
-        }\r
-        return getfpdPlatformDefs().getSkuInfo().getUiSkuNameList().size();\r
-    }\r
-    \r
-    public void getPlatformDefsSkuInfos(String[][] saa){\r
-        if (getfpdPlatformDefs().getSkuInfo() == null || getfpdPlatformDefs().getSkuInfo().getUiSkuNameList() == null) {\r
-            return ;\r
-        }\r
-        \r
-        List<SkuInfoDocument.SkuInfo.UiSkuName> l = getfpdPlatformDefs().getSkuInfo().getUiSkuNameList();\r
-        ListIterator<SkuInfoDocument.SkuInfo.UiSkuName> li = l.listIterator();\r
-        int i = 0;\r
-        while(li.hasNext()) {\r
-            SkuInfoDocument.SkuInfo.UiSkuName sku = li.next();\r
-            saa[i][0] = sku.getSkuID()+"";\r
-            saa[i][1] = sku.getStringValue();\r
-            ++i;\r
-        }\r
-    }\r
-    \r
     public int getFrameworkModulesCount() {\r
         if (getfpdFrameworkModules().getModuleSAList() == null){\r
             return 0;\r
@@ -1504,6 +1483,129 @@ public class FpdFileContents {
         return fpdPlatformDefs;\r
     }\r
     \r
+    public void getPlatformDefsSupportedArchs(Vector<Object> archs){\r
+        if (getfpdPlatformDefs().getSupportedArchitectures() == null) {\r
+            return;\r
+        }\r
+        ListIterator li = getfpdPlatformDefs().getSupportedArchitectures().listIterator();\r
+        while(li.hasNext()) {\r
+            archs.add(li.next());\r
+        }\r
+    }\r
+    \r
+    public void setPlatformDefsSupportedArchs(Vector<Object> archs) {\r
+        getfpdPlatformDefs().setSupportedArchitectures(archs);\r
+    }\r
+    \r
+    public void getPlatformDefsBuildTargets(Vector<Object> targets) {\r
+        if (getfpdPlatformDefs().getBuildTargets() == null) {\r
+            return;\r
+        }\r
+        ListIterator li = getfpdPlatformDefs().getBuildTargets().listIterator();\r
+        while(li.hasNext()) {\r
+            targets.add(li.next());\r
+        }\r
+    }\r
+    \r
+    public void setPlatformDefsBuildTargets(Vector<Object> targets) {\r
+        getfpdPlatformDefs().setBuildTargets(targets);\r
+    }\r
+    \r
+    public void genPlatformDefsSkuInfo(String id, String name) {\r
+        SkuInfoDocument.SkuInfo skuInfo = null;\r
+        if (getfpdPlatformDefs().getSkuInfo() == null) {\r
+            skuInfo = getfpdPlatformDefs().addNewSkuInfo();\r
+        }\r
+        skuInfo = getfpdPlatformDefs().getSkuInfo();\r
+        if (skuInfo.getUiSkuNameList() == null || skuInfo.getUiSkuNameList().size() == 0) {\r
+            SkuInfoDocument.SkuInfo.UiSkuName skuName = skuInfo.addNewUiSkuName();\r
+            skuName.setSkuID(new BigInteger("0"));\r
+            skuName.setStringValue("DEFAULT");\r
+        }\r
+        if (id.equals("0")) {\r
+            return;\r
+        }\r
+        SkuInfoDocument.SkuInfo.UiSkuName skuName = skuInfo.addNewUiSkuName();\r
+        skuName.setSkuID(new BigInteger(id));\r
+        skuName.setStringValue(name);\r
+    }\r
+    \r
+    public int getPlatformDefsSkuInfoCount(){\r
+        if (getfpdPlatformDefs().getSkuInfo() == null || getfpdPlatformDefs().getSkuInfo().getUiSkuNameList() == null) {\r
+            return 0;\r
+        }\r
+        return getfpdPlatformDefs().getSkuInfo().getUiSkuNameList().size();\r
+    }\r
+    \r
+    public void getPlatformDefsSkuInfos(String[][] saa){\r
+        if (getfpdPlatformDefs().getSkuInfo() == null || getfpdPlatformDefs().getSkuInfo().getUiSkuNameList() == null) {\r
+            return ;\r
+        }\r
+        \r
+        List<SkuInfoDocument.SkuInfo.UiSkuName> l = getfpdPlatformDefs().getSkuInfo().getUiSkuNameList();\r
+        ListIterator<SkuInfoDocument.SkuInfo.UiSkuName> li = l.listIterator();\r
+        int i = 0;\r
+        while(li.hasNext()) {\r
+            SkuInfoDocument.SkuInfo.UiSkuName sku = li.next();\r
+            saa[i][0] = sku.getSkuID()+"";\r
+            saa[i][1] = sku.getStringValue();\r
+            ++i;\r
+        }\r
+    }\r
+    \r
+    public void removePlatformDefsSkuInfo(int i) {\r
+        SkuInfoDocument.SkuInfo skuInfo = getfpdPlatformDefs().getSkuInfo();\r
+        if (skuInfo == null || i == 0) {\r
+            return ;\r
+        }\r
+        \r
+        XmlCursor cursor = skuInfo.newCursor();\r
+        if (cursor.toFirstChild()) {\r
+            for (int j = 0; j < i; ++j) {\r
+                cursor.toNextSibling();\r
+            }\r
+            cursor.removeXml();\r
+        }\r
+        cursor.dispose();\r
+    }\r
+    \r
+    public void updatePlatformDefsSkuInfo(int i, String id, String name) {\r
+        SkuInfoDocument.SkuInfo skuInfo = getfpdPlatformDefs().getSkuInfo();\r
+        if (skuInfo == null || i == 0) {\r
+            return ;\r
+        }\r
+        \r
+        XmlCursor cursor = skuInfo.newCursor();\r
+        if (cursor.toFirstChild()) {\r
+            for (int j = 0; j < i; ++j) {\r
+                cursor.toNextSibling();\r
+            }\r
+            SkuInfoDocument.SkuInfo.UiSkuName sku = (SkuInfoDocument.SkuInfo.UiSkuName)cursor.getObject();\r
+            sku.setSkuID(new BigInteger(id));\r
+            sku.setStringValue(name);\r
+        }\r
+        cursor.dispose();\r
+    }\r
+    \r
+    public String getPlatformDefsInterDir(){\r
+        if (getfpdPlatformDefs().getIntermediateDirectories() == null) {\r
+            return null;\r
+        }\r
+        return getfpdPlatformDefs().getIntermediateDirectories().toString();\r
+    }\r
+    \r
+    public void setPlatformDefsInterDir(String interDir){\r
+        getfpdPlatformDefs().setIntermediateDirectories(IntermediateOutputType.Enum.forString(interDir));\r
+    }\r
+    \r
+    public String getPlatformDefsOutputDir() {\r
+        return getfpdPlatformDefs().getOutputDirectory();\r
+    }\r
+    \r
+    public void setPlatformDefsOutputDir(String outputDir) {\r
+        getfpdPlatformDefs().setOutputDirectory(outputDir);\r
+    }\r
+    \r
     public FlashDocument.Flash getfpdFlash() {\r
         if (fpdFlash == null) {\r
             fpdFlash = fpdRoot.addNewFlash();\r
@@ -1788,26 +1890,6 @@ public class FpdFileContents {
         return fpdHdr;\r
     }\r
     \r
-    public void genPlatformDefsSkuInfo(String id, String name) {\r
-        SkuInfoDocument.SkuInfo skuInfo = null;\r
-        if (getfpdPlatformDefs().getSkuInfo() == null) {\r
-            skuInfo = getfpdPlatformDefs().addNewSkuInfo();\r
-        }\r
-        skuInfo = getfpdPlatformDefs().getSkuInfo();\r
-        if (skuInfo.getUiSkuNameList() == null || skuInfo.getUiSkuNameList().size() == 0) {\r
-            SkuInfoDocument.SkuInfo.UiSkuName skuName = skuInfo.addNewUiSkuName();\r
-            skuName.setSkuID(new BigInteger("0"));\r
-            skuName.setStringValue("DEFAULT");\r
-        }\r
-        if (id.equals("0")) {\r
-            return;\r
-        }\r
-        SkuInfoDocument.SkuInfo.UiSkuName skuName = skuInfo.addNewUiSkuName();\r
-        skuName.setSkuID(new BigInteger(id));\r
-        skuName.setStringValue(name);\r
-            \r
-        \r
-    }\r
     public String getFpdHdrPlatformName() {\r
         return getFpdHdr().getPlatformName();\r
     }\r
index e5a4e885744fb5d10a5346ddfe90d80c783ced9a..6dda51be0068d0c21e2136c0cf5e2a44ae317db3 100644 (file)
@@ -36,6 +36,7 @@ import java.util.Iterator;
 import java.util.ListIterator;\r
 import java.util.Map;\r
 import java.util.Set;\r
+import javax.swing.JTextField;\r
 \r
 public class FpdModuleSA extends JDialog implements ActionListener {\r
 \r
@@ -86,6 +87,15 @@ public class FpdModuleSA extends JDialog implements ActionListener {
     private HashMap<String, ArrayList<String>> classInstanceMap = null;\r
     private ArrayList<String> classProduced = null;\r
     private HashMap<String, ArrayList<String>> classConsumed = null;\r
+    private JPanel jPanel8 = null;\r
+    private JLabel jLabel6 = null;\r
+    private JTextField jTextField = null;\r
+    private JLabel jLabel7 = null;\r
+    private JTextField jTextField1 = null;\r
+    private JLabel jLabel8 = null;\r
+    private JTextField jTextField2 = null;\r
+    private JScrollPane jScrollPane6 = null;\r
+    private JTable jTable4 = null;\r
     /**\r
      * This is the default constructor\r
      */\r
@@ -397,6 +407,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
         if (jTabbedPane == null) {\r
             jTabbedPane = new JTabbedPane();\r
             jTabbedPane.addTab("PCD Build Definition", null, getJPanel(), null);\r
+            jTabbedPane.addTab("Module SA Options", null, getJPanel8(), null);\r
             jTabbedPane.addTab("Libraries", null, getJPanel1(), null);\r
         }\r
         return jTabbedPane;\r
@@ -963,6 +974,90 @@ public class FpdModuleSA extends JDialog implements ActionListener {
             this.setVisible(false);\r
         }\r
     }\r
+    /**\r
+     * This method initializes jPanel8 \r
+     *         \r
+     * @return javax.swing.JPanel      \r
+     */\r
+    private JPanel getJPanel8() {\r
+        if (jPanel8 == null) {\r
+            jLabel8 = new JLabel();\r
+            jLabel8.setText("FFS Format Key");\r
+            jLabel7 = new JLabel();\r
+            jLabel7.setText("FFS File GUID");\r
+            jLabel6 = new JLabel();\r
+            jLabel6.setText("FV Binding");\r
+            jPanel8 = new JPanel();\r
+            jPanel8.add(jLabel6, null);\r
+            jPanel8.add(getJTextField(), null);\r
+            jPanel8.add(jLabel7, null);\r
+            jPanel8.add(getJTextField1(), null);\r
+            jPanel8.add(jLabel8, null);\r
+            jPanel8.add(getJTextField2(), null);\r
+            jPanel8.add(getJScrollPane6(), null);\r
+        }\r
+        return jPanel8;\r
+    }\r
+    /**\r
+     * This method initializes jTextField      \r
+     *         \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
+        }\r
+        return jTextField;\r
+    }\r
+    /**\r
+     * This method initializes jTextField1     \r
+     *         \r
+     * @return javax.swing.JTextField  \r
+     */\r
+    private JTextField getJTextField1() {\r
+        if (jTextField1 == null) {\r
+            jTextField1 = new JTextField();\r
+            jTextField1.setPreferredSize(new java.awt.Dimension(100,20));\r
+        }\r
+        return jTextField1;\r
+    }\r
+    /**\r
+     * This method initializes jTextField2     \r
+     *         \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(100,20));\r
+        }\r
+        return jTextField2;\r
+    }\r
+    /**\r
+     * This method initializes jScrollPane6    \r
+     *         \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(600,200));\r
+            jScrollPane6.setViewportView(getJTable4());\r
+        }\r
+        return jScrollPane6;\r
+    }\r
+    /**\r
+     * This method initializes jTable4 \r
+     *         \r
+     * @return javax.swing.JTable      \r
+     */\r
+    private JTable getJTable4() {\r
+        if (jTable4 == null) {\r
+            jTable4 = new JTable();\r
+        }\r
+        return jTable4;\r
+    }\r
 \r
 }  //  @jve:decl-index=0:visual-constraint="10,10"\r
 \r
index 2133e05464e04f4c6bb151ade443e1acae7d821f..0f6fb8b69b9bd31c39aae5c4c194246322702fd4 100644 (file)
@@ -15,11 +15,10 @@ package org.tianocore.frameworkwizard.platform.ui;
 import java.awt.BorderLayout;\r
 import javax.swing.JPanel;\r
 \r
-import javax.swing.DefaultCellEditor;\r
-import javax.swing.DefaultListModel;\r
 import javax.swing.JFrame;\r
 import javax.swing.JTabbedPane;\r
 import javax.swing.JButton;\r
+import javax.swing.ListSelectionModel;\r
 \r
 import org.tianocore.PlatformSurfaceAreaDocument;\r
 import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
@@ -35,18 +34,13 @@ import javax.swing.JScrollPane;
 import javax.swing.JTable;\r
 import javax.swing.event.InternalFrameAdapter;\r
 import javax.swing.event.InternalFrameEvent;\r
-import javax.swing.event.ListSelectionEvent;\r
-import javax.swing.event.ListSelectionListener;\r
 import javax.swing.event.TableModelEvent;\r
 import javax.swing.event.TableModelListener;\r
 import javax.swing.table.DefaultTableModel;\r
-import javax.swing.table.TableColumn;\r
 import javax.swing.table.TableModel;\r
 import javax.swing.JComboBox;\r
 import java.awt.Dimension;\r
-import javax.swing.JRadioButton;\r
-import javax.swing.JTextArea;\r
-import java.awt.CardLayout;\r
+import java.util.Vector;\r
 \r
 public class FpdPlatformDefs extends IInternalFrame {\r
 \r
@@ -63,18 +57,10 @@ public class FpdPlatformDefs extends IInternalFrame {
     private JTabbedPane jTabbedPane = null;\r
     private JButton jButtonOk = null;\r
     private JButton jButtonCancel = null;\r
-    private JPanel jPanelFvImageW = null;\r
-    private JScrollPane jScrollPane = null;\r
-    private DefaultTableModel imageEntryPointTableModel = null;\r
-    private DefaultTableModel outputDirectoryTableModel = null;\r
+    private TargetTableModel imageEntryPointTableModel = null;\r
     \r
-    private DefaultTableModel skuInfoTableModel = null;\r
-    private DefaultTableModel fdfBlocksTableModel = null;\r
-    private DefaultTableModel fdfRegionsTableModel = null;\r
-    private DefaultTableModel fdfSubRegionsTableModel = null;\r
+    private SkuInfoTableModel skuInfoTableModel = null;\r
     \r
-    private JLabel jLabel17 = null;\r
-    private DefaultListModel listModel = new DefaultListModel();\r
     private FpdFileContents ffc = null;\r
     private JPanel jPanel4 = null;\r
     private JPanel jPanel5 = null;\r
@@ -83,10 +69,8 @@ public class FpdPlatformDefs extends IInternalFrame {
     private JCheckBox jCheckBox2 = null;\r
     private JCheckBox jCheckBox3 = null;\r
     private JPanel jPanel6 = null;\r
-    private JLabel jLabel1 = null;\r
     private JCheckBox jCheckBox4 = null;\r
     private JComboBox jComboBox = null;\r
-    private JTextField jTextField = null;\r
     private JTable jTable = null;\r
     private JPanel jPanel7 = null;\r
     private JLabel jLabel2 = null;\r
@@ -94,18 +78,24 @@ public class FpdPlatformDefs extends IInternalFrame {
     private JButton jButton2 = null;\r
     private JButton jButton3 = null;\r
     private JScrollPane jScrollPane2 = null;\r
-    private JTable jTable1 = null;\r
-    private JLabel jLabel3 = null;\r
     private JScrollPane jScrollPane3 = null;\r
     private JTable jTable2 = null;\r
+    private JCheckBox jCheckBox = null;\r
+    private JCheckBox jCheckBox5 = null;\r
+    private JCheckBox jCheckBox6 = null;\r
+    private JPanel jPanel8 = null;\r
+    private JLabel jLabel7 = null;\r
+    private JLabel jLabel1 = null;\r
+    private JTextField jTextField = null;\r
+    private JPanel jPanel9 = null;\r
+    private JLabel jLabel3 = null;\r
     private JLabel jLabel4 = null;\r
     private JTextField jTextField2 = null;\r
     private JLabel jLabel5 = null;\r
     private JTextField jTextField3 = null;\r
+    private JButton jButton = null;\r
+    private JButton jButton1 = null;\r
     private JLabel jLabel6 = null;\r
-    private JButton jButton4 = null;\r
-    private JButton jButton5 = null;\r
-    private JLabel jLabel7 = null;\r
     public FpdPlatformDefs() {\r
         super();\r
         // TODO Auto-generated constructor stub\r
@@ -221,21 +211,7 @@ public class FpdPlatformDefs extends IInternalFrame {
         return jButtonCancel;\r
     }\r
 \r
-    /**\r
-     * This method initializes jPanelFvImageW  \r
-     *         \r
-     * @return javax.swing.JPanel      \r
-     */\r
-    private JPanel getJPanelFvImageW() {\r
-        if (jPanelFvImageW == null) {\r
-            jPanelFvImageW = new JPanel();\r
-            jPanelFvImageW.setPreferredSize(new java.awt.Dimension(10,2));\r
-        }\r
-        return jPanelFvImageW;\r
-    }\r
-\r
-\r
-        /**\r
+     /**\r
      * This method initializes this\r
      * \r
      * @return void\r
@@ -259,10 +235,95 @@ public class FpdPlatformDefs extends IInternalFrame {
     }\r
 \r
     private void init(FpdFileContents ffc) {\r
+        Vector<Object> v = new Vector<Object>();\r
+        ffc.getPlatformDefsSupportedArchs(v);\r
+        showToolChain(v);\r
+        \r
+        imageEntryPointTableModel.setRowCount(0);\r
+        v.removeAllElements();\r
+        ffc.getPlatformDefsBuildTargets(v);\r
+        for (int i = 0; i < v.size(); ++i){\r
+            Object[] row = {v.get(i)};\r
+            imageEntryPointTableModel.addRow(row);\r
+        }\r
         \r
+        String[][] saa = new String[ffc.getPlatformDefsSkuInfoCount()][2];\r
+        ffc.getPlatformDefsSkuInfos(saa);\r
+        for (int i = 0; i < saa.length; ++i) {\r
+            skuInfoTableModel.addRow(saa[i]);\r
+        }\r
+        \r
+        String interDir = ffc.getPlatformDefsInterDir();\r
+        if (interDir != null) {\r
+            jComboBox.setSelectedItem(interDir);\r
+        }\r
+        \r
+        String outputDir = ffc.getPlatformDefsOutputDir();\r
+        if (outputDir != null) {\r
+            jTextField.setText(outputDir);\r
+        }\r
     }\r
     \r
+   private void showToolChain(Vector<Object> v) {\r
+       if (v.contains("IA32")) {\r
+           jCheckBox1.setSelected(true);\r
+       }\r
+       else{\r
+           jCheckBox1.setSelected(false);\r
+       }\r
+       if (v.contains("X64")) {\r
+           jCheckBox2.setSelected(true);\r
+       }\r
+       else{\r
+           jCheckBox2.setSelected(false);\r
+       }\r
+       if (v.contains("IPF")) {\r
+           jCheckBox3.setSelected(true);\r
+       }\r
+       else{\r
+           jCheckBox3.setSelected(false);\r
+       }\r
+       if (v.contains("EBC")) {\r
+           jCheckBox.setSelected(true);\r
+       }\r
+       else{\r
+           jCheckBox.setSelected(false);\r
+       }\r
+       if (v.contains("ARM")) {\r
+           jCheckBox5.setSelected(true);\r
+       }\r
+       else{\r
+           jCheckBox5.setSelected(false);\r
+       }\r
+       if (v.contains("PPC")) {\r
+           jCheckBox6.setSelected(true);\r
+       }\r
+       else{\r
+           jCheckBox6.setSelected(false);\r
+       }\r
+   }\r
    \r
+   private void getToolChain(Vector<Object> v) {\r
+       v.removeAllElements();\r
+       if (jCheckBox1.isSelected()) {\r
+           v.add("IA32");\r
+       }\r
+       if (jCheckBox2.isSelected()) {\r
+           v.add("X64");\r
+       }\r
+       if (jCheckBox3.isSelected()) {\r
+           v.add("IPF");\r
+       }\r
+       if (jCheckBox.isSelected()) {\r
+           v.add("EBC");\r
+       }\r
+       if (jCheckBox5.isSelected()) {\r
+           v.add("ARM");\r
+       }\r
+       if (jCheckBox6.isSelected()) {\r
+           v.add("PPC");\r
+       }\r
+   }\r
  \r
     /**\r
      * This method initializes jContentPane\r
@@ -306,16 +367,19 @@ public class FpdPlatformDefs extends IInternalFrame {
     private JPanel getJPanel5() {\r
         if (jPanel5 == null) {\r
             jLabel = new JLabel();\r
-            jLabel.setText("Tool Chain Families");\r
+            jLabel.setText("Supported Archs");\r
             FlowLayout flowLayout2 = new FlowLayout();\r
             flowLayout2.setAlignment(FlowLayout.LEFT);\r
-            flowLayout2.setHgap(20);\r
+            flowLayout2.setHgap(12);\r
             jPanel5 = new JPanel();\r
             jPanel5.setLayout(flowLayout2);\r
             jPanel5.add(jLabel, null);\r
             jPanel5.add(getJCheckBox1(), null);\r
             jPanel5.add(getJCheckBox2(), null);\r
             jPanel5.add(getJCheckBox3(), null);\r
+            jPanel5.add(getJCheckBox(), null);\r
+            jPanel5.add(getJCheckBox5(), null);\r
+            jPanel5.add(getJCheckBox6(), null);\r
         }\r
         return jPanel5;\r
     }\r
@@ -328,7 +392,14 @@ public class FpdPlatformDefs extends IInternalFrame {
     private JCheckBox getJCheckBox1() {\r
         if (jCheckBox1 == null) {\r
             jCheckBox1 = new JCheckBox();\r
-            jCheckBox1.setText("MSFT");\r
+            jCheckBox1.setText("IA32");\r
+            jCheckBox1.addItemListener(new java.awt.event.ItemListener() {\r
+                public void itemStateChanged(java.awt.event.ItemEvent e) {\r
+                    Vector<Object> v = new Vector<Object>();\r
+                    getToolChain(v);\r
+                    ffc.setPlatformDefsSupportedArchs(v);\r
+                }\r
+            });\r
         }\r
         return jCheckBox1;\r
     }\r
@@ -341,7 +412,14 @@ public class FpdPlatformDefs extends IInternalFrame {
     private JCheckBox getJCheckBox2() {\r
         if (jCheckBox2 == null) {\r
             jCheckBox2 = new JCheckBox();\r
-            jCheckBox2.setText("GCC");\r
+            jCheckBox2.setText("X64");\r
+            jCheckBox2.addItemListener(new java.awt.event.ItemListener() {\r
+                public void itemStateChanged(java.awt.event.ItemEvent e) {\r
+                    Vector<Object> v = new Vector<Object>();\r
+                    getToolChain(v);\r
+                    ffc.setPlatformDefsSupportedArchs(v);\r
+                }\r
+            });\r
         }\r
         return jCheckBox2;\r
     }\r
@@ -354,7 +432,14 @@ public class FpdPlatformDefs extends IInternalFrame {
     private JCheckBox getJCheckBox3() {\r
         if (jCheckBox3 == null) {\r
             jCheckBox3 = new JCheckBox();\r
-            jCheckBox3.setText("INTC");\r
+            jCheckBox3.setText("IPF");\r
+            jCheckBox3.addItemListener(new java.awt.event.ItemListener() {\r
+                public void itemStateChanged(java.awt.event.ItemEvent e) {\r
+                    Vector<Object> v = new Vector<Object>();\r
+                    getToolChain(v);\r
+                    ffc.setPlatformDefsSupportedArchs(v);\r
+                }\r
+            });\r
         }\r
         return jCheckBox3;\r
     }\r
@@ -366,33 +451,32 @@ public class FpdPlatformDefs extends IInternalFrame {
      */\r
     private JTable getJTable() {\r
         if (jTable == null) {\r
-            imageEntryPointTableModel = new DefaultTableModel();\r
+            imageEntryPointTableModel = new TargetTableModel();\r
             imageEntryPointTableModel.addColumn("Build Target");\r
-        }\r
-        return jTable;\r
-    }\r
-\r
-    /**\r
-     * This method initializes jTable1  \r
-     *  \r
-     * @return javax.swing.JTable   \r
-     */\r
-    private JTable getJTable1() {\r
-        if (jTable1 == null) {\r
-            outputDirectoryTableModel = new DefaultTableModel();\r
-            outputDirectoryTableModel.addColumn("Output Directory");\r
-            outputDirectoryTableModel.addColumn("Intermediate Directories");\r
+            jTable = new JTable(imageEntryPointTableModel);\r
+            jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
             \r
-            TableColumn imDirCol = jTable1.getColumnModel().getColumn(1);\r
-            JComboBox cb = new JComboBox();\r
-            cb.addItem("MODULE");\r
-            cb.addItem("UNIFIED");\r
-            imDirCol.setCellEditor(new DefaultCellEditor(cb));\r
+            jTable.getModel().addTableModelListener(new TableModelListener() {\r
+                public void tableChanged(TableModelEvent arg0) {\r
+                    // TODO Auto-generated method stub\r
+                    if (jTable.getSelectedRow() < 0) {\r
+                        return;\r
+                    }\r
+                    TableModel m = (TableModel)arg0.getSource();\r
+                    if (arg0.getType() == TableModelEvent.UPDATE){\r
+                        //ToDo Data Validition check.\r
+                        Vector<Object> v = new Vector<Object>();\r
+                        for (int i = 0; i < jTable.getRowCount(); ++i) {\r
+                            v.add(m.getValueAt(i, 0));\r
+                        }\r
+                        ffc.setPlatformDefsBuildTargets(v);\r
+                    }\r
+                }\r
+            });\r
         }\r
-        return jTable1;\r
+        return jTable;\r
     }\r
 \r
-\r
     /**\r
      * This method initializes jPanel6 \r
      *         \r
@@ -400,22 +484,13 @@ public class FpdPlatformDefs extends IInternalFrame {
      */\r
     private JPanel getJPanel6() {\r
         if (jPanel6 == null) {\r
-            jLabel7 = new JLabel();\r
-            jLabel7.setPreferredSize(new java.awt.Dimension(100,20));\r
-            jLabel7.setText("");\r
-            jLabel1 = new JLabel();\r
-            jLabel1.setText("Output Directory");\r
             FlowLayout flowLayout3 = new FlowLayout();\r
             flowLayout3.setAlignment(FlowLayout.LEFT);\r
             flowLayout3.setHgap(20);\r
             jPanel6 = new JPanel();\r
-            jPanel6.setPreferredSize(new java.awt.Dimension(10,250));\r
+            jPanel6.setPreferredSize(new java.awt.Dimension(10,200));\r
             jPanel6.setLayout(flowLayout3);\r
-            jPanel6.add(getJCheckBox4(), null);\r
-            jPanel6.add(getJComboBox(), null);\r
-            jPanel6.add(jLabel7, null);\r
-            jPanel6.add(jLabel1, null);\r
-            jPanel6.add(getJTextField(), null);\r
+            jPanel6.add(getJPanel8(), null);\r
         }\r
         return jPanel6;\r
     }\r
@@ -445,23 +520,15 @@ public class FpdPlatformDefs extends IInternalFrame {
             jComboBox.addItem("MODULE");\r
             jComboBox.addItem("UNIFIED");\r
             jComboBox.setSelectedIndex(0);\r
+            jComboBox.addItemListener(new java.awt.event.ItemListener() {\r
+                public void itemStateChanged(java.awt.event.ItemEvent e) {\r
+                    ffc.setPlatformDefsInterDir(jComboBox.getSelectedItem()+"");\r
+                }\r
+            });\r
         }\r
         return jComboBox;\r
     }\r
 \r
-    /**\r
-     * This method initializes jTextField      \r
-     *         \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(350,20));\r
-        }\r
-        return jTextField;\r
-    }\r
-\r
     /**\r
      * This method initializes jPanel7 \r
      *         \r
@@ -469,18 +536,6 @@ public class FpdPlatformDefs extends IInternalFrame {
      */\r
     private JPanel getJPanel7() {\r
         if (jPanel7 == null) {\r
-            jLabel6 = new JLabel();\r
-            jLabel6.setPreferredSize(new java.awt.Dimension(280,20));\r
-            jLabel6.setText("                                                 ");\r
-            jLabel5 = new JLabel();\r
-            jLabel5.setPreferredSize(new java.awt.Dimension(40,20));\r
-            jLabel5.setText("Name");\r
-            jLabel4 = new JLabel();\r
-            jLabel4.setPreferredSize(new java.awt.Dimension(20,20));\r
-            jLabel4.setText("ID");\r
-            jLabel3 = new JLabel();\r
-            jLabel3.setPreferredSize(new java.awt.Dimension(109,20));\r
-            jLabel3.setText("SKU Information");\r
             jLabel2 = new JLabel();\r
             jLabel2.setPreferredSize(new Dimension(109, 16));\r
             jLabel2.setText("Build Targets");\r
@@ -495,15 +550,8 @@ public class FpdPlatformDefs extends IInternalFrame {
             jPanel7.add(getJButton2(), null);\r
             jPanel7.add(getJButton3(), null);\r
             jPanel7.add(getJScrollPane2(), null);\r
-            jPanel7.add(jLabel3, null);\r
-            jPanel7.add(jLabel4, null);\r
-            jPanel7.add(getJTextField2(), null);\r
-            jPanel7.add(jLabel5, null);\r
-            jPanel7.add(getJTextField3(), null);\r
+            jPanel7.add(getJPanel9(), null);\r
             jPanel7.add(getJScrollPane3(), null);\r
-            jPanel7.add(jLabel6, null);\r
-            jPanel7.add(getJButton4(), null);\r
-            jPanel7.add(getJButton5(), null);\r
         }\r
         return jPanel7;\r
     }\r
@@ -531,6 +579,19 @@ public class FpdPlatformDefs extends IInternalFrame {
             jButton2 = new JButton();\r
             jButton2.setPreferredSize(new Dimension(70, 20));\r
             jButton2.setText("Add");\r
+            jButton2.addActionListener(new java.awt.event.ActionListener() {\r
+                public void actionPerformed(java.awt.event.ActionEvent e) {\r
+                    if (jTextField1.getText().length() > 0) {\r
+                        String[] row = {jTextField1.getText()};\r
+                        imageEntryPointTableModel.addRow(row);\r
+                        Vector<Object> v = new Vector<Object>();\r
+                        for (int i = 0; i < jTable.getRowCount(); ++i) {\r
+                            v.add(imageEntryPointTableModel.getValueAt(i, 0));\r
+                        }\r
+                        ffc.setPlatformDefsBuildTargets(v);\r
+                    }\r
+                }\r
+            });\r
         }\r
         return jButton2;\r
     }\r
@@ -545,6 +606,7 @@ public class FpdPlatformDefs extends IInternalFrame {
             jButton3 = new JButton();\r
             jButton3.setPreferredSize(new Dimension(70, 20));\r
             jButton3.setText("Delete");\r
+            jButton3.setVisible(false);\r
         }\r
         return jButton3;\r
     }\r
@@ -584,14 +646,171 @@ public class FpdPlatformDefs extends IInternalFrame {
      */\r
     private JTable getJTable2() {\r
         if (jTable2 == null) {\r
-            skuInfoTableModel = new DefaultTableModel();\r
+            skuInfoTableModel = new SkuInfoTableModel();\r
             skuInfoTableModel.addColumn("SKU ID");\r
             skuInfoTableModel.addColumn("Name");\r
             jTable2 = new JTable(skuInfoTableModel);\r
+            \r
+            jTable2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+            \r
+            jTable2.getModel().addTableModelListener(new TableModelListener() {\r
+                public void tableChanged(TableModelEvent arg0) {\r
+                    // TODO Auto-generated method stub\r
+                    int row = arg0.getFirstRow();\r
+                    TableModel m = (TableModel)arg0.getSource();\r
+                    if (arg0.getType() == TableModelEvent.UPDATE){\r
+                        //ToDo Data Validition check.\r
+                        String id = m.getValueAt(row, 0)+"";\r
+                        String name = m.getValueAt(row, 1)+"";\r
+                        ffc.updatePlatformDefsSkuInfo(row, id, name);\r
+                    }\r
+                }\r
+            });\r
         }\r
         return jTable2;\r
     }\r
 \r
+    /**\r
+     * This method initializes jCheckBox       \r
+     *         \r
+     * @return javax.swing.JCheckBox   \r
+     */\r
+    private JCheckBox getJCheckBox() {\r
+        if (jCheckBox == null) {\r
+            jCheckBox = new JCheckBox();\r
+            jCheckBox.setPreferredSize(new java.awt.Dimension(50,20));\r
+            jCheckBox.setText("EBC");\r
+            jCheckBox.addItemListener(new java.awt.event.ItemListener() {\r
+                public void itemStateChanged(java.awt.event.ItemEvent e) {\r
+                    Vector<Object> v = new Vector<Object>();\r
+                    getToolChain(v);\r
+                    ffc.setPlatformDefsSupportedArchs(v);\r
+                }\r
+            });\r
+        }\r
+        return jCheckBox;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jCheckBox5      \r
+     *         \r
+     * @return javax.swing.JCheckBox   \r
+     */\r
+    private JCheckBox getJCheckBox5() {\r
+        if (jCheckBox5 == null) {\r
+            jCheckBox5 = new JCheckBox();\r
+            jCheckBox5.setPreferredSize(new java.awt.Dimension(52,20));\r
+            jCheckBox5.setText("ARM");\r
+            jCheckBox5.addItemListener(new java.awt.event.ItemListener() {\r
+                public void itemStateChanged(java.awt.event.ItemEvent e) {\r
+                    Vector<Object> v = new Vector<Object>();\r
+                    getToolChain(v);\r
+                    ffc.setPlatformDefsSupportedArchs(v);\r
+                }\r
+            });\r
+        }\r
+        return jCheckBox5;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jCheckBox6      \r
+     *         \r
+     * @return javax.swing.JCheckBox   \r
+     */\r
+    private JCheckBox getJCheckBox6() {\r
+        if (jCheckBox6 == null) {\r
+            jCheckBox6 = new JCheckBox();\r
+            jCheckBox6.setPreferredSize(new Dimension(50, 20));\r
+            jCheckBox6.setText("PPC");\r
+            jCheckBox6.addItemListener(new java.awt.event.ItemListener() {\r
+                public void itemStateChanged(java.awt.event.ItemEvent e) {\r
+                    Vector<Object> v = new Vector<Object>();\r
+                    getToolChain(v);\r
+                    ffc.setPlatformDefsSupportedArchs(v);\r
+                }\r
+            });\r
+        }\r
+        return jCheckBox6;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jPanel8 \r
+     *         \r
+     * @return javax.swing.JPanel      \r
+     */\r
+    private JPanel getJPanel8() {\r
+        if (jPanel8 == null) {\r
+            FlowLayout flowLayout1 = new FlowLayout();\r
+            flowLayout1.setAlignment(java.awt.FlowLayout.LEFT);\r
+            jLabel1 = new JLabel();\r
+            jLabel1.setText("Output Directory");\r
+            jLabel7 = new JLabel();\r
+            jLabel7.setPreferredSize(new java.awt.Dimension(150,20));\r
+            jLabel7.setText("");\r
+            jPanel8 = new JPanel();\r
+            jPanel8.setLayout(flowLayout1);\r
+            jPanel8.setPreferredSize(new java.awt.Dimension(450,100));\r
+            jPanel8.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));\r
+            jPanel8.add(getJCheckBox4(), null);\r
+            jPanel8.add(getJComboBox(), null);\r
+            jPanel8.add(jLabel7, null);\r
+            jPanel8.add(jLabel1, null);\r
+            jPanel8.add(getJTextField(), null);\r
+        }\r
+        return jPanel8;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jTextField      \r
+     *         \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(300,20));\r
+            jTextField.addFocusListener(new java.awt.event.FocusAdapter() {\r
+                public void focusLost(java.awt.event.FocusEvent e) {\r
+                    ffc.setPlatformDefsOutputDir(jTextField.getText());\r
+                }\r
+            });\r
+        }\r
+        return jTextField;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jPanel9 \r
+     *         \r
+     * @return javax.swing.JPanel      \r
+     */\r
+    private JPanel getJPanel9() {\r
+        if (jPanel9 == null) {\r
+            jLabel6 = new JLabel();\r
+            jLabel6.setPreferredSize(new Dimension(280, 20));\r
+            jLabel6.setText("                                                 ");\r
+            jLabel5 = new JLabel();\r
+            jLabel5.setPreferredSize(new Dimension(40, 20));\r
+            jLabel5.setText("Name");\r
+            jLabel4 = new JLabel();\r
+            jLabel4.setPreferredSize(new Dimension(20, 20));\r
+            jLabel4.setText("ID");\r
+            jLabel3 = new JLabel();\r
+            jLabel3.setPreferredSize(new java.awt.Dimension(150,20));\r
+            jLabel3.setText("SKU Information");\r
+            jPanel9 = new JPanel();\r
+            jPanel9.setPreferredSize(new java.awt.Dimension(450,70));\r
+            jPanel9.add(jLabel3, null);\r
+            jPanel9.add(jLabel6, null);\r
+            jPanel9.add(jLabel4, null);\r
+            jPanel9.add(getJTextField2(), null);\r
+            jPanel9.add(jLabel5, null);\r
+            jPanel9.add(getJTextField3(), null);\r
+            jPanel9.add(getJButton(), null);\r
+            jPanel9.add(getJButton1(), null);\r
+        }\r
+        return jPanel9;\r
+    }\r
+\r
     /**\r
      * This method initializes jTextField2     \r
      *         \r
@@ -600,7 +819,7 @@ public class FpdPlatformDefs extends IInternalFrame {
     private JTextField getJTextField2() {\r
         if (jTextField2 == null) {\r
             jTextField2 = new JTextField();\r
-            jTextField2.setPreferredSize(new java.awt.Dimension(50,20));\r
+            jTextField2.setPreferredSize(new Dimension(50, 20));\r
         }\r
         return jTextField2;\r
     }\r
@@ -619,34 +838,80 @@ public class FpdPlatformDefs extends IInternalFrame {
     }\r
 \r
     /**\r
-     * This method initializes jButton4        \r
+     * This method initializes jButton \r
      *         \r
      * @return javax.swing.JButton     \r
      */\r
-    private JButton getJButton4() {\r
-        if (jButton4 == null) {\r
-            jButton4 = new JButton();\r
-            jButton4.setPreferredSize(new Dimension(70, 20));\r
-            jButton4.setText("Add");\r
+    private JButton getJButton() {\r
+        if (jButton == null) {\r
+            jButton = new JButton();\r
+            jButton.setPreferredSize(new Dimension(70, 20));\r
+            jButton.setText("Add");\r
+            jButton.addActionListener(new java.awt.event.ActionListener() {\r
+                public void actionPerformed(java.awt.event.ActionEvent e) {\r
+                    if (jTextField2.getText().length() > 0) {\r
+                        String[] row = {jTextField2.getText(), jTextField3.getText()};\r
+                        skuInfoTableModel.addRow(row);\r
+                        ffc.genPlatformDefsSkuInfo(row[0], row[1]);\r
+                    }\r
+                }\r
+            });\r
         }\r
-        return jButton4;\r
+        return jButton;\r
     }\r
 \r
     /**\r
-     * This method initializes jButton5        \r
+     * This method initializes jButton1        \r
      *         \r
      * @return javax.swing.JButton     \r
      */\r
-    private JButton getJButton5() {\r
-        if (jButton5 == null) {\r
-            jButton5 = new JButton();\r
-            jButton5.setPreferredSize(new Dimension(70, 20));\r
-            jButton5.setText("Delete");\r
+    private JButton getJButton1() {\r
+        if (jButton1 == null) {\r
+            jButton1 = new JButton();\r
+            jButton1.setPreferredSize(new Dimension(70, 20));\r
+            jButton1.setText("Delete");\r
+            jButton1.addActionListener(new java.awt.event.ActionListener() {\r
+                public void actionPerformed(java.awt.event.ActionEvent e) {\r
+                    if (jTable2.isEditing()) {\r
+                        jTable2.getCellEditor().stopCellEditing();\r
+                    }\r
+                    if (jTable2.getSelectedRow() < 1) {\r
+                        return;\r
+                    }\r
+                    ffc.removePlatformDefsSkuInfo(jTable2.getSelectedRow());\r
+                    skuInfoTableModel.removeRow(jTable2.getSelectedRow());\r
+                }\r
+            });\r
         }\r
-        return jButton5;\r
+        return jButton1;\r
     }\r
 \r
 \r
 }  //  @jve:decl-index=0:visual-constraint="10,10"\r
 \r
+class SkuInfoTableModel extends DefaultTableModel{\r
+    /**\r
+     * \r
+     */\r
+    private static final long serialVersionUID = 1L;\r
+\r
+    public boolean isCellEditable(int row, int column) {\r
+        if (row == 0) {\r
+            return false;\r
+        }\r
+        return true;\r
+    }\r
+}\r
+\r
+class TargetTableModel extends DefaultTableModel{\r
+    private static final long serialVersionUID = 1L;\r
+\r
+    public boolean isCellEditable(int row, int column) {\r
+        if (row < 2) {\r
+            return false;\r
+        }\r
+        return true;\r
+    }\r
+}\r
+\r
 \r