]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdPlatformDefs.java
sort modules by name alphabetically when start; make column width resizable and remov...
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / platform / ui / FpdPlatformDefs.java
index 2133e05464e04f4c6bb151ade443e1acae7d821f..cda63d0bd4c3a5a3335334338074a592c35bf1f6 100644 (file)
@@ -15,13 +15,13 @@ 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.Identifications.OpeningPlatformType;\r
 import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
 \r
 \r
@@ -29,24 +29,20 @@ import java.awt.FlowLayout;
 \r
 \r
 import javax.swing.JCheckBox;\r
+import javax.swing.JOptionPane;\r
 import javax.swing.JTextField;\r
 import javax.swing.JLabel;\r
 import javax.swing.JScrollPane;\r
 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
@@ -56,56 +52,49 @@ public class FpdPlatformDefs extends IInternalFrame {
     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 jPanelContentEast = null;\r
+    private JPanel jPanelContentWest = null;\r
+    private JPanel jPanelContentNorth = null;\r
     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 buildTargetTableModel = null;\r
     \r
-    private DefaultTableModel skuInfoTableModel = null;\r
-    private DefaultTableModel fdfBlocksTableModel = null;\r
-    private DefaultTableModel fdfRegionsTableModel = null;\r
-    private DefaultTableModel fdfSubRegionsTableModel = null;\r
-    \r
-    private JLabel jLabel17 = null;\r
-    private DefaultListModel listModel = new DefaultListModel();\r
+    private SkuInfoTableModel skuInfoTableModel = null;\r
+    private OpeningPlatformType docConsole = null;\r
     private FpdFileContents ffc = null;\r
-    private JPanel jPanel4 = null;\r
-    private JPanel jPanel5 = null;\r
+    private JPanel jPanelGeneralTab = null;\r
+    private JPanel jPanelGeneralTabNorth = null;\r
     private JLabel jLabel = null;\r
-    private JCheckBox jCheckBox1 = null;\r
-    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
-    private JTextField jTextField1 = null;\r
-    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 JLabel jLabel4 = null;\r
-    private JTextField jTextField2 = null;\r
-    private JLabel jLabel5 = null;\r
-    private JTextField jTextField3 = null;\r
-    private JLabel jLabel6 = null;\r
-    private JButton jButton4 = null;\r
-    private JButton jButton5 = null;\r
-    private JLabel jLabel7 = null;\r
+    private JCheckBox jCheckBoxIa32 = null;\r
+    private JCheckBox jCheckBoxX64 = null;\r
+    private JCheckBox jCheckBoxIpf = null;\r
+    private JPanel jPanelGeneralTabSouth = null;\r
+    private JCheckBox jCheckBoxInterDir = null;\r
+    private JComboBox jComboBoxInterDir = null;\r
+    private JTable jTableBuildTargets = null;\r
+    private JPanel jPanelGeneralTabCenter = null;\r
+    private JLabel jLabelBuildTargets = null;\r
+    private JTextField jTextFieldBuildTarget = null;\r
+    private JButton jButtonAddBuildTarget = null;\r
+    private JButton jButtonDelBuildTarget = null;\r
+    private JScrollPane jScrollPaneBuildTargets = null;\r
+    private JScrollPane jScrollPaneSkuInfo = null;\r
+    private JTable jTableSkuInfo = null;\r
+    private JCheckBox jCheckBoxEbc = null;\r
+    private JCheckBox jCheckBoxArm = null;\r
+    private JCheckBox jCheckBoxPpc = null;\r
+    private JPanel jPanelDir = null;\r
+    private JLabel jLabelPad = null;\r
+    private JLabel jLabelOutputDir = null;\r
+    private JTextField jTextFieldOutputDir = null;\r
+    private JPanel jPanelSkuInfo = null;\r
+    private JLabel jLabelSkuInfo = null;\r
+    private JLabel jLabelSkuId = null;\r
+    private JTextField jTextFieldSkuId = null;\r
+    private JLabel jLabelSkuName = null;\r
+    private JTextField jTextFieldSkuName = null;\r
+    private JButton jButtonSkuAdd = null;\r
+    private JButton jButtonSkuDel = null;\r
+    private JLabel jLabelPadd = null;\r
     public FpdPlatformDefs() {\r
         super();\r
         // TODO Auto-generated constructor stub\r
@@ -121,35 +110,21 @@ public class FpdPlatformDefs extends IInternalFrame {
         init(ffc);\r
     }\r
     \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
-        }\r
-        return jPanel;\r
+    public FpdPlatformDefs(OpeningPlatformType opt) {\r
+        this(opt.getXmlFpd());\r
+        docConsole = opt;\r
     }\r
-\r
+    \r
     /**\r
-     * This method initializes jPanel1 \r
+     * This method initializes jPanel  \r
      *         \r
      * @return javax.swing.JPanel      \r
      */\r
-    private JPanel getJPanel1() {\r
-        if (jPanel1 == null) {\r
-            FlowLayout flowLayout = new FlowLayout();\r
-            flowLayout.setAlignment(java.awt.FlowLayout.RIGHT);\r
-            flowLayout.setHgap(15);\r
-            jPanel1 = new JPanel();\r
-            jPanel1.setLayout(flowLayout);\r
-            jPanel1.setComponentOrientation(java.awt.ComponentOrientation.LEFT_TO_RIGHT);\r
-            jPanel1.add(getJButtonCancel(), null);\r
-            jPanel1.add(getJButtonOk(), null);\r
+    private JPanel getJPanelContentEast() {\r
+        if (jPanelContentEast == null) {\r
+            jPanelContentEast = new JPanel();\r
         }\r
-        return jPanel1;\r
+        return jPanelContentEast;\r
     }\r
 \r
     /**\r
@@ -157,11 +132,11 @@ public class FpdPlatformDefs 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
@@ -169,11 +144,11 @@ public class FpdPlatformDefs extends IInternalFrame {
      *         \r
      * @return javax.swing.JPanel      \r
      */\r
-    private JPanel getJPanel3() {\r
-        if (jPanel3 == null) {\r
-            jPanel3 = new JPanel();\r
+    private JPanel getJPanelContentNorth() {\r
+        if (jPanelContentNorth == null) {\r
+            jPanelContentNorth = new JPanel();\r
         }\r
-        return jPanel3;\r
+        return jPanelContentNorth;\r
     }\r
 \r
     /**\r
@@ -185,57 +160,13 @@ public class FpdPlatformDefs extends IInternalFrame {
         if (jTabbedPane == null) {\r
             jTabbedPane = new JTabbedPane();\r
             \r
-                       jTabbedPane.addTab("General", null, getJPanel4(), null);\r
+                       jTabbedPane.addTab("General", null, getJPanelGeneralTab(), null);\r
            \r
         }\r
         return jTabbedPane;\r
     }\r
 \r
     /**\r
-     * This method initializes jButtonOk       \r
-     *         \r
-     * @return javax.swing.JButton     \r
-     */\r
-    private JButton getJButtonOk() {\r
-        if (jButtonOk == null) {\r
-            jButtonOk = new JButton();\r
-            jButtonOk.setPreferredSize(new java.awt.Dimension(80,20));\r
-            jButtonOk.setText("Cancel");\r
-            jButtonOk.setVisible(false);\r
-        }\r
-        return jButtonOk;\r
-    }\r
-\r
-    /**\r
-     * This method initializes jButtonCancel   \r
-     *         \r
-     * @return javax.swing.JButton     \r
-     */\r
-    private JButton getJButtonCancel() {\r
-        if (jButtonCancel == null) {\r
-            jButtonCancel = new JButton();\r
-            jButtonCancel.setPreferredSize(new java.awt.Dimension(80,20));\r
-            jButtonCancel.setText("Ok");\r
-            jButtonCancel.setVisible(false);\r
-        }\r
-        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
      * This method initializes this\r
      * \r
      * @return void\r
@@ -247,11 +178,11 @@ public class FpdPlatformDefs extends IInternalFrame {
         this.setTitle("FPD Platform Definitions");\r
         this.addInternalFrameListener(new InternalFrameAdapter(){\r
             public void internalFrameDeactivated(InternalFrameEvent e){\r
-                if (jTable.isEditing()) {\r
-                    jTable.getCellEditor().stopCellEditing();\r
+                if (jTableBuildTargets.isEditing()) {\r
+                    jTableBuildTargets.getCellEditor().stopCellEditing();\r
                 }\r
-                if (jTable2.isEditing()) {\r
-                    jTable2.getCellEditor().stopCellEditing();\r
+                if (jTableSkuInfo.isEditing()) {\r
+                    jTableSkuInfo.getCellEditor().stopCellEditing();\r
                 }\r
                \r
             }\r
@@ -259,10 +190,99 @@ 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
+        buildTargetTableModel.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
+            buildTargetTableModel.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
+            jComboBoxInterDir.setSelectedItem(interDir);\r
+        }\r
         \r
+        String outputDir = ffc.getPlatformDefsOutputDir();\r
+        if (outputDir != null) {\r
+            jTextFieldOutputDir.setText(outputDir);\r
+        }\r
     }\r
     \r
+   private void showToolChain(Vector<Object> v) {\r
+       if (v.contains("IA32")) {\r
+           jCheckBoxIa32.setSelected(true);\r
+       }\r
+       else{\r
+           jCheckBoxIa32.setSelected(false);\r
+       }\r
+       if (v.contains("X64")) {\r
+           jCheckBoxX64.setSelected(true);\r
+       }\r
+       else{\r
+           jCheckBoxX64.setSelected(false);\r
+       }\r
+       if (v.contains("IPF")) {\r
+           jCheckBoxIpf.setSelected(true);\r
+       }\r
+       else{\r
+           jCheckBoxIpf.setSelected(false);\r
+       }\r
+       if (v.contains("EBC")) {\r
+           jCheckBoxEbc.setSelected(true);\r
+       }\r
+       else{\r
+           jCheckBoxEbc.setSelected(false);\r
+       }\r
+       if (v.contains("ARM")) {\r
+           jCheckBoxArm.setSelected(true);\r
+       }\r
+       else{\r
+           jCheckBoxArm.setSelected(false);\r
+       }\r
+       if (v.contains("PPC")) {\r
+           jCheckBoxPpc.setSelected(true);\r
+       }\r
+       else{\r
+           jCheckBoxPpc.setSelected(false);\r
+       }\r
+   }\r
    \r
+   private void getToolChain(Vector<Object> v) {\r
+       if (docConsole != null){\r
+           docConsole.setSaved(false);\r
+       }\r
+       v.removeAllElements();\r
+       if (jCheckBoxIa32.isSelected()) {\r
+           v.add("IA32");\r
+       }\r
+       if (jCheckBoxX64.isSelected()) {\r
+           v.add("X64");\r
+       }\r
+       if (jCheckBoxIpf.isSelected()) {\r
+           v.add("IPF");\r
+       }\r
+       if (jCheckBoxEbc.isSelected()) {\r
+           v.add("EBC");\r
+       }\r
+       if (jCheckBoxArm.isSelected()) {\r
+           v.add("ARM");\r
+       }\r
+       if (jCheckBoxPpc.isSelected()) {\r
+           v.add("PPC");\r
+       }\r
+       \r
+   }\r
  \r
     /**\r
      * This method initializes jContentPane\r
@@ -273,10 +293,9 @@ public class FpdPlatformDefs extends IInternalFrame {
         if (jContentPane == null) {\r
             jContentPane = new JPanel();\r
             jContentPane.setLayout(new BorderLayout());\r
-            jContentPane.add(getJPanel(), java.awt.BorderLayout.EAST);\r
-            jContentPane.add(getJPanel1(), java.awt.BorderLayout.SOUTH);\r
-            jContentPane.add(getJPanel2(), java.awt.BorderLayout.WEST);\r
-            jContentPane.add(getJPanel3(), java.awt.BorderLayout.NORTH);\r
+            jContentPane.add(getJPanelContentEast(), java.awt.BorderLayout.EAST);\r
+            jContentPane.add(getJPanelContentWest(), java.awt.BorderLayout.WEST);\r
+            jContentPane.add(getJPanelContentNorth(), java.awt.BorderLayout.NORTH);\r
             jContentPane.add(getJTabbedPane(), java.awt.BorderLayout.CENTER);\r
         }\r
         return jContentPane;\r
@@ -287,15 +306,15 @@ public class FpdPlatformDefs extends IInternalFrame {
      *         \r
      * @return javax.swing.JPanel      \r
      */\r
-    private JPanel getJPanel4() {\r
-        if (jPanel4 == null) {\r
-            jPanel4 = new JPanel();\r
-            jPanel4.setLayout(new BorderLayout());\r
-            jPanel4.add(getJPanel5(), java.awt.BorderLayout.NORTH);\r
-            jPanel4.add(getJPanel6(), java.awt.BorderLayout.SOUTH);\r
-            jPanel4.add(getJPanel7(), java.awt.BorderLayout.CENTER);\r
+    private JPanel getJPanelGeneralTab() {\r
+        if (jPanelGeneralTab == null) {\r
+            jPanelGeneralTab = new JPanel();\r
+            jPanelGeneralTab.setLayout(new BorderLayout());\r
+            jPanelGeneralTab.add(getJPanelGeneralTabNorth(), java.awt.BorderLayout.NORTH);\r
+            jPanelGeneralTab.add(getJPanelGeneralTabSouth(), java.awt.BorderLayout.SOUTH);\r
+            jPanelGeneralTab.add(getJPanelGeneralTabCenter(), java.awt.BorderLayout.CENTER);\r
         }\r
-        return jPanel4;\r
+        return jPanelGeneralTab;\r
     }\r
 \r
     /**\r
@@ -303,21 +322,24 @@ public class FpdPlatformDefs extends IInternalFrame {
      *         \r
      * @return javax.swing.JPanel      \r
      */\r
-    private JPanel getJPanel5() {\r
-        if (jPanel5 == null) {\r
+    private JPanel getJPanelGeneralTabNorth() {\r
+        if (jPanelGeneralTabNorth == 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
-            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
+            flowLayout2.setHgap(12);\r
+            jPanelGeneralTabNorth = new JPanel();\r
+            jPanelGeneralTabNorth.setLayout(flowLayout2);\r
+            jPanelGeneralTabNorth.add(jLabel, null);\r
+            jPanelGeneralTabNorth.add(getJCheckBoxIa32(), null);\r
+            jPanelGeneralTabNorth.add(getJCheckBoxX64(), null);\r
+            jPanelGeneralTabNorth.add(getJCheckBoxIpf(), null);\r
+            jPanelGeneralTabNorth.add(getJCheckBoxEbc(), null);\r
+            jPanelGeneralTabNorth.add(getJCheckBoxArm(), null);\r
+            jPanelGeneralTabNorth.add(getJCheckBoxPpc(), null);\r
         }\r
-        return jPanel5;\r
+        return jPanelGeneralTabNorth;\r
     }\r
 \r
     /**\r
@@ -325,12 +347,23 @@ public class FpdPlatformDefs extends IInternalFrame {
      *         \r
      * @return javax.swing.JCheckBox   \r
      */\r
-    private JCheckBox getJCheckBox1() {\r
-        if (jCheckBox1 == null) {\r
-            jCheckBox1 = new JCheckBox();\r
-            jCheckBox1.setText("MSFT");\r
+    private JCheckBox getJCheckBoxIa32() {\r
+        if (jCheckBoxIa32 == null) {\r
+            jCheckBoxIa32 = new JCheckBox();\r
+            jCheckBoxIa32.setText("IA32");\r
+            jCheckBoxIa32.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
+                    if (v.size() == 0) {\r
+                        JOptionPane.showMessageDialog(frame, "Platform must contain at least ONE supported Arch.");\r
+                        return;\r
+                    }\r
+                    ffc.setPlatformDefsSupportedArchs(v);\r
+                }\r
+            });\r
         }\r
-        return jCheckBox1;\r
+        return jCheckBoxIa32;\r
     }\r
 \r
     /**\r
@@ -338,12 +371,23 @@ public class FpdPlatformDefs extends IInternalFrame {
      *         \r
      * @return javax.swing.JCheckBox   \r
      */\r
-    private JCheckBox getJCheckBox2() {\r
-        if (jCheckBox2 == null) {\r
-            jCheckBox2 = new JCheckBox();\r
-            jCheckBox2.setText("GCC");\r
+    private JCheckBox getJCheckBoxX64() {\r
+        if (jCheckBoxX64 == null) {\r
+            jCheckBoxX64 = new JCheckBox();\r
+            jCheckBoxX64.setText("X64");\r
+            jCheckBoxX64.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
+                    if (v.size() == 0) {\r
+                        JOptionPane.showMessageDialog(frame, "Platform must contain at least ONE supported Arch.");\r
+                        return;\r
+                    }\r
+                    ffc.setPlatformDefsSupportedArchs(v);\r
+                }\r
+            });\r
         }\r
-        return jCheckBox2;\r
+        return jCheckBoxX64;\r
     }\r
 \r
     /**\r
@@ -351,12 +395,23 @@ public class FpdPlatformDefs extends IInternalFrame {
      *         \r
      * @return javax.swing.JCheckBox   \r
      */\r
-    private JCheckBox getJCheckBox3() {\r
-        if (jCheckBox3 == null) {\r
-            jCheckBox3 = new JCheckBox();\r
-            jCheckBox3.setText("INTC");\r
+    private JCheckBox getJCheckBoxIpf() {\r
+        if (jCheckBoxIpf == null) {\r
+            jCheckBoxIpf = new JCheckBox();\r
+            jCheckBoxIpf.setText("IPF");\r
+            jCheckBoxIpf.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
+                    if (v.size() == 0) {\r
+                        JOptionPane.showMessageDialog(frame, "Platform must contain at least ONE supported Arch.");\r
+                        return;\r
+                    }\r
+                    ffc.setPlatformDefsSupportedArchs(v);\r
+                }\r
+            });\r
         }\r
-        return jCheckBox3;\r
+        return jCheckBoxIpf;\r
     }\r
     \r
     /**\r
@@ -364,60 +419,51 @@ public class FpdPlatformDefs extends IInternalFrame {
      *  \r
      * @return javax.swing.JTable   \r
      */\r
-    private JTable getJTable() {\r
-        if (jTable == null) {\r
-            imageEntryPointTableModel = new DefaultTableModel();\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
+    private JTable getJTableBuildTargets() {\r
+        if (jTableBuildTargets == null) {\r
+            buildTargetTableModel = new TargetTableModel();\r
+            buildTargetTableModel.addColumn("Build Target");\r
+            jTableBuildTargets = new JTable(buildTargetTableModel);\r
+            jTableBuildTargets.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
+            jTableBuildTargets.getModel().addTableModelListener(new TableModelListener() {\r
+                public void tableChanged(TableModelEvent arg0) {\r
+                    // TODO Auto-generated method stub\r
+                    if (jTableBuildTargets.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 < jTableBuildTargets.getRowCount(); ++i) {\r
+                            v.add(m.getValueAt(i, 0));\r
+                        }\r
+                        docConsole.setSaved(false);\r
+                        ffc.setPlatformDefsBuildTargets(v);\r
+                    }\r
+                }\r
+            });\r
         }\r
-        return jTable1;\r
+        return jTableBuildTargets;\r
     }\r
 \r
-\r
     /**\r
      * This method initializes jPanel6 \r
      *         \r
      * @return javax.swing.JPanel      \r
      */\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
+    private JPanel getJPanelGeneralTabSouth() {\r
+        if (jPanelGeneralTabSouth == null) {\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.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
+            jPanelGeneralTabSouth = new JPanel();\r
+            jPanelGeneralTabSouth.setPreferredSize(new java.awt.Dimension(10,200));\r
+            jPanelGeneralTabSouth.setLayout(flowLayout3);\r
+            jPanelGeneralTabSouth.add(getJPanelDir(), null);\r
         }\r
-        return jPanel6;\r
+        return jPanelGeneralTabSouth;\r
     }\r
 \r
     /**\r
@@ -425,12 +471,12 @@ public class FpdPlatformDefs extends IInternalFrame {
      *         \r
      * @return javax.swing.JCheckBox   \r
      */\r
-    private JCheckBox getJCheckBox4() {\r
-        if (jCheckBox4 == null) {\r
-            jCheckBox4 = new JCheckBox();\r
-            jCheckBox4.setText("Intermediate Directories");\r
+    private JCheckBox getJCheckBoxInterDir() {\r
+        if (jCheckBoxInterDir == null) {\r
+            jCheckBoxInterDir = new JCheckBox();\r
+            jCheckBoxInterDir.setText("Intermediate Directories");\r
         }\r
-        return jCheckBox4;\r
+        return jCheckBoxInterDir;\r
     }\r
 \r
     /**\r
@@ -438,28 +484,24 @@ public class FpdPlatformDefs extends IInternalFrame {
      *         \r
      * @return javax.swing.JComboBox   \r
      */\r
-    private JComboBox getJComboBox() {\r
-        if (jComboBox == null) {\r
-            jComboBox = new JComboBox();\r
-            jComboBox.setPreferredSize(new Dimension(100, 20));\r
-            jComboBox.addItem("MODULE");\r
-            jComboBox.addItem("UNIFIED");\r
-            jComboBox.setSelectedIndex(0);\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
+    private JComboBox getJComboBoxInterDir() {\r
+        if (jComboBoxInterDir == null) {\r
+            jComboBoxInterDir = new JComboBox();\r
+            jComboBoxInterDir.setPreferredSize(new Dimension(100, 20));\r
+            jComboBoxInterDir.addItem("UNIFIED");\r
+            jComboBoxInterDir.addItem("MODULE");\r
+            \r
+            jComboBoxInterDir.setSelectedIndex(0);\r
+            jComboBoxInterDir.addItemListener(new java.awt.event.ItemListener() {\r
+                public void itemStateChanged(java.awt.event.ItemEvent e) {\r
+                    if (docConsole != null){\r
+                        docConsole.setSaved(false);\r
+                    }\r
+                    ffc.setPlatformDefsInterDir(jComboBoxInterDir.getSelectedItem()+"");\r
+                }\r
+            });\r
         }\r
-        return jTextField;\r
+        return jComboBoxInterDir;\r
     }\r
 \r
     /**\r
@@ -467,45 +509,26 @@ public class FpdPlatformDefs extends IInternalFrame {
      *         \r
      * @return javax.swing.JPanel      \r
      */\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
+    private JPanel getJPanelGeneralTabCenter() {\r
+        if (jPanelGeneralTabCenter == null) {\r
+            jLabelBuildTargets = new JLabel();\r
+            jLabelBuildTargets.setPreferredSize(new Dimension(109, 16));\r
+            jLabelBuildTargets.setText("Build Targets");\r
             FlowLayout flowLayout4 = new FlowLayout();\r
             flowLayout4.setAlignment(FlowLayout.LEFT);\r
             flowLayout4.setHgap(20);\r
-            jPanel7 = new JPanel();\r
-            jPanel7.setPreferredSize(new Dimension(972, 100));\r
-            jPanel7.setLayout(flowLayout4);\r
-            jPanel7.add(jLabel2, null);\r
-            jPanel7.add(getJTextField1(), null);\r
-            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(getJScrollPane3(), null);\r
-            jPanel7.add(jLabel6, null);\r
-            jPanel7.add(getJButton4(), null);\r
-            jPanel7.add(getJButton5(), null);\r
-        }\r
-        return jPanel7;\r
+            jPanelGeneralTabCenter = new JPanel();\r
+            jPanelGeneralTabCenter.setPreferredSize(new Dimension(972, 100));\r
+            jPanelGeneralTabCenter.setLayout(flowLayout4);\r
+            jPanelGeneralTabCenter.add(jLabelBuildTargets, null);\r
+            jPanelGeneralTabCenter.add(getJTextFieldBuildTarget(), null);\r
+            jPanelGeneralTabCenter.add(getJButtonAddBuildTarget(), null);\r
+            jPanelGeneralTabCenter.add(getJButtonDelBuildTarget(), null);\r
+            jPanelGeneralTabCenter.add(getJScrollPaneBuildTargets(), null);\r
+            jPanelGeneralTabCenter.add(getJPanelSkuInfo(), null);\r
+            jPanelGeneralTabCenter.add(getJScrollPaneSkuInfo(), null);\r
+        }\r
+        return jPanelGeneralTabCenter;\r
     }\r
 \r
     /**\r
@@ -513,12 +536,12 @@ public class FpdPlatformDefs extends IInternalFrame {
      *         \r
      * @return javax.swing.JTextField  \r
      */\r
-    private JTextField getJTextField1() {\r
-        if (jTextField1 == null) {\r
-            jTextField1 = new JTextField();\r
-            jTextField1.setPreferredSize(new Dimension(150, 20));\r
+    private JTextField getJTextFieldBuildTarget() {\r
+        if (jTextFieldBuildTarget == null) {\r
+            jTextFieldBuildTarget = new JTextField();\r
+            jTextFieldBuildTarget.setPreferredSize(new Dimension(150, 20));\r
         }\r
-        return jTextField1;\r
+        return jTextFieldBuildTarget;\r
     }\r
 \r
     /**\r
@@ -526,13 +549,27 @@ public class FpdPlatformDefs extends IInternalFrame {
      *         \r
      * @return javax.swing.JButton     \r
      */\r
-    private JButton getJButton2() {\r
-        if (jButton2 == null) {\r
-            jButton2 = new JButton();\r
-            jButton2.setPreferredSize(new Dimension(70, 20));\r
-            jButton2.setText("Add");\r
+    private JButton getJButtonAddBuildTarget() {\r
+        if (jButtonAddBuildTarget == null) {\r
+            jButtonAddBuildTarget = new JButton();\r
+            jButtonAddBuildTarget.setPreferredSize(new Dimension(70, 20));\r
+            jButtonAddBuildTarget.setText("Add");\r
+            jButtonAddBuildTarget.addActionListener(new java.awt.event.ActionListener() {\r
+                public void actionPerformed(java.awt.event.ActionEvent e) {\r
+                    if (jTextFieldBuildTarget.getText().length() > 0) {\r
+                        String[] row = {jTextFieldBuildTarget.getText()};\r
+                        buildTargetTableModel.addRow(row);\r
+                        Vector<Object> v = new Vector<Object>();\r
+                        for (int i = 0; i < jTableBuildTargets.getRowCount(); ++i) {\r
+                            v.add(buildTargetTableModel.getValueAt(i, 0));\r
+                        }\r
+                        docConsole.setSaved(false);\r
+                        ffc.setPlatformDefsBuildTargets(v);\r
+                    }\r
+                }\r
+            });\r
         }\r
-        return jButton2;\r
+        return jButtonAddBuildTarget;\r
     }\r
 \r
     /**\r
@@ -540,13 +577,14 @@ public class FpdPlatformDefs extends IInternalFrame {
      *         \r
      * @return javax.swing.JButton     \r
      */\r
-    private JButton getJButton3() {\r
-        if (jButton3 == null) {\r
-            jButton3 = new JButton();\r
-            jButton3.setPreferredSize(new Dimension(70, 20));\r
-            jButton3.setText("Delete");\r
+    private JButton getJButtonDelBuildTarget() {\r
+        if (jButtonDelBuildTarget == null) {\r
+            jButtonDelBuildTarget = new JButton();\r
+            jButtonDelBuildTarget.setPreferredSize(new Dimension(70, 20));\r
+            jButtonDelBuildTarget.setText("Delete");\r
+            jButtonDelBuildTarget.setVisible(false);\r
         }\r
-        return jButton3;\r
+        return jButtonDelBuildTarget;\r
     }\r
 \r
     /**\r
@@ -554,13 +592,13 @@ public class FpdPlatformDefs extends IInternalFrame {
      *         \r
      * @return javax.swing.JScrollPane \r
      */\r
-    private JScrollPane getJScrollPane2() {\r
-        if (jScrollPane2 == null) {\r
-            jScrollPane2 = new JScrollPane();\r
-            jScrollPane2.setPreferredSize(new Dimension(453, 100));\r
-            jScrollPane2.setViewportView(getJTable());\r
+    private JScrollPane getJScrollPaneBuildTargets() {\r
+        if (jScrollPaneBuildTargets == null) {\r
+            jScrollPaneBuildTargets = new JScrollPane();\r
+            jScrollPaneBuildTargets.setPreferredSize(new Dimension(453, 100));\r
+            jScrollPaneBuildTargets.setViewportView(getJTableBuildTargets());\r
         }\r
-        return jScrollPane2;\r
+        return jScrollPaneBuildTargets;\r
     }\r
 \r
     /**\r
@@ -568,13 +606,13 @@ public class FpdPlatformDefs 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(453,100));\r
-            jScrollPane3.setViewportView(getJTable2());\r
+    private JScrollPane getJScrollPaneSkuInfo() {\r
+        if (jScrollPaneSkuInfo == null) {\r
+            jScrollPaneSkuInfo = new JScrollPane();\r
+            jScrollPaneSkuInfo.setPreferredSize(new java.awt.Dimension(453,100));\r
+            jScrollPaneSkuInfo.setViewportView(getJTableSkuInfo());\r
         }\r
-        return jScrollPane3;\r
+        return jScrollPaneSkuInfo;\r
     }\r
 \r
     /**\r
@@ -582,14 +620,187 @@ public class FpdPlatformDefs extends IInternalFrame {
      *         \r
      * @return javax.swing.JTable      \r
      */\r
-    private JTable getJTable2() {\r
-        if (jTable2 == null) {\r
-            skuInfoTableModel = new DefaultTableModel();\r
+    private JTable getJTableSkuInfo() {\r
+        if (jTableSkuInfo == null) {\r
+            skuInfoTableModel = new SkuInfoTableModel();\r
             skuInfoTableModel.addColumn("SKU ID");\r
             skuInfoTableModel.addColumn("Name");\r
-            jTable2 = new JTable(skuInfoTableModel);\r
+            jTableSkuInfo = new JTable(skuInfoTableModel);\r
+            \r
+            jTableSkuInfo.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+            \r
+            jTableSkuInfo.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
+                        docConsole.setSaved(false);\r
+                        ffc.updatePlatformDefsSkuInfo(row, id, name);\r
+                    }\r
+                }\r
+            });\r
+        }\r
+        return jTableSkuInfo;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jCheckBox       \r
+     *         \r
+     * @return javax.swing.JCheckBox   \r
+     */\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
+            jCheckBoxEbc.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
+                    if (v.size() == 0) {\r
+                        JOptionPane.showMessageDialog(frame, "Platform must contain at least ONE supported Arch.");\r
+                        return;\r
+                    }\r
+                    ffc.setPlatformDefsSupportedArchs(v);\r
+                }\r
+            });\r
+        }\r
+        return jCheckBoxEbc;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jCheckBox5      \r
+     *         \r
+     * @return javax.swing.JCheckBox   \r
+     */\r
+    private JCheckBox getJCheckBoxArm() {\r
+        if (jCheckBoxArm == null) {\r
+            jCheckBoxArm = new JCheckBox();\r
+            jCheckBoxArm.setPreferredSize(new java.awt.Dimension(52,20));\r
+            jCheckBoxArm.setText("ARM");\r
+            jCheckBoxArm.setVisible(false);\r
+            jCheckBoxArm.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
+                    if (v.size() == 0) {\r
+                        JOptionPane.showMessageDialog(frame, "Platform must contain at least ONE supported Arch.");\r
+                        return;\r
+                    }\r
+                    ffc.setPlatformDefsSupportedArchs(v);\r
+                }\r
+            });\r
+        }\r
+        return jCheckBoxArm;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jCheckBox6      \r
+     *         \r
+     * @return javax.swing.JCheckBox   \r
+     */\r
+    private JCheckBox getJCheckBoxPpc() {\r
+        if (jCheckBoxPpc == null) {\r
+            jCheckBoxPpc = new JCheckBox();\r
+            jCheckBoxPpc.setPreferredSize(new Dimension(50, 20));\r
+            jCheckBoxPpc.setText("PPC");\r
+            jCheckBoxPpc.setVisible(false);\r
+            jCheckBoxPpc.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
+                    if (v.size() == 0) {\r
+                        JOptionPane.showMessageDialog(frame, "Platform must contain at least ONE supported Arch.");\r
+                        return;\r
+                    }\r
+                    ffc.setPlatformDefsSupportedArchs(v);\r
+                }\r
+            });\r
+        }\r
+        return jCheckBoxPpc;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jPanel8 \r
+     *         \r
+     * @return javax.swing.JPanel      \r
+     */\r
+    private JPanel getJPanelDir() {\r
+        if (jPanelDir == null) {\r
+            FlowLayout flowLayout1 = new FlowLayout();\r
+            flowLayout1.setAlignment(java.awt.FlowLayout.LEFT);\r
+            jLabelOutputDir = new JLabel();\r
+            jLabelOutputDir.setText("Output Directory");\r
+            jLabelPad = new JLabel();\r
+            jLabelPad.setPreferredSize(new java.awt.Dimension(150,20));\r
+            jLabelPad.setText("");\r
+            jPanelDir = new JPanel();\r
+            jPanelDir.setLayout(flowLayout1);\r
+            jPanelDir.setPreferredSize(new java.awt.Dimension(450,100));\r
+            jPanelDir.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));\r
+            jPanelDir.add(getJCheckBoxInterDir(), null);\r
+            jPanelDir.add(getJComboBoxInterDir(), null);\r
+            jPanelDir.add(jLabelPad, null);\r
+            jPanelDir.add(jLabelOutputDir, null);\r
+            jPanelDir.add(getJTextFieldOutputDir(), null);\r
         }\r
-        return jTable2;\r
+        return jPanelDir;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jTextField      \r
+     *         \r
+     * @return javax.swing.JTextField  \r
+     */\r
+    private JTextField getJTextFieldOutputDir() {\r
+        if (jTextFieldOutputDir == null) {\r
+            jTextFieldOutputDir = new JTextField();\r
+            jTextFieldOutputDir.setPreferredSize(new java.awt.Dimension(300,20));\r
+            jTextFieldOutputDir.addFocusListener(new java.awt.event.FocusAdapter() {\r
+                public void focusLost(java.awt.event.FocusEvent e) {\r
+                    docConsole.setSaved(false);\r
+                    ffc.setPlatformDefsOutputDir(jTextFieldOutputDir.getText());\r
+                }\r
+            });\r
+        }\r
+        return jTextFieldOutputDir;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jPanel9 \r
+     *         \r
+     * @return javax.swing.JPanel      \r
+     */\r
+    private JPanel getJPanelSkuInfo() {\r
+        if (jPanelSkuInfo == null) {\r
+            jLabelPadd = new JLabel();\r
+            jLabelPadd.setPreferredSize(new Dimension(280, 20));\r
+            jLabelPadd.setText("                                                 ");\r
+            jLabelSkuName = new JLabel();\r
+            jLabelSkuName.setPreferredSize(new Dimension(40, 20));\r
+            jLabelSkuName.setText("Name");\r
+            jLabelSkuId = new JLabel();\r
+            jLabelSkuId.setPreferredSize(new Dimension(20, 20));\r
+            jLabelSkuId.setText("ID");\r
+            jLabelSkuInfo = new JLabel();\r
+            jLabelSkuInfo.setPreferredSize(new java.awt.Dimension(150,20));\r
+            jLabelSkuInfo.setText("SKU Information");\r
+            jPanelSkuInfo = new JPanel();\r
+            jPanelSkuInfo.setPreferredSize(new java.awt.Dimension(450,70));\r
+            jPanelSkuInfo.add(jLabelSkuInfo, null);\r
+            jPanelSkuInfo.add(jLabelPadd, null);\r
+            jPanelSkuInfo.add(jLabelSkuId, null);\r
+            jPanelSkuInfo.add(getJTextFieldSkuId(), null);\r
+            jPanelSkuInfo.add(jLabelSkuName, null);\r
+            jPanelSkuInfo.add(getJTextFieldSkuName(), null);\r
+            jPanelSkuInfo.add(getJButtonSkuAdd(), null);\r
+            jPanelSkuInfo.add(getJButtonSkuDel(), null);\r
+        }\r
+        return jPanelSkuInfo;\r
     }\r
 \r
     /**\r
@@ -597,12 +808,12 @@ public class FpdPlatformDefs 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(50,20));\r
+    private JTextField getJTextFieldSkuId() {\r
+        if (jTextFieldSkuId == null) {\r
+            jTextFieldSkuId = new JTextField();\r
+            jTextFieldSkuId.setPreferredSize(new Dimension(50, 20));\r
         }\r
-        return jTextField2;\r
+        return jTextFieldSkuId;\r
     }\r
 \r
     /**\r
@@ -610,43 +821,91 @@ public class FpdPlatformDefs extends IInternalFrame {
      *         \r
      * @return javax.swing.JTextField  \r
      */\r
-    private JTextField getJTextField3() {\r
-        if (jTextField3 == null) {\r
-            jTextField3 = new JTextField();\r
-            jTextField3.setPreferredSize(new Dimension(150, 20));\r
+    private JTextField getJTextFieldSkuName() {\r
+        if (jTextFieldSkuName == null) {\r
+            jTextFieldSkuName = new JTextField();\r
+            jTextFieldSkuName.setPreferredSize(new Dimension(150, 20));\r
         }\r
-        return jTextField3;\r
+        return jTextFieldSkuName;\r
     }\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 getJButtonSkuAdd() {\r
+        if (jButtonSkuAdd == null) {\r
+            jButtonSkuAdd = new JButton();\r
+            jButtonSkuAdd.setPreferredSize(new Dimension(70, 20));\r
+            jButtonSkuAdd.setText("Add");\r
+            jButtonSkuAdd.addActionListener(new java.awt.event.ActionListener() {\r
+                public void actionPerformed(java.awt.event.ActionEvent e) {\r
+                    if (jTextFieldSkuId.getText().length() > 0) {\r
+                        String[] row = {jTextFieldSkuId.getText(), jTextFieldSkuName.getText()};\r
+                        skuInfoTableModel.addRow(row);\r
+                        docConsole.setSaved(false);\r
+                        ffc.genPlatformDefsSkuInfo(row[0], row[1]);\r
+                    }\r
+                }\r
+            });\r
         }\r
-        return jButton4;\r
+        return jButtonSkuAdd;\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 getJButtonSkuDel() {\r
+        if (jButtonSkuDel == null) {\r
+            jButtonSkuDel = new JButton();\r
+            jButtonSkuDel.setPreferredSize(new Dimension(70, 20));\r
+            jButtonSkuDel.setText("Delete");\r
+            jButtonSkuDel.addActionListener(new java.awt.event.ActionListener() {\r
+                public void actionPerformed(java.awt.event.ActionEvent e) {\r
+                    if (jTableSkuInfo.isEditing()) {\r
+                        jTableSkuInfo.getCellEditor().stopCellEditing();\r
+                    }\r
+                    if (jTableSkuInfo.getSelectedRow() < 1) {\r
+                        return;\r
+                    }\r
+                    docConsole.setSaved(false);\r
+                    ffc.removePlatformDefsSkuInfo(jTableSkuInfo.getSelectedRow());\r
+                    skuInfoTableModel.removeRow(jTableSkuInfo.getSelectedRow());\r
+                }\r
+            });\r
         }\r
-        return jButton5;\r
+        return jButtonSkuDel;\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