+++ /dev/null
-/** @file\r
- \r
- The file is used to create, update PCD 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.JTextField;\r
-\r
-import org.tianocore.PCDsDocument;\r
-import org.tianocore.PcdDataTypes;\r
-import org.tianocore.PcdItemTypes;\r
-import org.tianocore.PcdUsage;\r
-import org.tianocore.common.DataValidation;\r
-import org.tianocore.common.Log;\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 PCD of MSA/MBD file\r
- It extends IInternalFrame\r
- \r
- @since ModuleEditor 1.0\r
-\r
- **/\r
-public class ModulePCDs extends IInternalFrame {\r
-\r
- ///\r
- /// Define class Serial Version UID\r
- ///\r
- private static final long serialVersionUID = 2227717658188438696L;\r
-\r
- //\r
- //Define class members\r
- //\r
- private PCDsDocument.PCDs pcds = null;\r
-\r
- private int location = -1;\r
-\r
- private JPanel jContentPane = null;\r
-\r
- private JLabel jLabelItemType = null;\r
-\r
- private JLabel jLabelC_Name = null;\r
-\r
- private JComboBox jComboBoxItemType = null;\r
-\r
- private JTextField jTextFieldC_Name = null;\r
-\r
- private JLabel jLabelToken = null;\r
-\r
- private JTextField jTextFieldToken = null;\r
-\r
- private JLabel jLabelDefaultValue = null;\r
-\r
- private JTextField jTextFieldDefaultValue = 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 JLabel jLabelDatumType = null;\r
-\r
- private JComboBox jComboBoxDatumType = null;\r
-\r
- private StarLabel jStarLabel1 = null;\r
-\r
- private StarLabel jStarLabel2 = null;\r
-\r
- private StarLabel jStarLabel3 = null;\r
-\r
- private StarLabel jStarLabel4 = null;\r
- \r
- /**\r
- This method initializes jComboBoxItemType \r
- \r
- @return javax.swing.JComboBox jComboBoxItemType\r
- \r
- **/\r
- private JComboBox getJComboBoxItemType() {\r
- if (jComboBoxItemType == null) {\r
- jComboBoxItemType = new JComboBox();\r
- jComboBoxItemType.setBounds(new java.awt.Rectangle(160, 110, 320, 20));\r
- }\r
- return jComboBoxItemType;\r
- }\r
-\r
- /**\r
- This method initializes jTextFieldC_Name \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, 10, 320, 20));\r
- }\r
- return jTextFieldC_Name;\r
- }\r
-\r
- /**\r
- This method initializes jTextFieldToken \r
- \r
- @return javax.swing.JTextField jTextFieldToken\r
- \r
- **/\r
- private JTextField getJTextFieldToken() {\r
- if (jTextFieldToken == null) {\r
- jTextFieldToken = new JTextField();\r
- jTextFieldToken.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
- }\r
- return jTextFieldToken;\r
- }\r
-\r
- /**\r
- This method initializes jTextFieldDefaultValue \r
- \r
- @return javax.swing.JTextField jTextFieldDefaultValue\r
- \r
- **/\r
- private JTextField getJTextFieldDefaultValue() {\r
- if (jTextFieldDefaultValue == null) {\r
- jTextFieldDefaultValue = new JTextField();\r
- jTextFieldDefaultValue.setBounds(new java.awt.Rectangle(160, 85, 320, 20));\r
- }\r
- return jTextFieldDefaultValue;\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(280, 290, 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, 290, 90, 20));\r
- jButtonCancel.addActionListener(this);\r
- }\r
- return jButtonCancel;\r
- }\r
-\r
- /**\r
- This method initializes jTextFieldDatumType \r
- \r
- @return javax.swing.JTextField jComboBoxDatumType\r
- \r
- **/\r
- private JComboBox getJComboBoxDatumType() {\r
- if (jComboBoxDatumType == null) {\r
- jComboBoxDatumType = new JComboBox();\r
- jComboBoxDatumType.setBounds(new java.awt.Rectangle(160, 60, 320, 20));\r
- }\r
- return jComboBoxDatumType;\r
- }\r
-\r
- public static void main(String[] args) {\r
-\r
- }\r
-\r
- /**\r
- This is the default constructor\r
- \r
- **/\r
- public ModulePCDs() {\r
- super();\r
- init();\r
- this.setVisible(true);\r
- }\r
-\r
- /**\r
- This is the override edit constructor\r
- \r
- @param inPcds The input data of PCDsDocument.PCDs\r
- \r
- **/\r
- public ModulePCDs(PCDsDocument.PCDs inPcds) {\r
- super();\r
- init(inPcds);\r
- this.setVisible(true);\r
- }\r
-\r
- /**\r
- This is the override edit constructor\r
- \r
- @param inPcds The input data of PCDsDocument.PCDs\r
- @param type The input data of node type\r
- @param index The input data of node index\r
- \r
- **/\r
- public ModulePCDs(PCDsDocument.PCDs inPcds, int type, int index) {\r
- super();\r
- init(inPcds, type, index);\r
- this.setVisible(true);\r
- }\r
-\r
- /**\r
- This method initializes this\r
- \r
- @param inPcds The input data of PCDsDocument.PCDs\r
- \r
- **/\r
- private void init(PCDsDocument.PCDs inPcds) {\r
- init();\r
- this.setPcds(inPcds);\r
- }\r
-\r
- /**\r
- This method initializes this\r
- Fill values to all fields if these values are not empty\r
- \r
- @param inPcds The input data of PCDsDocument.PCDs\r
- @param type The input data of node type\r
- @param index The input data of node index\r
- \r
- **/\r
- private void init(PCDsDocument.PCDs inPcds, int type, int index) {\r
- init(inPcds);\r
- this.location = index;\r
- if (this.pcds.getPcdDataList().size() > 0) {\r
- if (this.pcds.getPcdDataArray(index).getCName() != null) {\r
- this.jTextFieldC_Name.setText(this.pcds.getPcdDataArray(index).getCName());\r
- }\r
- if (this.pcds.getPcdDataArray(index).getToken() != null) {\r
- this.jTextFieldToken.setText(this.pcds.getPcdDataArray(index).getToken());\r
- }\r
- if (this.pcds.getPcdDataArray(index).getDatumType() != null) {\r
- this.jComboBoxDatumType.setSelectedItem(this.pcds.getPcdDataArray(index).getDatumType().toString());\r
- }\r
- if (this.pcds.getPcdDataArray(index).getDefaultValue() != null) {\r
- this.jTextFieldDefaultValue.setText(this.pcds.getPcdDataArray(index).getDefaultValue());\r
- }\r
- if (this.pcds.getPcdDataArray(index).getPcdUsage() != null) {\r
- this.jComboBoxUsage.setSelectedItem(this.pcds.getPcdDataArray(index).getPcdUsage().toString());\r
- }\r
- if (this.pcds.getPcdDataArray(index).getItemType() != null) {\r
- this.jComboBoxItemType.setSelectedItem(this.pcds.getPcdDataArray(index).getItemType().toString());\r
- }\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("PCDs");\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.jTextFieldC_Name.setEnabled(!isView);\r
- this.jTextFieldToken.setEnabled(!isView);\r
- this.jComboBoxDatumType.setEnabled(!isView);\r
- this.jTextFieldDefaultValue.setEnabled(!isView);\r
- this.jComboBoxUsage.setEnabled(!isView);\r
- this.jComboBoxItemType.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
- jLabelDatumType = new JLabel();\r
- jLabelDatumType.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
- jLabelDatumType.setText("Datum Type");\r
- jLabelC_Name = new JLabel();\r
- jLabelC_Name.setText("C_Name");\r
- jLabelC_Name.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
- jLabelUsage = new JLabel();\r
- jLabelUsage.setText("Usage");\r
- jLabelUsage.setBounds(new java.awt.Rectangle(15, 135, 140, 20));\r
- jLabelDefaultValue = new JLabel();\r
- jLabelDefaultValue.setText("Default Value");\r
- jLabelDefaultValue.setBounds(new java.awt.Rectangle(15, 85, 140, 20));\r
- jLabelToken = new JLabel();\r
- jLabelToken.setText("Token");\r
- jLabelToken.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
- jLabelItemType = new JLabel();\r
- jLabelItemType.setText("Item Type");\r
- jLabelItemType.setBounds(new java.awt.Rectangle(15, 110, 140, 20));\r
- jContentPane = new JPanel();\r
- jContentPane.setLayout(null);\r
- jContentPane.setSize(new java.awt.Dimension(480,336));\r
- jContentPane.add(jLabelItemType, null);\r
- jContentPane.add(jLabelC_Name, null);\r
- jContentPane.add(getJTextFieldC_Name(), null);\r
- jContentPane.add(jLabelToken, null);\r
- jContentPane.add(getJTextFieldToken(), null);\r
- jContentPane.add(jLabelDefaultValue, null);\r
- jContentPane.add(getJTextFieldDefaultValue(), null);\r
- jContentPane.add(jLabelUsage, null);\r
- jContentPane.add(getJComboBoxUsage(), null);\r
- jContentPane.add(getJButtonOk(), null);\r
- jContentPane.add(getJButtonCancel(), null);\r
- jContentPane.add(getJComboBoxItemType(), null);\r
- jContentPane.add(jLabelDatumType, null);\r
- jContentPane.add(getJComboBoxDatumType(), 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
- jStarLabel3 = new StarLabel();\r
- jStarLabel3.setLocation(new java.awt.Point(0, 60));\r
- jStarLabel4 = new StarLabel();\r
- jStarLabel4.setLocation(new java.awt.Point(0, 110));\r
-\r
- jContentPane.add(jStarLabel1, null);\r
- jContentPane.add(jStarLabel2, null);\r
- jContentPane.add(jStarLabel3, null);\r
- jContentPane.add(jStarLabel4, null);\r
- }\r
- return jContentPane;\r
- }\r
-\r
- /**\r
- This method initializes Usage type, Item type and Datum 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("DEFAULT");\r
-\r
- jComboBoxItemType.addItem("FEATURE_FLAG");\r
- jComboBoxItemType.addItem("FIXED_AT_BUILD");\r
- jComboBoxItemType.addItem("PATCHABLE_IN_MODULE");\r
- jComboBoxItemType.addItem("DYNAMIC");\r
- jComboBoxItemType.addItem("DYNAMIC_EX");\r
-\r
- jComboBoxDatumType.addItem("UINT8");\r
- jComboBoxDatumType.addItem("UINT16");\r
- jComboBoxDatumType.addItem("UINT32");\r
- jComboBoxDatumType.addItem("UINT64");\r
- jComboBoxDatumType.addItem("VOID*");\r
- jComboBoxDatumType.addItem("BOOLEAN");\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
- /**\r
- Get PCDsDocument.PCDs\r
- \r
- @return PCDsDocument.PCDs\r
- \r
- **/\r
- public PCDsDocument.PCDs getPcds() {\r
- return pcds;\r
- }\r
-\r
- /**\r
- Set PCDsDocument.PCDs\r
- \r
- @param pcds The input data of PCDsDocument.PCDs\r
- \r
- **/\r
- public void setPcds(PCDsDocument.PCDs pcds) {\r
- this.pcds = pcds;\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.jTextFieldC_Name.getText())) {\r
- Log.err("C_Name couldn't be empty");\r
- return false;\r
- }\r
- if (isEmpty(this.jTextFieldToken.getText())) {\r
- Log.err("Token couldn't be empty");\r
- return false;\r
- }\r
-\r
- //\r
- // Check if all fields have correct data types \r
- //\r
- if (!isEmpty(this.jTextFieldC_Name.getText()) && !DataValidation.isCName(this.jTextFieldC_Name.getText())) {\r
- Log.err("Incorrect data type for C_Name");\r
- return false;\r
- }\r
- if (!isEmpty(this.jTextFieldToken.getText()) && !DataValidation.isToken(this.jTextFieldToken.getText())) {\r
- Log.err("Incorrect data type for Token");\r
- return false;\r
- }\r
- \r
- return true;\r
- }\r
-\r
- /**\r
- Save all components of PCDs\r
- if exists pcds, set the value directly\r
- if not exists pcds, new an instance first\r
- \r
- **/\r
- public void save() {\r
- try {\r
- if (this.pcds == null) {\r
- pcds = PCDsDocument.PCDs.Factory.newInstance();\r
- }\r
- PCDsDocument.PCDs.PcdData pcdData = PCDsDocument.PCDs.PcdData.Factory.newInstance();\r
- if (!isEmpty(this.jTextFieldC_Name.getText())) {\r
- pcdData.setCName(this.jTextFieldC_Name.getText());\r
- }\r
- if (!isEmpty(this.jTextFieldToken.getText())) {\r
- pcdData.setToken(this.jTextFieldToken.getText());\r
- }\r
- pcdData.setDatumType(PcdDataTypes.Enum.forString(this.jComboBoxDatumType.getSelectedItem().toString()));\r
- if (!isEmpty(this.jTextFieldDefaultValue.getText())) {\r
- pcdData.setDefaultValue(this.jTextFieldDefaultValue.getText());\r
- }\r
- pcdData.setItemType(PcdItemTypes.Enum.forString(this.jComboBoxItemType.getSelectedItem().toString()));\r
- pcdData.setPcdUsage(PcdUsage.Enum.forString(this.jComboBoxUsage.getSelectedItem().toString()));\r
- \r
-\r
- if (location > -1) {\r
- pcds.setPcdDataArray(location, pcdData);\r
- } else {\r
- pcds.addNewPcdData();\r
- pcds.setPcdDataArray(pcds.getPcdDataList().size() - 1, pcdData);\r
- }\r
- } catch (Exception e) {\r
- Log.err("Update Hobs", e.getMessage());\r
- }\r
- }\r
-}\r