+++ /dev/null
-/** @file\r
- \r
- The file is used to create, update Hob 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.packaging.module.ui;\r
-\r
-import java.awt.event.ActionEvent;\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.JRadioButton;\r
-import javax.swing.JTextField;\r
-\r
-import org.tianocore.GuidDocument;\r
-import org.tianocore.HobTypes;\r
-import org.tianocore.HobUsage;\r
-import org.tianocore.HobsDocument;\r
-import org.tianocore.common.DataValidation;\r
-import org.tianocore.common.Log;\r
-import org.tianocore.common.Tools;\r
-import org.tianocore.packaging.common.ui.IInternalFrame;\r
-import org.tianocore.packaging.common.ui.StarLabel;\r
-\r
-/**\r
- The class is used to create, update Hob of MSA/MBD file\r
- It extends IInternalFrame\r
- \r
- @since ModuleEditor 1.0\r
-\r
- **/\r
-public class ModuleHobs extends IInternalFrame {\r
-\r
- ///\r
- /// Define class Serial Version UID\r
- ///\r
- private static final long serialVersionUID = -553473437579358325L;\r
-\r
- //\r
- //Define class members\r
- //\r
- private HobsDocument.Hobs hobs = null;\r
-\r
- private int location = -1;\r
-\r
- private JPanel jContentPane = null;\r
-\r
- private JLabel jLabel = null;\r
-\r
- private JTextField jTextFieldC_Name = null;\r
-\r
- private JLabel jLabelGuid = null;\r
-\r
- private JTextField jTextFieldGuid = null;\r
-\r
- private JLabel jLabelName = null;\r
-\r
- private JTextField jTextFieldName = null;\r
-\r
- private JLabel jLabelUsage = null;\r
-\r
- private JLabel jLabelHobType = null;\r
-\r
- private JComboBox jComboBoxUsage = null;\r
-\r
- private JComboBox jComboBoxHobType = null;\r
-\r
- private JLabel jLabelHobEnabled = null;\r
-\r
- private JRadioButton jRadioButtonHobEnable = null;\r
-\r
- private JRadioButton jRadioButtonHobDisable = null;\r
-\r
- private JButton jButtonOk = null;\r
-\r
- private JButton jButtonCancel = null;\r
-\r
- private JButton jButtonGenerateGuid = null;\r
-\r
- private JLabel jLabelOverrideID = null;\r
-\r
- private JTextField jTextFieldOverrideID = null;\r
-\r
- private StarLabel jStarLabel1 = null;\r
-\r
- /**\r
- This method initializes jTextField \r
- \r
- @return javax.swing.JTextField jTextFieldC_Name\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
- }\r
- return jTextFieldC_Name;\r
- }\r
-\r
- /**\r
- This method initializes jTextField \r
- \r
- @return javax.swing.JTextField jTextFieldGuid\r
- \r
- **/\r
- private JTextField getJTextFieldGuid() {\r
- if (jTextFieldGuid == null) {\r
- jTextFieldGuid = new JTextField();\r
- jTextFieldGuid.setBounds(new java.awt.Rectangle(160, 60, 250, 20));\r
- }\r
- return jTextFieldGuid;\r
- }\r
-\r
- /**\r
- This method initializes jTextFieldName \r
- \r
- @return javax.swing.JTextField jTextFieldName\r
- \r
- **/\r
- private JTextField getJTextFieldName() {\r
- if (jTextFieldName == null) {\r
- jTextFieldName = new JTextField();\r
- jTextFieldName.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
- }\r
- return jTextFieldName;\r
- }\r
-\r
- /**\r
- This method initializes jComboBoxUsage \r
- \r
- @return javax.swing.JComboBox jComboBoxUsage\r
- \r
- **/\r
- private JComboBox getJComboBoxUsage() {\r
- if (jComboBoxUsage == null) {\r
- jComboBoxUsage = new JComboBox();\r
- jComboBoxUsage.setBounds(new java.awt.Rectangle(160, 85, 320, 20));\r
- }\r
- return jComboBoxUsage;\r
- }\r
-\r
- /**\r
- This method initializes jComboBoxHobType \r
- \r
- @return javax.swing.JComboBox jComboBoxHobType\r
- \r
- **/\r
- private JComboBox getJComboBoxHobType() {\r
- if (jComboBoxHobType == null) {\r
- jComboBoxHobType = new JComboBox();\r
- jComboBoxHobType.setBounds(new java.awt.Rectangle(160, 110, 320, 20));\r
- }\r
- return jComboBoxHobType;\r
- }\r
-\r
- /**\r
- This method initializes jRadioButtonEnable \r
- \r
- @return javax.swing.JRadioButton jRadioButtonHobEnable\r
- \r
- **/\r
- private JRadioButton getJRadioButtonHobEnable() {\r
- if (jRadioButtonHobEnable == null) {\r
- jRadioButtonHobEnable = new JRadioButton();\r
- jRadioButtonHobEnable.setText("Enable");\r
- jRadioButtonHobEnable.setBounds(new java.awt.Rectangle(160, 135, 90, 20));\r
- jRadioButtonHobEnable.setSelected(true);\r
- jRadioButtonHobEnable.addActionListener(this);\r
- }\r
- return jRadioButtonHobEnable;\r
- }\r
-\r
- /**\r
- This method initializes jRadioButtonDisable \r
- \r
- @return javax.swing.JRadioButton jRadioButtonHobDisable\r
- \r
- **/\r
- private JRadioButton getJRadioButtonHobDisable() {\r
- if (jRadioButtonHobDisable == null) {\r
- jRadioButtonHobDisable = new JRadioButton();\r
- jRadioButtonHobDisable.setText("Disable");\r
- jRadioButtonHobDisable.setBounds(new java.awt.Rectangle(320, 135, 90, 20));\r
- jRadioButtonHobDisable.addActionListener(this);\r
- }\r
- return jRadioButtonHobDisable;\r
- }\r
-\r
- /**\r
- This method initializes jButtonOk \r
- \r
- @return javax.swing.JButton jButtonOk\r
- \r
- **/\r
- private JButton getJButtonOk() {\r
- if (jButtonOk == null) {\r
- jButtonOk = new JButton();\r
- jButtonOk.setText("OK");\r
- jButtonOk.setBounds(new java.awt.Rectangle(290, 190, 90, 20));\r
- jButtonOk.addActionListener(this);\r
- }\r
- return jButtonOk;\r
- }\r
-\r
- /**\r
- This method initializes jButtonCancel \r
- \r
- @return javax.swing.JButton jButtonCancel\r
- \r
- **/\r
- private JButton getJButtonCancel() {\r
- if (jButtonCancel == null) {\r
- jButtonCancel = new JButton();\r
- jButtonCancel.setText("Cancel");\r
- jButtonCancel.setBounds(new java.awt.Rectangle(390, 190, 90, 20));\r
- jButtonCancel.addActionListener(this);\r
- }\r
- return jButtonCancel;\r
- }\r
-\r
- /**\r
- This method initializes jButtonGenerateGuid \r
- \r
- @return javax.swing.JButton jButtonGenerateGuid\r
- \r
- **/\r
- private JButton getJButtonGenerateGuid() {\r
- if (jButtonGenerateGuid == null) {\r
- jButtonGenerateGuid = new JButton();\r
- jButtonGenerateGuid.setBounds(new java.awt.Rectangle(415, 60, 65, 20));\r
- jButtonGenerateGuid.setText("GEN");\r
- jButtonGenerateGuid.addActionListener(this);\r
- }\r
- return jButtonGenerateGuid;\r
- }\r
-\r
- /**\r
- This method initializes jTextFieldOverrideID \r
- \r
- @return javax.swing.JTextField jTextFieldOverrideID\r
- \r
- **/\r
- private JTextField getJTextFieldOverrideID() {\r
- if (jTextFieldOverrideID == null) {\r
- jTextFieldOverrideID = new JTextField();\r
- jTextFieldOverrideID.setBounds(new java.awt.Rectangle(160, 160, 50, 20));\r
- }\r
- return jTextFieldOverrideID;\r
- }\r
-\r
- public static void main(String[] args) {\r
-\r
- }\r
-\r
- /**\r
- This is the default constructor\r
- \r
- **/\r
- public ModuleHobs() {\r
- super();\r
- init();\r
- this.setVisible(true);\r
- }\r
-\r
- /**\r
- This is the override edit constructor\r
- \r
- @param inHobs The input data of HobsDocument.Hobs\r
- \r
- **/\r
- public ModuleHobs(HobsDocument.Hobs inHobs) {\r
- super();\r
- init(inHobs);\r
- this.setVisible(true);\r
- }\r
-\r
- /**\r
- This is the override edit constructor\r
- \r
- @param inHobs The input data of HobsDocument.Hobs\r
- @param type The input data of node type\r
- @param index The input data of node index\r
- \r
- **/\r
- public ModuleHobs(HobsDocument.Hobs inHobs, int type, int index) {\r
- super();\r
- init(inHobs, type, index);\r
- this.setVisible(true);\r
- }\r
-\r
- /**\r
- This method initializes this\r
- \r
- @param inHobs The input data of HobsDocument.Hobs\r
- \r
- **/\r
- private void init(HobsDocument.Hobs inHobs) {\r
- init();\r
- this.setHobs(inHobs);\r
- }\r
-\r
- /**\r
- This method initializes this\r
- Fill values to all fields if these values are not empty\r
- \r
- @param inHobs The input data of HobsDocument.Hobs\r
- @param type The input data of node type\r
- @param index The input data of node index\r
- \r
- **/\r
- private void init(HobsDocument.Hobs inHobs, int type, int index) {\r
- init(inHobs);\r
- this.location = index;\r
- if (this.hobs.getHobList().size() > 0) {\r
- if (this.hobs.getHobArray(index).getName() != null) {\r
- this.jTextFieldName.setText(this.hobs.getHobArray(index).getName());\r
- }\r
- if (this.hobs.getHobArray(index).getCName() != null) {\r
- this.jTextFieldC_Name.setText(this.hobs.getHobArray(index).getCName());\r
- }\r
- if (this.hobs.getHobArray(index).getGuid() != null) {\r
- this.jTextFieldGuid.setText(this.hobs.getHobArray(index).getGuid().getStringValue());\r
- }\r
- if (this.hobs.getHobArray(index).getUsage() != null) {\r
- this.jComboBoxUsage.setSelectedItem(this.hobs.getHobArray(index).getUsage().toString());\r
- }\r
- this.jRadioButtonHobEnable.setSelected(this.hobs.getHobArray(index).getHobEnabled());\r
- this.jRadioButtonHobDisable.setSelected(!this.hobs.getHobArray(index).getHobEnabled());\r
- this.jTextFieldOverrideID.setText(String.valueOf(this.hobs.getHobArray(index).getOverrideID()));\r
- }\r
- }\r
-\r
- /**\r
- This method initializes this\r
- \r
- **/\r
- private void init() {\r
- this.setSize(500, 515);\r
- this.setContentPane(getJContentPane());\r
- this.setTitle("Hobs");\r
- initFrame();\r
- this.setViewMode(false);\r
- }\r
-\r
- /**\r
- Disable all components when the mode is view\r
- \r
- @param isView true - The view mode; false - The non-view mode\r
- \r
- **/\r
- public void setViewMode(boolean isView) {\r
- this.jButtonOk.setVisible(false);\r
- this.jButtonCancel.setVisible(false);\r
- if (isView) {\r
- this.jTextFieldName.setEnabled(!isView);\r
- this.jTextFieldC_Name.setEnabled(!isView);\r
- this.jTextFieldGuid.setEnabled(!isView);\r
- this.jComboBoxUsage.setEnabled(!isView);\r
- this.jComboBoxHobType.setEnabled(!isView);\r
- this.jRadioButtonHobEnable.setEnabled(!isView);\r
- this.jRadioButtonHobDisable.setEnabled(!isView);\r
- this.jTextFieldOverrideID.setEnabled(!isView);\r
- this.jButtonCancel.setEnabled(!isView);\r
- this.jButtonGenerateGuid.setEnabled(!isView);\r
- this.jButtonOk.setEnabled(!isView);\r
- }\r
- }\r
-\r
- /**\r
- This method initializes jContentPane\r
- \r
- @return javax.swing.JPanel jContentPane\r
- \r
- **/\r
- public JPanel getJContentPane() {\r
- if (jContentPane == null) {\r
- jLabelOverrideID = new JLabel();\r
- jLabelOverrideID.setBounds(new java.awt.Rectangle(15, 160, 140, 20));\r
- jLabelOverrideID.setText("Override ID");\r
- jLabelHobEnabled = new JLabel();\r
- jLabelHobEnabled.setText("Hob Enabled");\r
- jLabelHobEnabled.setBounds(new java.awt.Rectangle(15, 135, 140, 20));\r
- jLabelHobType = new JLabel();\r
- jLabelHobType.setText("Hob Type");\r
- jLabelHobType.setBounds(new java.awt.Rectangle(15, 110, 140, 20));\r
- jLabelUsage = new JLabel();\r
- jLabelUsage.setText("Usage");\r
- jLabelUsage.setBounds(new java.awt.Rectangle(15, 85, 140, 20));\r
- jLabelName = new JLabel();\r
- jLabelName.setText("Name");\r
- jLabelName.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
- jLabelGuid = new JLabel();\r
- jLabelGuid.setText("Guid");\r
- jLabelGuid.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
- jLabel = new JLabel();\r
- jLabel.setText("C_Name");\r
- jLabel.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
- jContentPane = new JPanel();\r
- jContentPane.setLayout(null);\r
- jContentPane.add(jLabel, null);\r
- jContentPane.add(getJTextFieldC_Name(), null);\r
- jContentPane.add(getJTextFieldGuid(), null);\r
- jContentPane.add(jLabelUsage, null);\r
- jContentPane.add(jLabelName, null);\r
- jContentPane.add(getJTextFieldName(), null);\r
- jContentPane.add(jLabelGuid, null);\r
- jContentPane.add(jLabelHobType, null);\r
- jContentPane.add(getJComboBoxUsage(), null);\r
- jContentPane.add(getJComboBoxHobType(), null);\r
- jContentPane.add(jLabelHobEnabled, null);\r
- jContentPane.add(getJRadioButtonHobEnable(), null);\r
- jContentPane.add(getJRadioButtonHobDisable(), null);\r
- jContentPane.add(getJButtonOk(), null);\r
- jContentPane.add(getJButtonCancel(), null);\r
- jContentPane.add(getJButtonGenerateGuid(), null);\r
- jContentPane.add(jLabelOverrideID, null);\r
- jContentPane.add(getJTextFieldOverrideID(), null);\r
-\r
- jStarLabel1 = new StarLabel();\r
- jStarLabel1.setLocation(new java.awt.Point(0, 10));\r
- jContentPane.add(jStarLabel1, null);\r
- }\r
- return jContentPane;\r
- }\r
-\r
- /**\r
- This method initializes Usage type and Hob type\r
- \r
- **/\r
- private void initFrame() {\r
- jComboBoxHobType.addItem("PHIT");\r
- jComboBoxHobType.addItem("MEMORY_ALLOCATION");\r
- jComboBoxHobType.addItem("RESOURCE_DESCRIPTOR");\r
- jComboBoxHobType.addItem("GUID_EXTENSION");\r
- jComboBoxHobType.addItem("FIRMWARE_VOLUME");\r
- jComboBoxHobType.addItem("CPU");\r
- jComboBoxHobType.addItem("POOL");\r
- jComboBoxHobType.addItem("CAPSULE_VOLUME");\r
-\r
- jComboBoxUsage.addItem("ALWAYS_CONSUMED");\r
- jComboBoxUsage.addItem("SOMETIMES_CONSUMED");\r
- jComboBoxUsage.addItem("ALWAYS_PRODUCED");\r
- jComboBoxUsage.addItem("SOMETIMES_PRODUCED");\r
- jComboBoxUsage.addItem("PRIVATE");\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
- this.setEdited(true);\r
- this.save();\r
- this.dispose();\r
- }\r
- if (arg0.getSource() == jButtonCancel) {\r
- this.dispose();\r
- }\r
-\r
- //\r
- // Contorl the selected status when click RadionButton\r
- // Do not use Radio Button Group\r
- //\r
- if (arg0.getSource() == jRadioButtonHobEnable) {\r
- if (jRadioButtonHobEnable.isSelected()) {\r
- jRadioButtonHobDisable.setSelected(false);\r
- }\r
- if (!jRadioButtonHobDisable.isSelected() && !jRadioButtonHobEnable.isSelected()) {\r
- jRadioButtonHobEnable.setSelected(true);\r
- }\r
- }\r
-\r
- if (arg0.getSource() == jRadioButtonHobDisable) {\r
- if (jRadioButtonHobDisable.isSelected()) {\r
- jRadioButtonHobEnable.setSelected(false);\r
- }\r
- if (!jRadioButtonHobDisable.isSelected() && !jRadioButtonHobEnable.isSelected()) {\r
- jRadioButtonHobDisable.setSelected(true);\r
- }\r
- }\r
-\r
- if (arg0.getSource() == jButtonGenerateGuid) {\r
- jTextFieldGuid.setText(Tools.generateUuidString());\r
- }\r
- }\r
-\r
- /**\r
- Get HobsDocument.Hobs\r
- \r
- @return HobsDocument.Hobs\r
- \r
- **/\r
- public HobsDocument.Hobs getHobs() {\r
- return hobs;\r
- }\r
-\r
- /**\r
- Set HobsDocument.Hobs\r
- \r
- @param hobs The input data of HobsDocument.Hobs\r
- \r
- **/\r
- public void setHobs(HobsDocument.Hobs hobs) {\r
- this.hobs = hobs;\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 check() {\r
- //\r
- // Check if all required fields are not empty\r
- //\r
- if (isEmpty(this.jTextFieldName.getText())) {\r
- Log.err("Name couldn't be empty");\r
- return false;\r
- }\r
-\r
- //\r
- // Check if all fields have correct data types \r
- //\r
- if (!DataValidation.isCName(this.jTextFieldC_Name.getText())) {\r
- Log.err("Incorrect data type for C_Name");\r
- return false;\r
- }\r
- if (!isEmpty(this.jTextFieldGuid.getText()) && !DataValidation.isGuid(this.jTextFieldGuid.getText())) {\r
- Log.err("Incorrect data type for Guid");\r
- return false;\r
- }\r
- if (!isEmpty(this.jTextFieldOverrideID.getText())\r
- && !DataValidation.isOverrideID(this.jTextFieldOverrideID.getText())) {\r
- Log.err("Incorrect data type for Override ID");\r
- return false;\r
- }\r
-\r
- return true;\r
- }\r
-\r
- /**\r
- Save all components of Hobs\r
- if exists hobs, set the value directly\r
- if not exists hobs, new an instance first\r
- \r
- **/\r
- public void save() {\r
- try {\r
- if (this.hobs == null) {\r
- hobs = HobsDocument.Hobs.Factory.newInstance();\r
- }\r
- HobsDocument.Hobs.Hob hob = HobsDocument.Hobs.Hob.Factory.newInstance();\r
- if (!isEmpty(this.jTextFieldName.getText())) {\r
- hob.setName(this.jTextFieldName.getText());\r
- }\r
- if (!isEmpty(this.jTextFieldC_Name.getText())) {\r
- hob.setCName(this.jTextFieldC_Name.getText());\r
- }\r
- if (!isEmpty(this.jTextFieldGuid.getText())) {\r
- GuidDocument.Guid guid = GuidDocument.Guid.Factory.newInstance();\r
- guid.setStringValue(this.jTextFieldGuid.getText());\r
- hob.setGuid(guid);\r
- }\r
- hob.setUsage(HobUsage.Enum.forString(jComboBoxUsage.getSelectedItem().toString()));\r
- hob.setHobType(HobTypes.Enum.forString(jComboBoxHobType.getSelectedItem().toString()));\r
- hob.setHobEnabled(this.jRadioButtonHobEnable.isSelected());\r
- if (!isEmpty(this.jTextFieldOverrideID.getText())) {\r
- hob.setOverrideID(Integer.parseInt(this.jTextFieldOverrideID.getText()));\r
- }\r
- if (location > -1) {\r
- hobs.setHobArray(location, hob);\r
- } else {\r
- hobs.addNewHob();\r
- hobs.setHobArray(hobs.getHobList().size() - 1, hob);\r
- }\r
- } catch (Exception e) {\r
- Log.err("Update Hobs", e.getMessage());\r
- }\r
- }\r
-}\r