]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdBuildOptions.java
Fixed EDKT469.
[mirror_edk2.git] / Tools / Java / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / platform / ui / FpdBuildOptions.java
index 8af4bea28ac27255ec4ba0866b6bd3cb834d99d0..b6de4eb7d0b333a0135feb1e0371b38efdfdace0 100644 (file)
@@ -36,6 +36,8 @@ import javax.swing.JScrollPane;
 import javax.swing.JTable;\r
 import javax.swing.JComboBox;\r
 import javax.swing.ListSelectionModel;\r
+import javax.swing.event.DocumentEvent;\r
+import javax.swing.event.DocumentListener;\r
 import javax.swing.event.InternalFrameAdapter;\r
 import javax.swing.event.InternalFrameEvent;\r
 import javax.swing.event.ListSelectionEvent;\r
@@ -167,10 +169,6 @@ public class FpdBuildOptions extends IInternalFrame {
 \r
     private JPanel jPanelFfsTabCenterS = null;\r
 \r
-    private JLabel jLabelFfsKey = null;\r
-\r
-    private JTextField jTextFieldFfsKey = null;\r
-\r
     private JButton jButtonFfsAdd = null;\r
 \r
     private JButton jButtonFfsDel = null;\r
@@ -313,6 +311,9 @@ public class FpdBuildOptions extends IInternalFrame {
     private final int toolCmdCodeWidth = 200;\r
     private final int tagNameWidth = 150;\r
     private final int argWidth = 400;\r
+    \r
+    private boolean ffsSelection = false;\r
+    private int selectedFfsTableRow = -1;\r
 \r
     /**\r
      * This method initializes jPanel  \r
@@ -457,27 +458,34 @@ public class FpdBuildOptions extends IInternalFrame {
         initFfsTable();\r
         this.addInternalFrameListener(new InternalFrameAdapter() {\r
             public void internalFrameDeactivated(InternalFrameEvent e) {\r
-                if (jTableFfs.isEditing()) {\r
-                    jTableFfs.getCellEditor().stopCellEditing();\r
-                }\r
-                if (jTableFfsSection.isEditing()) {\r
-                    jTableFfsSection.getCellEditor().stopCellEditing();\r
-                }\r
                 if (jTableAntTasks.isEditing()) {\r
                     jTableAntTasks.getCellEditor().stopCellEditing();\r
                 }\r
-                if (jTableFfsSubSection.isEditing()) {\r
-                    jTableFfsSubSection.getCellEditor().stopCellEditing();\r
-                }\r
-                if (jTableFfsAttribs.isEditing()) {\r
-                    jTableFfsAttribs.getCellEditor().stopCellEditing();\r
-                }\r
                 if (jTableOptions.isEditing()) {\r
                     jTableOptions.getCellEditor().stopCellEditing();\r
                 }\r
+                stopEditingInTables ();\r
             }\r
         });\r
     }\r
+    \r
+    private void stopEditingInTables () {\r
+        if (jTableFfs.isEditing()) {\r
+            jTableFfs.getCellEditor().stopCellEditing();\r
+        }\r
+        if (jTableFfsSection.isEditing()) {\r
+            jTableFfsSection.getCellEditor().stopCellEditing();\r
+        }\r
+        if (jTableFfsSections.isEditing()) {\r
+            jTableFfsSections.getCellEditor().stopCellEditing();\r
+        }\r
+        if (jTableFfsSubSection.isEditing()) {\r
+            jTableFfsSubSection.getCellEditor().stopCellEditing();\r
+        }\r
+        if (jTableFfsAttribs.isEditing()) {\r
+            jTableFfsAttribs.getCellEditor().stopCellEditing();\r
+        }\r
+    }\r
 \r
     /**\r
      * This method initializes jPanel13        \r
@@ -521,12 +529,11 @@ public class FpdBuildOptions extends IInternalFrame {
             jLabelEncapType.setText("Encapsulation Type");\r
             FlowLayout flowLayout5 = new FlowLayout();\r
             flowLayout5.setAlignment(java.awt.FlowLayout.RIGHT);\r
-            jLabelFfsKey = new JLabel();\r
-            jLabelFfsKey.setText("FFS Key");\r
+            \r
             jPanelFfsTabCenterN = new JPanel();\r
             jPanelFfsTabCenterN.setLayout(flowLayout5);\r
-            jPanelFfsTabCenterN.add(jLabelFfsKey, null);\r
-            jPanelFfsTabCenterN.add(getJTextFieldFfsKey(), null);\r
+            \r
+            \r
             jPanelFfsTabCenterN.add(jLabelEncapType, null);\r
             jPanelFfsTabCenterN.add(getJTextFieldEncapType(), null);\r
             jPanelFfsTabCenterN.add(getJButtonFfsAdd(), null);\r
@@ -544,16 +551,12 @@ public class FpdBuildOptions extends IInternalFrame {
         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
             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
+            jPanelFfsTabCenterS.setLayout(new BorderLayout());\r
+            jPanelFfsTabCenterS.add(jLabelFfsAttribs, java.awt.BorderLayout.WEST);\r
+            jPanelFfsTabCenterS.add(getJScrollPaneFfsAttribs(), java.awt.BorderLayout.CENTER);\r
+            jPanelFfsTabCenterS.add(getJPanelFfsAttribButtonGroup(), java.awt.BorderLayout.EAST);\r
         }\r
         return jPanelFfsTabCenterS;\r
     }\r
@@ -563,22 +566,7 @@ public class FpdBuildOptions extends IInternalFrame {
      *         \r
      * @return javax.swing.JTextField  \r
      */\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 (jTableFfs.getSelectedRow() < 0) {\r
-                        return;\r
-                    }\r
-                    //                    ffc.updateBuildOptionsFfsKey(jTable.getSelectedRow(), jTextField6.getText());\r
-                }\r
-            });\r
-        }\r
-        return jTextFieldFfsKey;\r
-    }\r
+    \r
 \r
     /**\r
      * This method initializes jButton8        \r
@@ -589,7 +577,7 @@ public class FpdBuildOptions extends IInternalFrame {
         if (jButtonFfsAdd == null) {\r
             jButtonFfsAdd = new JButton();\r
             jButtonFfsAdd.setPreferredSize(new java.awt.Dimension(70, 20));\r
-            jButtonFfsAdd.setText("Add");\r
+            jButtonFfsAdd.setText("New");\r
             jButtonFfsAdd.addActionListener(new AbstractAction() {\r
                 /**\r
                  * \r
@@ -597,12 +585,13 @@ public class FpdBuildOptions extends IInternalFrame {
                 private static final long serialVersionUID = -2923720717273384221L;\r
 \r
                 public void actionPerformed(java.awt.event.ActionEvent e) {\r
-                    if (jTextFieldFfsKey.getText().length() > 0) {\r
-                        String[] row = { jTextFieldFfsKey.getText() };\r
+                    \r
+                        String[] row = { "" };\r
                         ffsTableModel.addRow(row);\r
                         docConsole.setSaved(false);\r
-                        ffc.genBuildOptionsFfs(jTextFieldFfsKey.getText(), jTextFieldEncapType.getText());\r
-                    }\r
+                        ffc.genBuildOptionsFfs("", "");\r
+                        jTableFfs.changeSelection(ffsTableModel.getRowCount()-1, 0, false, false);\r
+                    \r
                 }\r
             });\r
         }\r
@@ -629,6 +618,7 @@ public class FpdBuildOptions extends IInternalFrame {
                     if (jTableFfs.getSelectedRow() < 0) {\r
                         return;\r
                     }\r
+                    stopEditingInTables();\r
                     docConsole.setSaved(false);\r
                     ffc.removeBuildOptionsFfs(jTableFfs.getSelectedRow());\r
                     ffsTableModel.removeRow(jTableFfs.getSelectedRow());\r
@@ -650,8 +640,9 @@ public class FpdBuildOptions extends IInternalFrame {
     private JScrollPane getJScrollPaneFfsAttribs() {\r
         if (jScrollPaneFfsAttribs == null) {\r
             jScrollPaneFfsAttribs = new JScrollPane();\r
-            jScrollPaneFfsAttribs.setPreferredSize(new java.awt.Dimension(350, 100));\r
+//            jScrollPaneFfsAttribs.setPreferredSize(new java.awt.Dimension(350, 100));\r
             jScrollPaneFfsAttribs.setViewportView(getJTableFfsAttribs());\r
+            \r
         }\r
         return jScrollPaneFfsAttribs;\r
     }\r
@@ -665,7 +656,7 @@ public class FpdBuildOptions extends IInternalFrame {
         if (jTableFfsAttribs == null) {\r
             ffsAttributesTableModel = new DefaultTableModel();\r
             jTableFfsAttribs = new JTable(ffsAttributesTableModel);\r
-            jTableFfsAttribs.setPreferredSize(new java.awt.Dimension(400, 80));\r
+//            jTableFfsAttribs.setPreferredSize(new java.awt.Dimension(400, 80));\r
             jTableFfsAttribs.setRowHeight(20);\r
             ffsAttributesTableModel.addColumn("Name");\r
             ffsAttributesTableModel.addColumn("Value");\r
@@ -706,6 +697,7 @@ public class FpdBuildOptions extends IInternalFrame {
         for (int i = 0; i < saa.length; ++i) {\r
             ffsTableModel.addRow(saa[i]);\r
         }\r
+        jTableFfs.changeSelection(0, 0, false, false);\r
     }\r
 \r
     /**\r
@@ -758,6 +750,7 @@ public class FpdBuildOptions extends IInternalFrame {
                     if (jTableFfs.getSelectedRow() < 0) {\r
                         return;\r
                     }\r
+                    stopEditingInTables();\r
                     if (jTableFfsAttribs.getSelectedRow() >= 0) {\r
                         docConsole.setSaved(false);\r
                         ffsAttributesTableModel.removeRow(jTableFfsAttribs.getSelectedRow());\r
@@ -778,7 +771,7 @@ public class FpdBuildOptions extends IInternalFrame {
     private JScrollPane getJScrollPaneFfs() {\r
         if (jScrollPaneFfs == null) {\r
             jScrollPaneFfs = new JScrollPane();\r
-            jScrollPaneFfs.setPreferredSize(new java.awt.Dimension(150, 419));\r
+            jScrollPaneFfs.setPreferredSize(new java.awt.Dimension(200,419));\r
             jScrollPaneFfs.setViewportView(getJTableFfs());\r
         }\r
         return jScrollPaneFfs;\r
@@ -818,8 +811,9 @@ 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
-                        jTextFieldFfsKey.setText(sArray[0]);\r
+                        ffsSelection = true;\r
                         jTextFieldEncapType.setText(sArray[1]);\r
+                        ffsSelection = false;\r
                         for (int i = 0; i < alSection.size(); ++i) {\r
                             String[] sectionRow = { alSection.get(i) };\r
                             sectionTableModel.addRow(sectionRow);\r
@@ -838,6 +832,7 @@ public class FpdBuildOptions extends IInternalFrame {
                             String[] attribRow = { key, lhm.get(key) };\r
                             ffsAttributesTableModel.addRow(attribRow);\r
                         }\r
+                        selectedFfsTableRow = row;\r
                     }\r
                 }\r
             });\r
@@ -998,13 +993,42 @@ public class FpdBuildOptions extends IInternalFrame {
     private JTextField getJTextFieldEncapType() {\r
         if (jTextFieldEncapType == null) {\r
             jTextFieldEncapType = new JTextField();\r
-            jTextFieldEncapType.setPreferredSize(new java.awt.Dimension(100, 20));\r
+            jTextFieldEncapType.setPreferredSize(new java.awt.Dimension(200,20));\r
+            jTextFieldEncapType.getDocument().addDocumentListener(new DocumentListener() {\r
+\r
+                public void insertUpdate(DocumentEvent arg0) {\r
+                    if (ffsSelection) {\r
+//                        ffsSelection = false;\r
+                        return;\r
+                    }\r
+                    if (docConsole != null) {\r
+                        docConsole.setSaved(false);\r
+                    }\r
+                }\r
+\r
+                public void removeUpdate(DocumentEvent arg0) {\r
+                    if (ffsSelection) {\r
+//                        ffsSelection = false;\r
+                        return;\r
+                    }\r
+                    if (docConsole != null) {\r
+                        docConsole.setSaved(false);\r
+                    }\r
+                }\r
+\r
+                public void changedUpdate(DocumentEvent arg0) {\r
+                    // TODO Auto-generated method stub\r
+                    \r
+                }\r
+                \r
+            });\r
             jTextFieldEncapType.addFocusListener(new java.awt.event.FocusAdapter() {\r
                 public void focusLost(java.awt.event.FocusEvent e) {\r
-                    if (jTableFfs.getSelectedRow() < 0) {\r
+                    if (selectedFfsTableRow < 0) {\r
                         return;\r
                     }\r
-                    ffc.updateBuildOptionsFfsSectionsType(jTableFfs.getSelectedRow(), jTextFieldEncapType.getText());\r
+                    ffc.updateBuildOptionsFfsSectionsType(selectedFfsTableRow, jTextFieldEncapType.getText());\r
+                    \r
                 }\r
             });\r
         }\r
@@ -1067,6 +1091,7 @@ public class FpdBuildOptions extends IInternalFrame {
                     if (jTableFfs.getSelectedRow() < 0 || jTableFfsSection.getSelectedRow() < 0) {\r
                         return;\r
                     }\r
+                    stopEditingInTables();\r
                     docConsole.setSaved(false);\r
                     sectionTableModel.removeRow(jTableFfsSection.getSelectedRow());\r
                     ffc.removeBuildOptionsFfsSectionsSection(jTableFfs.getSelectedRow(),\r
@@ -1116,15 +1141,22 @@ public class FpdBuildOptions extends IInternalFrame {
             jButtonFfsSubSectionRemove.setText("Remove");\r
             jButtonFfsSubSectionRemove.addActionListener(new java.awt.event.ActionListener() {\r
                 public void actionPerformed(java.awt.event.ActionEvent e) {\r
-                    if (jTableFfs.getSelectedRow() < 0 || jTableFfsSections.getSelectedRow() < 0\r
-                        || jTableFfsSubSection.getSelectedRow() < 0) {\r
+                    int selectedFfsRow = jTableFfs.getSelectedRow();\r
+                    int selectedSectionsRow = jTableFfsSections.getSelectedRow();\r
+                    int selectedSubSectionRow = jTableFfsSubSection.getSelectedRow();\r
+                    if (selectedFfsRow < 0 || selectedSectionsRow < 0\r
+                        || selectedSubSectionRow < 0) {\r
                         return;\r
                     }\r
+                    stopEditingInTables();\r
                     docConsole.setSaved(false);\r
-                    subsectionsTableModel.removeRow(jTableFfsSubSection.getSelectedRow());\r
-                    ffc.removeBuildOptionsFfsSectionsSectionsSection(jTableFfs.getSelectedRow(),\r
-                                                                     jTableFfsSections.getSelectedRow(),\r
-                                                                     jTableFfsSubSection.getSelectedRow());\r
+                    subsectionsTableModel.removeRow(selectedSubSectionRow);\r
+                    ffc.removeBuildOptionsFfsSectionsSectionsSection(selectedFfsRow,\r
+                                                                     selectedSectionsRow,\r
+                                                                     selectedSubSectionRow);\r
+                    if (subsectionsTableModel.getRowCount() == 0) {\r
+                        sectionsTableModel.removeRow(selectedSectionsRow);\r
+                    }\r
                 }\r
             });\r
         }\r
@@ -1147,9 +1179,11 @@ public class FpdBuildOptions extends IInternalFrame {
                         return;\r
                     }\r
                     docConsole.setSaved(false);\r
-                    String[] row = { "" };\r
+                    String[] row = { "Compress" };\r
                     sectionsTableModel.addRow(row);\r
                     ffc.genBuildOptionsFfsSectionsSections(jTableFfs.getSelectedRow(), "");\r
+                    JOptionPane.showMessageDialog(frame, "Add Default Section Type EFI_SECTION_PE32 into the New Sections Entry.");\r
+                    jTableFfsSections.changeSelection(sectionsTableModel.getRowCount()-1, 0, false, false);\r
                 }\r
             });\r
         }\r
@@ -1171,6 +1205,7 @@ public class FpdBuildOptions extends IInternalFrame {
                     if (jTableFfs.getSelectedRow() < 0 || jTableFfsSections.getSelectedRow() < 0) {\r
                         return;\r
                     }\r
+                    stopEditingInTables();\r
                     docConsole.setSaved(false);\r
                     sectionsTableModel.removeRow(jTableFfsSections.getSelectedRow());\r
                     ffc.removeBuildOptionsFfsSectionsSections(jTableFfs.getSelectedRow(),\r
@@ -1693,9 +1728,9 @@ public class FpdBuildOptions extends IInternalFrame {
                                   jTextFieldOptionContents.getText() };\r
                     optionsTableModel.addRow(o);\r
                     docConsole.setSaved(false);\r
-                    ffc.genBuildOptionsOpt(stringToVector(jTextFieldBuildTargets.getText()),\r
+                    ffc.genBuildOptionsOpt(stringToVector(jTextFieldBuildTargets.getText().trim()),\r
                                            jTextFieldToolChainFamily.getText(), jTextFieldTagName.getText(),\r
-                                           jTextFieldToolCmd.getText(), stringToVector(s),\r
+                                           jTextFieldToolCmd.getText(), stringToVector(s.trim()),\r
                                            jTextFieldOptionContents.getText());\r
                 }\r
             });\r
@@ -1854,7 +1889,7 @@ public class FpdBuildOptions extends IInternalFrame {
     private Vector<Object> stringToVector(String s) {\r
         String[] sArray = s.split(" ");\r
         Vector<Object> v = null;\r
-        if (s.length() > 0) {\r
+        if (s.length() > 0 && !s.trim().equalsIgnoreCase("")) {\r
             v = new Vector<Object>();\r
             for (int i = 0; i < sArray.length; ++i) {\r
                 v.add(sArray[i]);\r
@@ -1883,9 +1918,7 @@ public class FpdBuildOptions extends IInternalFrame {
         if (bool[5]) {\r
             s += "PPC ";\r
         }\r
-        if (s.equals(" ")) {\r
-            s += "IA32";\r
-        }\r
+        \r
         return s.trim();\r
     }\r
 \r