--- /dev/null
+/** @file\r
+ \r
+ The file is used to create, update DataHub of MSA/MBD file\r
+ \r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+ \r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ \r
+ **/\r
+package org.tianocore.frameworkwizard.module.ui.dialog;\r
+\r
+import java.awt.event.ActionEvent;\r
+import java.awt.event.ItemEvent;\r
+import java.awt.event.ItemListener;\r
+import java.util.Vector;\r
+\r
+import javax.swing.JButton;\r
+import javax.swing.JComboBox;\r
+import javax.swing.JLabel;\r
+import javax.swing.JPanel;\r
+import javax.swing.JScrollPane;\r
+import javax.swing.JTextField;\r
+\r
+import org.tianocore.frameworkwizard.common.DataType;\r
+import org.tianocore.frameworkwizard.common.DataValidation;\r
+import org.tianocore.frameworkwizard.common.EnumerationData;\r
+import org.tianocore.frameworkwizard.common.Log;\r
+import org.tianocore.frameworkwizard.common.Tools;\r
+import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;\r
+import org.tianocore.frameworkwizard.common.ui.IDialog;\r
+import org.tianocore.frameworkwizard.common.ui.IFrame;\r
+import org.tianocore.frameworkwizard.module.Identifications.Externs.ExternsIdentification;\r
+\r
+/**\r
+ The class is used to create, update DataHub of MSA/MBD file \r
+ It extends IInternalFrame\r
+ \r
+\r
+\r
+ **/\r
+public class ExternsDlg extends IDialog implements ItemListener {\r
+\r
+ ///\r
+ /// Define class Serial Version UID\r
+ ///\r
+ private static final long serialVersionUID = -7382008402932047191L;\r
+\r
+ //\r
+ //Define class members\r
+ //\r
+ private JPanel jContentPane = null;\r
+\r
+ private JLabel jLabelName = null;\r
+\r
+ private JComboBox jComboBoxType = null;\r
+\r
+ private JScrollPane jScrollPane = null;\r
+\r
+ private JComboBox jComboBoxPcdIsDriver = null;\r
+\r
+ private JLabel jLabelC_Name = null;\r
+\r
+ private JTextField jTextFieldC_Name = null;\r
+\r
+ private JLabel jLabelFeatureFlag = null;\r
+\r
+ private JLabel jLabelArch = null;\r
+\r
+ private JTextField jTextFieldFeatureFlag = null;\r
+\r
+ private ArchCheckBox jArchCheckBox = null;\r
+\r
+ private JButton jButtonOk = null;\r
+\r
+ private JButton jButtonCancel = null;\r
+\r
+ //\r
+ // Not used by UI\r
+ //\r
+ private ExternsIdentification id = null;\r
+\r
+ private EnumerationData ed = new EnumerationData();\r
+\r
+ /**\r
+ This method initializes jComboBoxType \r
+ \r
+ @return javax.swing.JComboBox jComboBoxType\r
+ \r
+ **/\r
+ private JComboBox getJComboBoxType() {\r
+ if (jComboBoxType == null) {\r
+ jComboBoxType = new JComboBox();\r
+ jComboBoxType.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
+ jComboBoxType.setPreferredSize(new java.awt.Dimension(320, 20));\r
+ jComboBoxType.addItemListener(this);\r
+ }\r
+ return jComboBoxType;\r
+ }\r
+\r
+ /**\r
+ This method initializes jScrollPane \r
+ \r
+ @return javax.swing.JScrollPane \r
+ */\r
+ private JScrollPane getJScrollPane() {\r
+ if (jScrollPane == null) {\r
+ jScrollPane = new JScrollPane();\r
+ jScrollPane.setViewportView(getJContentPane());\r
+ }\r
+ return jScrollPane;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jComboBoxPcdIsDriver \r
+ * \r
+ * @return javax.swing.JComboBox \r
+ */\r
+ private JComboBox getJComboBoxPcdIsDriver() {\r
+ if (jComboBoxPcdIsDriver == null) {\r
+ jComboBoxPcdIsDriver = new JComboBox();\r
+ jComboBoxPcdIsDriver.setLocation(new java.awt.Point(160, 35));\r
+ jComboBoxPcdIsDriver.setPreferredSize(new java.awt.Dimension(320, 20));\r
+ jComboBoxPcdIsDriver.setSize(new java.awt.Dimension(320, 20));\r
+ jComboBoxPcdIsDriver.addItemListener(this);\r
+ }\r
+ return jComboBoxPcdIsDriver;\r
+ }\r
+\r
+ /**\r
+ This method initializes jTextFieldC_Name \r
+ \r
+ @return javax.swing.JTextField \r
+ \r
+ **/\r
+ private JTextField getJTextFieldC_Name() {\r
+ if (jTextFieldC_Name == null) {\r
+ jTextFieldC_Name = new JTextField();\r
+ jTextFieldC_Name.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
+ jTextFieldC_Name.setPreferredSize(new java.awt.Dimension(320, 20));\r
+ }\r
+ return jTextFieldC_Name;\r
+ }\r
+\r
+ /**\r
+ This method initializes jTextFieldFeatureFlag \r
+ \r
+ @return javax.swing.JTextField \r
+ \r
+ **/\r
+ private JTextField getJTextFieldFeatureFlag() {\r
+ if (jTextFieldFeatureFlag == null) {\r
+ jTextFieldFeatureFlag = new JTextField();\r
+ jTextFieldFeatureFlag.setBounds(new java.awt.Rectangle(160, 60, 320, 20));\r
+ jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(320, 20));\r
+ }\r
+ return jTextFieldFeatureFlag;\r
+ }\r
+\r
+ /**\r
+ This method initializes jButtonOk \r
+ \r
+ @return javax.swing.JButton \r
+ \r
+ **/\r
+ private JButton getJButtonOk() {\r
+ if (jButtonOk == null) {\r
+ jButtonOk = new JButton();\r
+ jButtonOk.setBounds(new java.awt.Rectangle(290, 120, 90, 20));\r
+ jButtonOk.setText("Ok");\r
+ jButtonOk.addActionListener(this);\r
+ }\r
+ return jButtonOk;\r
+ }\r
+\r
+ /**\r
+ This method initializes jButtonCancel \r
+ \r
+ @return javax.swing.JButton \r
+ \r
+ **/\r
+ private JButton getJButtonCancel() {\r
+ if (jButtonCancel == null) {\r
+ jButtonCancel = new JButton();\r
+ jButtonCancel.setBounds(new java.awt.Rectangle(390, 120, 90, 20));\r
+ jButtonCancel.setText("Cancel");\r
+ jButtonCancel.addActionListener(this);\r
+ }\r
+ return jButtonCancel;\r
+ }\r
+\r
+ public static void main(String[] args) {\r
+\r
+ }\r
+\r
+ /**\r
+ This method initializes this\r
+ \r
+ **/\r
+ private void init() {\r
+ this.setSize(500, 180);\r
+ this.setContentPane(getJScrollPane());\r
+ this.setTitle("Externs");\r
+ initFrame();\r
+ this.centerWindow();\r
+ }\r
+\r
+ /**\r
+ This method initializes this\r
+ Fill values to all fields if these values are not empty\r
+ \r
+ @param inExternsId\r
+\r
+ **/\r
+ private void init(ExternsIdentification inExternsId) {\r
+ init();\r
+ this.id = inExternsId;\r
+\r
+ if (this.id != null) {\r
+ if (id.getType().equals(EnumerationData.EXTERNS_PCD_IS_DRIVER)) {\r
+ this.jComboBoxPcdIsDriver.setSelectedItem(id.getName());\r
+ } else {\r
+ this.jTextFieldC_Name.setText(id.getName()); \r
+ }\r
+ this.jComboBoxType.setSelectedItem(id.getType());\r
+ this.jTextFieldFeatureFlag.setText(id.getFeatureFlag());\r
+ this.jArchCheckBox.setSelectedItems(id.getSupArchList());\r
+ }\r
+ }\r
+\r
+ /**\r
+ This is the override edit constructor\r
+ \r
+ @param inBootModesIdentification\r
+ @param iFrame\r
+ \r
+ **/\r
+ public ExternsDlg(ExternsIdentification inExternsIdentification, IFrame iFrame) {\r
+ super(iFrame, true);\r
+ init(inExternsIdentification);\r
+ }\r
+\r
+ /**\r
+ This method initializes jContentPane\r
+ \r
+ @return javax.swing.JPanel jContentPane\r
+ \r
+ **/\r
+ private JPanel getJContentPane() {\r
+ if (jContentPane == null) {\r
+ jArchCheckBox = new ArchCheckBox();\r
+ jArchCheckBox.setBounds(new java.awt.Rectangle(160, 85, 320, 20));\r
+ jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\r
+ jLabelC_Name = new JLabel();\r
+ jLabelC_Name.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
+ jLabelC_Name.setText("Value");\r
+ jLabelName = new JLabel();\r
+ jLabelName.setText("Choose Type");\r
+ jLabelName.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
+ jLabelArch = new JLabel();\r
+ jLabelArch.setBounds(new java.awt.Rectangle(15, 85, 140, 20));\r
+ jLabelArch.setText("Arch");\r
+ jLabelFeatureFlag = new JLabel();\r
+ jLabelFeatureFlag.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
+ jLabelFeatureFlag.setText("Feature Flag");\r
+\r
+ jContentPane = new JPanel();\r
+ jContentPane.setLayout(null);\r
+ jContentPane.setPreferredSize(new java.awt.Dimension(490, 145));\r
+\r
+ jContentPane.add(jLabelName, null);\r
+ jContentPane.add(getJComboBoxType(), null);\r
+ jContentPane.add(jLabelFeatureFlag, null);\r
+ jContentPane.add(jLabelArch, null);\r
+ jContentPane.add(getJTextFieldFeatureFlag(), null);\r
+\r
+ jContentPane.add(getJComboBoxPcdIsDriver(), null);\r
+ jContentPane.add(jLabelC_Name, null);\r
+ jContentPane.add(getJTextFieldC_Name(), null);\r
+ jContentPane.add(jArchCheckBox, null);\r
+ jContentPane.add(getJButtonOk(), null);\r
+ jContentPane.add(getJButtonCancel(), null);\r
+ }\r
+ return jContentPane;\r
+ }\r
+\r
+ /**\r
+ This method initializes Usage type and Externs type\r
+ \r
+ **/\r
+ private void initFrame() {\r
+ Tools.generateComboBoxByVector(this.jComboBoxType, ed.getVExternTypes());\r
+ Tools.generateComboBoxByVector(this.jComboBoxPcdIsDriver, ed.getVPcdDriverTypes());\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
+ *\r
+ * Override actionPerformed to listen all actions\r
+ * \r
+ */\r
+ public void actionPerformed(ActionEvent arg0) {\r
+ if (arg0.getSource() == jButtonOk) {\r
+ if (checkAdd()) {\r
+ getCurrentExterns();\r
+ this.returnType = DataType.RETURN_TYPE_OK;\r
+ this.setVisible(false);\r
+ }\r
+ }\r
+\r
+ if (arg0.getSource() == jButtonCancel) {\r
+ this.returnType = DataType.RETURN_TYPE_CANCEL;\r
+ this.setVisible(false);\r
+ }\r
+ }\r
+\r
+ /**\r
+ Data validation for all fields\r
+ \r
+ @retval true - All datas are valid\r
+ @retval false - At least one data is invalid\r
+ \r
+ **/\r
+ public boolean checkAdd() {\r
+ //\r
+ // Check if all fields have correct data types \r
+ //\r
+\r
+ //\r
+ // When and only When type is not "Pcd Is Driver"\r
+ //\r
+ if (!this.jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_PCD_IS_DRIVER)) {\r
+ //\r
+ // Check CName \r
+ //\r
+ if (isEmpty(this.jTextFieldC_Name.getText())) {\r
+ Log.err("Value couldn't be empty");\r
+ return false;\r
+ }\r
+\r
+ if (!isEmpty(this.jTextFieldC_Name.getText())) {\r
+ if (this.jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_SPECIFICATION)) {\r
+ if (!DataValidation.isSentence(this.jTextFieldC_Name.getText())) {\r
+ Log.err("Incorrect data type for Specification");\r
+ return false;\r
+ }\r
+ } else {\r
+ if (!DataValidation.isC_NameType(this.jTextFieldC_Name.getText())) {\r
+ Log.err("Incorrect data type for C_Name");\r
+ return false;\r
+ }\r
+ }\r
+ }\r
+\r
+ //\r
+ // Check FeatureFlag\r
+ //\r
+ if (!isEmpty(this.jTextFieldFeatureFlag.getText())) {\r
+ if (!DataValidation.isFeatureFlag(this.jTextFieldFeatureFlag.getText())) {\r
+ Log.err("Incorrect data type for Feature Flag");\r
+ return false;\r
+ }\r
+ }\r
+ } else {\r
+ if (this.jComboBoxPcdIsDriver.getSelectedItem().toString().equals(DataType.EMPTY_SELECT_ITEM)) {\r
+ Log.err("You must select one PCD DRIVER type");\r
+ return false;\r
+ }\r
+ }\r
+\r
+ return true;\r
+ }\r
+\r
+ private ExternsIdentification getCurrentExterns() {\r
+ String arg0 = "";\r
+ if (this.jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_PCD_IS_DRIVER)) {\r
+ arg0 = this.jComboBoxPcdIsDriver.getSelectedItem().toString();\r
+ } else {\r
+ arg0 = this.jTextFieldC_Name.getText(); \r
+ }\r
+ String arg1 = this.jComboBoxType.getSelectedItem().toString();\r
+\r
+ String arg2 = this.jTextFieldFeatureFlag.getText();\r
+ Vector<String> arg3 = this.jArchCheckBox.getSelectedItemsVector();\r
+\r
+ id = new ExternsIdentification(arg0, arg1, arg2, arg3);\r
+ return id;\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent)\r
+ *\r
+ * Reflesh the frame when selected item changed\r
+ * \r
+ */\r
+ public void itemStateChanged(ItemEvent arg0) {\r
+ if (arg0.getSource() == jComboBoxType && arg0.getStateChange() == ItemEvent.SELECTED) {\r
+ if (jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_PCD_IS_DRIVER)) {\r
+ this.jComboBoxPcdIsDriver.setVisible(true);\r
+ this.jTextFieldC_Name.setVisible(false);\r
+ } else {\r
+ this.jComboBoxPcdIsDriver.setVisible(false);\r
+ this.jTextFieldC_Name.setVisible(true);\r
+ }\r
+ }\r
+ }\r
+\r
+ public ExternsIdentification getId() {\r
+ return id;\r
+ }\r
+\r
+ public void setId(ExternsIdentification id) {\r
+ this.id = id;\r
+ }\r
+}\r