]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdPcdDefs.java
Fix the problem of label, button text part-display on Linux and iMac.
[mirror_edk2.git] / Tools / Java / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / packaging / ui / SpdPcdDefs.java
index 289dd148a5389136fb154315a6d219626625b140..7abf5c0f2e65721c2a296ec1d198d1f55b9d828e 100644 (file)
@@ -13,6 +13,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 package org.tianocore.frameworkwizard.packaging.ui;\r
 \r
 import java.awt.Dimension;\r
+import java.awt.FontMetrics;\r
 import java.awt.event.ActionEvent;\r
 import java.awt.event.ComponentEvent;\r
 \r
@@ -48,6 +49,7 @@ import javax.swing.JTable;
 import javax.swing.JCheckBox;\r
 import org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList;\r
 import org.tianocore.frameworkwizard.platform.ui.ListEditor;\r
+import org.tianocore.frameworkwizard.platform.ui.LongTextEditor;\r
 \r
 import java.awt.Rectangle;\r
 import java.util.Vector;\r
@@ -151,6 +153,16 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
     private JLabel jLabelSupMod = null;\r
 \r
     private JLabel jLabelSupArch = null;\r
+    \r
+    private final int pcdCNameMinWidth = 200;\r
+    private final int pcdTokenMinWidth = 100;\r
+    private final int pcdTokenSpaceMinWidth = 200;\r
+    private final int datumTypeMinWidth = 80;\r
+    private final int defaultValueMinWidth = 100;\r
+    private final int helpTextMinWidth = 200;\r
+    private final int usageMinWidth = 60;\r
+    private final int supArchMinWidth = 200;\r
+    private final int supModMinWidth = 200;\r
 \r
     /**\r
      This method initializes this\r
@@ -160,6 +172,15 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
         this.setTitle("PCD Declarations");\r
         this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);\r
 \r
+        int xPos = jCheckBoxPatchInMod.getX() + jCheckBoxPatchInMod.getWidth();\r
+        jCheckBoxFixedAtBuild.setLocation(xPos,133);\r
+        \r
+        xPos = jCheckBoxFeatureFlag.getX() + jCheckBoxFeatureFlag.getWidth();\r
+        jCheckBoxDyn.setLocation(xPos,161);\r
+        \r
+        xPos = jCheckBoxDyn.getX() + jCheckBoxDyn.getWidth();\r
+        jCheckBoxDynEx.setLocation(xPos,161);\r
+        \r
     }\r
 \r
     /**\r
@@ -344,17 +365,23 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
             jLabelSupArch.setBounds(new java.awt.Rectangle(241,192,89,16));\r
             jLabelSupArch.setText("Supported Architectures");\r
             jLabelSupArch.setEnabled(true);\r
+            FontMetrics fm = jLabelSupArch.getFontMetrics(jLabelSupArch.getFont());\r
+            jLabelSupArch.setSize(fm.stringWidth(jLabelSupArch.getText()) + 10, 20);\r
             jLabelSupMod = new JLabel();\r
             jLabelSupMod.setBounds(new java.awt.Rectangle(15,193,103,16));\r
-            jLabelSupMod.setText("Supported Module type");\r
+            jLabelSupMod.setText("Supported Module types");\r
             jLabelSupMod.setEnabled(true);\r
+            fm = jLabelSupMod.getFontMetrics(jLabelSupMod.getFont());\r
+            jLabelSupMod.setSize(fm.stringWidth(jLabelSupMod.getText()) + 10, 20);\r
             starLabel = new StarLabel();\r
             starLabel.setBounds(new java.awt.Rectangle(2,134,10,20));\r
             jLabelDefVal = new JLabel();\r
             jLabelDefVal.setBounds(new java.awt.Rectangle(277,84,80,20));\r
             jLabelDefVal.setText("Default Value");\r
+            fm = jLabelDefVal.getFontMetrics(jLabelDefVal.getFont());\r
+            jLabelDefVal.setSize(fm.stringWidth(jLabelDefVal.getText()) + 10, 20);\r
             jLabelVarVal = new JLabel();\r
-            jLabelVarVal.setBounds(new java.awt.Rectangle(11,133,84,20));\r
+            jLabelVarVal.setBounds(new java.awt.Rectangle(11,133,100,20));\r
             jLabelVarVal.setText("Valid Usage");\r
             jLabelC_Name = new JLabel();\r
             jLabelC_Name.setText("C Name");\r
@@ -564,7 +591,8 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
     private JTextField getJTextFieldDefaultValue() {\r
         if (jTextFieldDefaultValue == null) {\r
             jTextFieldDefaultValue = new JTextField();\r
-            jTextFieldDefaultValue.setBounds(new java.awt.Rectangle(368,84,105,20));\r
+            int xPos = jLabelDefVal.getX() + jLabelDefVal.getWidth();\r
+            jTextFieldDefaultValue.setBounds(new java.awt.Rectangle(xPos,84,105,20));\r
             jTextFieldDefaultValue.setPreferredSize(new java.awt.Dimension(104,20));\r
         }\r
         return jTextFieldDefaultValue;\r
@@ -677,6 +705,33 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
             model.addColumn("SupportedArch");\r
             model.addColumn("SupportedModule");\r
             \r
+            TableColumn column = jTable.getColumnModel().getColumn(0);\r
+            column.setMinWidth(this.pcdCNameMinWidth);\r
+            column = jTable.getColumnModel().getColumn(1);\r
+            column.setMinWidth(this.pcdTokenMinWidth);\r
+            column = jTable.getColumnModel().getColumn(2);\r
+            column.setMinWidth(this.pcdTokenSpaceMinWidth);\r
+            column = jTable.getColumnModel().getColumn(3);\r
+            column.setMinWidth(this.datumTypeMinWidth);\r
+            column = jTable.getColumnModel().getColumn(4);\r
+            column.setMinWidth(this.defaultValueMinWidth);\r
+            column = jTable.getColumnModel().getColumn(5);\r
+            column.setMinWidth(this.helpTextMinWidth);\r
+            column = jTable.getColumnModel().getColumn(6);\r
+            column.setMinWidth(this.usageMinWidth);\r
+            column = jTable.getColumnModel().getColumn(7);\r
+            column.setMinWidth(this.usageMinWidth);\r
+            column = jTable.getColumnModel().getColumn(8);\r
+            column.setMinWidth(this.usageMinWidth);\r
+            column = jTable.getColumnModel().getColumn(9);\r
+            column.setMinWidth(this.usageMinWidth);\r
+            column = jTable.getColumnModel().getColumn(10);\r
+            column.setMinWidth(this.usageMinWidth);\r
+            column = jTable.getColumnModel().getColumn(11);\r
+            column.setMinWidth(this.supArchMinWidth);\r
+            column = jTable.getColumnModel().getColumn(12);\r
+            column.setMinWidth(this.supModMinWidth);\r
+            \r
             //ToDo: add a valid usage editor\r
             \r
             JComboBox jComboBoxDataType = new JComboBox();\r
@@ -688,6 +743,8 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
             jComboBoxDataType.addItem("BOOLEAN");\r
             TableColumn dataTypeColumn = jTable.getColumnModel().getColumn(3);\r
             dataTypeColumn.setCellEditor(new DefaultCellEditor(jComboBoxDataType));\r
+            \r
+            jTable.getColumnModel().getColumn(5).setCellEditor(new LongTextEditor());\r
 \r
             Vector<String> vArch = new Vector<String>();\r
             vArch.add("IA32");\r
@@ -762,7 +819,12 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
                 return;\r
             }\r
             if (column <= 10 && column >= 6) {\r
-                if (compareTwoVectors(stringToVector(usage), stringToVector(sa[6]))) {\r
+                Vector<String> v = stringToVector(usage);\r
+                if (compareTwoVectors(v, stringToVector(sa[6]))) {\r
+                    return;\r
+                }\r
+                if (v.contains("FEATURE_FLAG") && v.size() > 1) {\r
+                    JOptionPane.showMessageDialog(frame, "Usage Feature Flag can NOT co-exist with others.");\r
                     return;\r
                 }\r
             }\r
@@ -826,7 +888,8 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
             jCheckBoxFeatureFlag = new JCheckBox();\r
             jCheckBoxFeatureFlag.setBounds(new java.awt.Rectangle(156,161,100,21));\r
             jCheckBoxFeatureFlag.setText("Feature Flag");\r
-            jCheckBoxFeatureFlag.setPreferredSize(new java.awt.Dimension(21,20));\r
+            FontMetrics fm = jCheckBoxFeatureFlag.getFontMetrics(jCheckBoxFeatureFlag.getFont());\r
+            jCheckBoxFeatureFlag.setSize(fm.stringWidth(jCheckBoxFeatureFlag.getText()) + 30, 20);\r
             jCheckBoxFeatureFlag.addItemListener(new java.awt.event.ItemListener() {\r
                 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
                     if (jCheckBoxFeatureFlag.isSelected()) {\r
@@ -849,9 +912,10 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
     private JCheckBox getJCheckBoxFixedAtBuild() {\r
         if (jCheckBoxFixedAtBuild == null) {\r
             jCheckBoxFixedAtBuild = new JCheckBox();\r
-            jCheckBoxFixedAtBuild.setBounds(new java.awt.Rectangle(312,133,108,20));\r
+            \r
             jCheckBoxFixedAtBuild.setText("Fixed at Build");\r
-            jCheckBoxFixedAtBuild.setPreferredSize(new java.awt.Dimension(21,20));\r
+            FontMetrics fm = jCheckBoxFixedAtBuild.getFontMetrics(jCheckBoxFixedAtBuild.getFont());\r
+            jCheckBoxFixedAtBuild.setSize(fm.stringWidth(jCheckBoxFixedAtBuild.getText()) + 30, 20);\r
             jCheckBoxFixedAtBuild.addItemListener(new java.awt.event.ItemListener() {\r
                 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
                     if (jCheckBoxFixedAtBuild.isSelected()) {\r
@@ -871,9 +935,11 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
     private JCheckBox getJCheckBoxPatchInMod() {\r
         if (jCheckBoxPatchInMod == null) {\r
             jCheckBoxPatchInMod = new JCheckBox();\r
+            \r
             jCheckBoxPatchInMod.setBounds(new java.awt.Rectangle(156,133,154,20));\r
             jCheckBoxPatchInMod.setText("Patchable in Module");\r
-            jCheckBoxPatchInMod.setPreferredSize(new java.awt.Dimension(21,20));\r
+            FontMetrics fm = jCheckBoxPatchInMod.getFontMetrics(jCheckBoxPatchInMod.getFont());\r
+            jCheckBoxPatchInMod.setSize(fm.stringWidth(jCheckBoxPatchInMod.getText()) + 30, 20);\r
             jCheckBoxPatchInMod.addItemListener(new java.awt.event.ItemListener() {\r
                 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
                     if (jCheckBoxPatchInMod.isSelected()) {\r
@@ -893,9 +959,10 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
     private JCheckBox getJCheckBoxDyn() {\r
         if (jCheckBoxDyn == null) {\r
             jCheckBoxDyn = new JCheckBox();\r
-            jCheckBoxDyn.setBounds(new java.awt.Rectangle(278,161,80,20));\r
+            \r
             jCheckBoxDyn.setText("Dynamic");\r
-            jCheckBoxDyn.setPreferredSize(new java.awt.Dimension(21,20));\r
+            FontMetrics fm = jCheckBoxDyn.getFontMetrics(jCheckBoxDyn.getFont());\r
+            jCheckBoxDyn.setSize(fm.stringWidth(jCheckBoxDyn.getText()) + 30, 20);\r
             jCheckBoxDyn.addItemListener(new java.awt.event.ItemListener() {\r
                 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
                     if (jCheckBoxDyn.isSelected()) {\r
@@ -915,9 +982,10 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
     private JCheckBox getJCheckBoxDynEx() {\r
         if (jCheckBoxDynEx == null) {\r
             jCheckBoxDynEx = new JCheckBox();\r
-            jCheckBoxDynEx.setBounds(new java.awt.Rectangle(371,161,99,20));\r
+            \r
             jCheckBoxDynEx.setText("DynamicEx");\r
-            jCheckBoxDynEx.setPreferredSize(new java.awt.Dimension(21,20));\r
+            FontMetrics fm = jCheckBoxDynEx.getFontMetrics(jCheckBoxDynEx.getFont());\r
+            jCheckBoxDynEx.setSize(fm.stringWidth(jCheckBoxDynEx.getText()) + 30, 20);\r
             jCheckBoxDynEx.addItemListener(new java.awt.event.ItemListener() {\r
                 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
                     if (jCheckBoxDynEx.isSelected()) {\r
@@ -1092,11 +1160,12 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
     }\r
     \r
     protected Vector<String> stringToVector(String s){\r
+        Vector<String> v = new Vector<String>();\r
         if (s == null) {\r
-            return null;\r
+            return v;\r
         }\r
         String[] sArray = s.split(" ");\r
-        Vector<String> v = new Vector<String>();\r
+        \r
         for (int i = 0; i < sArray.length; ++i) {\r
             v.add(sArray[i]);\r
         }\r