+++ /dev/null
-/** @file\r
- \r
- The file is used to create, update Variable 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
-\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.JTextField;\r
-\r
-import org.tianocore.GuidDocument;\r
-import org.tianocore.VariableUsage;\r
-import org.tianocore.VariablesDocument;\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 Variable of MSA/MBD file\r
- It extends IInternalFrame\r
- \r
- @since ModuleEditor 1.0\r
-\r
- **/\r
-public class ModuleVariables extends IInternalFrame {\r
-\r
- ///\r
- /// Define class Serial Version UID\r
- ///\r
- private static final long serialVersionUID = -6998982978030439446L;\r
-\r
- //\r
- //Define class members\r
- //\r
- private VariablesDocument.Variables variables = null;\r
-\r
- private int location = -1;\r
-\r
- private JPanel jContentPane = null;\r
-\r
- private JLabel jLabelGuid = null;\r
-\r
- private JTextField jTextFieldGuid = null;\r
-\r
- private JLabel jLabelString = null;\r
-\r
- private JTextField jTextFieldString = null;\r
-\r
- private JLabel jLabelBitOffset = null;\r
-\r
- private JTextField jTextFieldBitOffset = null;\r
-\r
- private JLabel jLabelByteOffset = null;\r
-\r
- private JTextField jTextFieldByteOffset = null;\r
-\r
- private JLabel jLabelOffsetBitSize = null;\r
-\r
- private JTextField jTextFieldOffsetBitSize = null;\r
-\r
- private JLabel jLabelUsage = null;\r
-\r
- private JComboBox jComboBoxUsage = 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
- private StarLabel jStarLabel2 = null;\r
-\r
- private JLabel jLabelByteOffsetHint = null;\r
-\r
- private JLabel jLabelBitOffsetHint = null;\r
-\r
- private JLabel jLabelOffsetBitSizeHint = null;\r
-\r
- /**\r
- This method initializes jTextFieldGuid \r
- \r
- @return javax.swing.JTextField jTextFieldGuid\r
- \r
- **/\r
- private JTextField getJTextFieldGuid() {\r
- if (jTextFieldGuid == null) {\r
- jTextFieldGuid = new JTextField();\r
- jTextFieldGuid.setSize(new java.awt.Dimension(250, 20));\r
- jTextFieldGuid.setLocation(new java.awt.Point(160, 35));\r
- }\r
- return jTextFieldGuid;\r
- }\r
-\r
- /**\r
- This method initializes jTextFieldString \r
- \r
- @return javax.swing.JTextField jTextFieldString\r
- \r
- **/\r
- private JTextField getJTextFieldString() {\r
- if (jTextFieldString == null) {\r
- jTextFieldString = new JTextField();\r
- jTextFieldString.setSize(new java.awt.Dimension(320, 20));\r
- jTextFieldString.setLocation(new java.awt.Point(160, 10));\r
- }\r
- return jTextFieldString;\r
- }\r
-\r
- /**\r
- This method initializes jTextFieldBitOffset \r
- \r
- @return javax.swing.JTextField jTextFieldBitOffset\r
- \r
- **/\r
- private JTextField getJTextFieldBitOffset() {\r
- if (jTextFieldBitOffset == null) {\r
- jTextFieldBitOffset = new JTextField();\r
- jTextFieldBitOffset.setSize(new java.awt.Dimension(80, 20));\r
- jTextFieldBitOffset.setLocation(new java.awt.Point(160, 85));\r
- }\r
- return jTextFieldBitOffset;\r
- }\r
-\r
- /**\r
- This method initializes jTextFieldByteOffset \r
- \r
- @return javax.swing.JTextField jTextFieldByteOffset\r
- \r
- **/\r
- private JTextField getJTextFieldByteOffset() {\r
- if (jTextFieldByteOffset == null) {\r
- jTextFieldByteOffset = new JTextField();\r
- jTextFieldByteOffset.setLocation(new java.awt.Point(160, 60));\r
- jTextFieldByteOffset.setSize(new java.awt.Dimension(80, 20));\r
- }\r
- return jTextFieldByteOffset;\r
- }\r
-\r
- /**\r
- This method initializes jTextFieldBitSize \r
- \r
- @return javax.swing.JTextField jTextFieldOffsetBitSize\r
- \r
- **/\r
- private JTextField getJTextFieldOffsetBitSize() {\r
- if (jTextFieldOffsetBitSize == null) {\r
- jTextFieldOffsetBitSize = new JTextField();\r
- jTextFieldOffsetBitSize.setSize(new java.awt.Dimension(80, 20));\r
- jTextFieldOffsetBitSize.setLocation(new java.awt.Point(160, 110));\r
- }\r
- return jTextFieldOffsetBitSize;\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, 135, 320, 20));\r
- }\r
- return jComboBoxUsage;\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.setText("GEN");\r
- jButtonGenerateGuid.addActionListener(this);\r
- jButtonGenerateGuid.setBounds(new java.awt.Rectangle(415, 35, 65, 20));\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 ModuleVariables() {\r
- super();\r
- init();\r
- this.setVisible(true);\r
- }\r
-\r
- /**\r
- This is the override edit constructor\r
- \r
- @param inVariables The input data of VariablesDocument.Variables\r
- \r
- **/\r
- public ModuleVariables(VariablesDocument.Variables inVariables) {\r
- super();\r
- init(inVariables);\r
- this.setVisible(true);\r
- }\r
-\r
- /**\r
- This is the override edit constructor\r
- \r
- @param inVariables The input data of VariablesDocument.Variables\r
- @param type The input data of node type\r
- @param index The input data of node index\r
- \r
- **/\r
- public ModuleVariables(VariablesDocument.Variables inVariables, int type, int index) {\r
- super();\r
- init(inVariables, type, index);\r
- this.setVisible(true);\r
- }\r
-\r
- /**\r
- This method initializes this\r
- \r
- @param inVariables The input data of VariablesDocument.Variables\r
- \r
- **/\r
- private void init(VariablesDocument.Variables inVariables) {\r
- init();\r
- this.setVariables(inVariables);\r
- }\r
-\r
- /**\r
- This method initializes this\r
- Fill values to all fields if these values are not empty\r
- \r
- @param inVariables The input data of VariablesDocument.Variables\r
- @param type The input data of node type\r
- @param index The input data of node index\r
- \r
- **/\r
- private void init(VariablesDocument.Variables inVariables, int type, int index) {\r
- init(inVariables);\r
- this.location = index;\r
- if (this.variables.getVariableList().size() > 0) {\r
- if (this.variables.getVariableArray(index).getString() != null) {\r
- this.jTextFieldString.setText(this.variables.getVariableArray(index).getString());\r
- }\r
- if (this.variables.getVariableArray(index).getGuid() != null) {\r
- this.jTextFieldGuid.setText(this.variables.getVariableArray(index).getGuid().getStringValue());\r
- }\r
- if (this.variables.getVariableArray(index).getByteOffset() != null) {\r
- this.jTextFieldByteOffset\r
- .setText(String\r
- .valueOf(this.variables.getVariableArray(index).getByteOffset()));\r
- }\r
- if (String.valueOf(this.variables.getVariableArray(index).getBitOffset()) != null) {\r
- this.jTextFieldBitOffset.setText(String.valueOf(this.variables.getVariableArray(index).getBitOffset()));\r
- }\r
- if (String.valueOf(this.variables.getVariableArray(index).getOffsetBitSize()) != null) {\r
- this.jTextFieldOffsetBitSize.setText(String.valueOf(this.variables.getVariableArray(index)\r
- .getOffsetBitSize()));\r
- }\r
- if (this.variables.getVariableArray(index).getUsage() != null) {\r
- this.jComboBoxUsage.setSelectedItem(this.variables.getVariableArray(index).getUsage().toString());\r
- }\r
- this.jTextFieldOverrideID.setText(String.valueOf(this.variables.getVariableArray(index).getOverrideID()));\r
- }\r
- }\r
-\r
- /**\r
- This method initializes this\r
- \r
- @return void\r
- **/\r
- private void init() {\r
- this.setSize(500, 515);\r
- this.setContentPane(getJContentPane());\r
- this.setTitle("Add Variables");\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.jTextFieldString.setEnabled(!isView);\r
- this.jTextFieldGuid.setEnabled(!isView);\r
- this.jTextFieldByteOffset.setEnabled(!isView);\r
- this.jTextFieldBitOffset.setEnabled(!isView);\r
- this.jTextFieldOffsetBitSize.setEnabled(!isView);\r
- this.jComboBoxUsage.setEnabled(!isView);\r
- this.jButtonGenerateGuid.setEnabled(!isView);\r
- this.jTextFieldOverrideID.setEnabled(!isView);\r
- }\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
- jLabelByteOffsetHint = new JLabel();\r
- jLabelByteOffsetHint.setBounds(new java.awt.Rectangle(245,60,235,20));\r
- jLabelByteOffsetHint.setText("0x00");\r
- jLabelOffsetBitSizeHint = new JLabel();\r
- jLabelOffsetBitSizeHint.setBounds(new java.awt.Rectangle(245,110,235,20));\r
- jLabelOffsetBitSizeHint.setText("1~7");\r
- jLabelBitOffsetHint = new JLabel();\r
- jLabelBitOffsetHint.setBounds(new java.awt.Rectangle(245,85,235,20));\r
- jLabelBitOffsetHint.setText("0~7");\r
- jLabelOverrideID = new JLabel();\r
- jLabelOverrideID.setText("Override ID");\r
- jLabelOverrideID.setBounds(new java.awt.Rectangle(15, 160, 140, 20));\r
- jLabelUsage = new JLabel();\r
- jLabelUsage.setText("Usage");\r
- jLabelUsage.setBounds(new java.awt.Rectangle(15, 135, 140, 20));\r
- jLabelOffsetBitSize = new JLabel();\r
- jLabelOffsetBitSize.setText("Offset Bit Size");\r
- jLabelOffsetBitSize.setLocation(new java.awt.Point(15, 110));\r
- jLabelOffsetBitSize.setSize(new java.awt.Dimension(140, 20));\r
- jLabelByteOffset = new JLabel();\r
- jLabelByteOffset.setText("Byte Offset");\r
- jLabelByteOffset.setLocation(new java.awt.Point(15, 60));\r
- jLabelByteOffset.setSize(new java.awt.Dimension(140, 20));\r
- jLabelBitOffset = new JLabel();\r
- jLabelBitOffset.setText("Bit Offset");\r
- jLabelBitOffset.setLocation(new java.awt.Point(15, 85));\r
- jLabelBitOffset.setSize(new java.awt.Dimension(140, 20));\r
- jLabelString = new JLabel();\r
- jLabelString.setText("String");\r
- jLabelString.setLocation(new java.awt.Point(15, 10));\r
- jLabelString.setSize(new java.awt.Dimension(140, 20));\r
- jLabelGuid = new JLabel();\r
- jLabelGuid.setText("Guid");\r
- jLabelGuid.setLocation(new java.awt.Point(15, 35));\r
- jLabelGuid.setSize(new java.awt.Dimension(140, 20));\r
- jContentPane = new JPanel();\r
- jContentPane.setLayout(null);\r
- jContentPane.add(getJButtonGenerateGuid(), null);\r
- jContentPane.add(jLabelString, null);\r
- jContentPane.add(getJTextFieldString(), null);\r
- jContentPane.add(jLabelGuid, null);\r
- jContentPane.add(getJTextFieldGuid(), null);\r
- jContentPane.add(jLabelByteOffset, null);\r
- jContentPane.add(getJTextFieldByteOffset(), null);\r
- jContentPane.add(jLabelBitOffset, null);\r
- jContentPane.add(getJTextFieldBitOffset(), null);\r
- jContentPane.add(jLabelOffsetBitSize, null);\r
- jContentPane.add(getJTextFieldOffsetBitSize(), null);\r
- jContentPane.add(jLabelUsage, null);\r
- jContentPane.add(getJComboBoxUsage(), null);\r
- jContentPane.add(jLabelOverrideID, null);\r
- jContentPane.add(getJTextFieldOverrideID(), null);\r
- jContentPane.add(getJButtonOk(), null);\r
- jContentPane.add(getJButtonCancel(), null);\r
-\r
- jStarLabel1 = new StarLabel();\r
- jStarLabel1.setLocation(new java.awt.Point(0, 10));\r
- jStarLabel2 = new StarLabel();\r
- jStarLabel2.setLocation(new java.awt.Point(0, 35));\r
-\r
- jContentPane.add(jStarLabel1, null);\r
- jContentPane.add(jStarLabel2, null);\r
-\r
- jContentPane.add(jLabelByteOffsetHint, null);\r
- jContentPane.add(jLabelBitOffsetHint, null);\r
- jContentPane.add(jLabelOffsetBitSizeHint, null);\r
- initFrame();\r
- }\r
- return jContentPane;\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
- if (arg0.getSource() == jButtonGenerateGuid) {\r
- jTextFieldGuid.setText(Tools.generateUuidString());\r
- }\r
- }\r
-\r
- /**\r
- This method initializes Usage type\r
- \r
- **/\r
- private void initFrame() {\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
- /**\r
- Get VariablesDocument.Variables\r
- \r
- @return VariablesDocument.Variables\r
- \r
- **/\r
- public VariablesDocument.Variables getVariables() {\r
- return variables;\r
- }\r
-\r
- /**\r
- Set VariablesDocument.Variables\r
- \r
- @param variables The input data of VariablesDocument.Variables\r
- \r
- **/\r
- public void setVariables(VariablesDocument.Variables variables) {\r
- this.variables = variables;\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.jTextFieldString.getText())) {\r
- Log.err("String couldn't be empty");\r
- return false;\r
- }\r
- if (isEmpty(this.jTextFieldGuid.getText())) {\r
- Log.err("Guid couldn't be empty");\r
- return false;\r
- }\r
-\r
- //\r
- // Check if all fields have correct data types \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.jTextFieldByteOffset.getText())\r
- && !DataValidation.isByteOffset(this.jTextFieldByteOffset.getText())) {\r
- Log.err("Incorrect data type for Byte Offset");\r
- return false;\r
- }\r
- if (!isEmpty(this.jTextFieldBitOffset.getText())\r
- && !DataValidation.isBitOffset(this.jTextFieldBitOffset.getText())) {\r
- Log.err("Incorrect data type for Bit Offset");\r
- return false;\r
- }\r
- if (!isEmpty(this.jTextFieldOffsetBitSize.getText())\r
- && !DataValidation.isOffsetBitSize(this.jTextFieldOffsetBitSize.getText())) {\r
- Log.err("Incorrect data type for Bit Offset");\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 Variables\r
- if exists variables, set the value directly\r
- if not exists variables, new an instance first\r
- \r
- **/\r
- public void save() {\r
- try {\r
- if (this.variables == null) {\r
- variables = VariablesDocument.Variables.Factory.newInstance();\r
- }\r
- VariablesDocument.Variables.Variable variable = VariablesDocument.Variables.Variable.Factory.newInstance();\r
- if (!isEmpty(this.jTextFieldString.getText())) {\r
- variable.setString(this.jTextFieldString.getText());\r
- }\r
- if (!isEmpty(this.jTextFieldGuid.getText())) {\r
- GuidDocument.Guid guid = GuidDocument.Guid.Factory.newInstance();\r
- guid.setStringValue(this.jTextFieldGuid.getText());\r
- variable.setGuid(guid);\r
- }\r
- if (!isEmpty(this.jTextFieldByteOffset.getText())) {\r
- variable.setByteOffset(this.jTextFieldByteOffset.getText());\r
- }\r
- if (!isEmpty(this.jTextFieldBitOffset.getText())) {\r
- variable.setBitOffset(Integer.parseInt(this.jTextFieldBitOffset.getText()));\r
- }\r
- if (!isEmpty(this.jTextFieldBitOffset.getText())) {\r
- variable.setOffsetBitSize(Integer.parseInt(this.jTextFieldBitOffset.getText()));\r
- }\r
- variable.setUsage(VariableUsage.Enum.forString(jComboBoxUsage.getSelectedItem().toString()));\r
- if (!isEmpty(this.jTextFieldOverrideID.getText())) {\r
- variable.setOverrideID(Integer.parseInt(this.jTextFieldOverrideID.getText()));\r
- }\r
- if (location > -1) {\r
- variables.setVariableArray(location, variable);\r
- } else {\r
- variables.addNewVariable();\r
- variables.setVariableArray(variables.getVariableList().size() - 1, variable);\r
- }\r
- } catch (Exception e) {\r
- Log.err("Update Variables", e.getMessage());\r
- }\r
- }\r
-}\r