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
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
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
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
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
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
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
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
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
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
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
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
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
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
}\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