+++ /dev/null
-/** @file\r
- \r
- The file is used to create, update Library Class Definition 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.DefaultListModel;\r
-import javax.swing.JButton;\r
-import javax.swing.JComboBox;\r
-import javax.swing.JLabel;\r
-import javax.swing.JList;\r
-import javax.swing.JPanel;\r
-import javax.swing.JRadioButton;\r
-import javax.swing.JScrollPane;\r
-import javax.swing.JTextField;\r
-\r
-import org.tianocore.LibraryClassDefinitionsDocument;\r
-import org.tianocore.LibraryClassDocument;\r
-import org.tianocore.LibraryUsage;\r
-import org.tianocore.common.DataValidation;\r
-import org.tianocore.common.Log;\r
-import org.tianocore.packaging.common.ui.IInternalFrame;\r
-\r
-/**\r
- The class is used to create, update Library Class Definition of MSA/MBD file\r
- It extends IInternalFrame\r
- \r
- @since ModuleEditor 1.0\r
-\r
- **/\r
-public class ModuleLibraryClassDefinitions extends IInternalFrame {\r
-\r
- ///\r
- /// Define class Serial Version UID\r
- ///\r
- private static final long serialVersionUID = -1743248695411382857L;\r
-\r
- //\r
- //Define class members\r
- //\r
- private static String Separator = "::";\r
-\r
- private DefaultListModel listItem = new DefaultListModel();\r
-\r
- private LibraryClassDefinitionsDocument.LibraryClassDefinitions libraryClassDefinitions = null;\r
-\r
- private JPanel jContentPane = null;\r
-\r
- private JRadioButton jRadioButtonAdd = null;\r
-\r
- private JRadioButton jRadioButtonSelect = null;\r
-\r
- private JTextField jTextFieldAdd = null;\r
-\r
- private JComboBox jComboBoxSelect = null;\r
-\r
- private JLabel jLabelUsage = null;\r
-\r
- private JComboBox jComboBoxUsage = null;\r
-\r
- private JScrollPane jScrollPane = null;\r
-\r
- private JList jListLibraryClassDefinitions = null;\r
-\r
- private JButton jButtonAdd = null;\r
-\r
- private JButton jButtonRemove = null;\r
-\r
- private JButton jButtonClearAll = null;\r
-\r
- private JButton jButtonCancel = null;\r
-\r
- private JButton jButtonOk = null;\r
-\r
- /**\r
- This method initializes jRadioButtonAdd \r
- \r
- @return javax.swing.JRadioButton jRadioButtonAdd\r
- \r
- **/\r
- private JRadioButton getJRadioButtonAdd() {\r
- if (jRadioButtonAdd == null) {\r
- jRadioButtonAdd = new JRadioButton();\r
- jRadioButtonAdd.setBounds(new java.awt.Rectangle(15, 35, 205, 20));\r
- jRadioButtonAdd.setText("Add a new Library Class");\r
- jRadioButtonAdd.addActionListener(this);\r
- jRadioButtonAdd.setSelected(false);\r
- }\r
- return jRadioButtonAdd;\r
- }\r
-\r
- /**\r
- This method initializes jRadioButtonSelect \r
- \r
- @return javax.swing.JRadioButton jRadioButtonSelect\r
- \r
- **/\r
- private JRadioButton getJRadioButtonSelect() {\r
- if (jRadioButtonSelect == null) {\r
- jRadioButtonSelect = new JRadioButton();\r
- jRadioButtonSelect.setBounds(new java.awt.Rectangle(15, 10, 205, 20));\r
- jRadioButtonSelect.setText("Select an existing Library Class");\r
- jRadioButtonSelect.addActionListener(this);\r
- jRadioButtonSelect.setSelected(true);\r
- }\r
- return jRadioButtonSelect;\r
- }\r
-\r
- /**\r
- This method initializes jTextFieldAdd \r
- \r
- @return javax.swing.JTextField jTextFieldAdd\r
- \r
- **/\r
- private JTextField getJTextFieldAdd() {\r
- if (jTextFieldAdd == null) {\r
- jTextFieldAdd = new JTextField();\r
- jTextFieldAdd.setBounds(new java.awt.Rectangle(220, 35, 260, 20));\r
- jTextFieldAdd.setEnabled(false);\r
- }\r
- return jTextFieldAdd;\r
- }\r
-\r
- /**\r
- This method initializes jComboBoxSelect \r
- \r
- @return javax.swing.JComboBox jComboBoxSelect\r
- \r
- **/\r
- private JComboBox getJComboBoxSelect() {\r
- if (jComboBoxSelect == null) {\r
- jComboBoxSelect = new JComboBox();\r
- jComboBoxSelect.setBounds(new java.awt.Rectangle(220, 10, 260, 20));\r
- jComboBoxSelect.setEnabled(true);\r
- }\r
- return jComboBoxSelect;\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(220, 60, 260, 20));\r
- }\r
- return jComboBoxUsage;\r
- }\r
-\r
- /**\r
- This method initializes jScrollPane \r
- \r
- @return javax.swing.JScrollPane jScrollPane\r
- \r
- **/\r
- private JScrollPane getJScrollPane() {\r
- if (jScrollPane == null) {\r
- jScrollPane = new JScrollPane();\r
- jScrollPane.setBounds(new java.awt.Rectangle(15, 95, 350, 200));\r
- jScrollPane.setViewportView(getJListLibraryClassDefinitions());\r
- }\r
- return jScrollPane;\r
- }\r
-\r
- /**\r
- This method initializes jListLibraryClassDefinitions \r
- \r
- @return javax.swing.JList jListLibraryClassDefinitions\r
- \r
- **/\r
- private JList getJListLibraryClassDefinitions() {\r
- if (jListLibraryClassDefinitions == null) {\r
- jListLibraryClassDefinitions = new JList(listItem);\r
- }\r
- return jListLibraryClassDefinitions;\r
- }\r
-\r
- /**\r
- This method initializes jButtonAdd \r
- \r
- @return javax.swing.JButton jButtonAdd\r
- \r
- **/\r
- private JButton getJButtonAdd() {\r
- if (jButtonAdd == null) {\r
- jButtonAdd = new JButton();\r
- jButtonAdd.setBounds(new java.awt.Rectangle(380, 115, 90, 20));\r
- jButtonAdd.setText("Add");\r
- jButtonAdd.addActionListener(this);\r
- }\r
- return jButtonAdd;\r
- }\r
-\r
- /**\r
- This method initializes jButtonRemove\r
- \r
- @return javax.swing.JButton jButtonRemove \r
- \r
- **/\r
- private JButton getJButtonRemove() {\r
- if (jButtonRemove == null) {\r
- jButtonRemove = new JButton();\r
- jButtonRemove.setBounds(new java.awt.Rectangle(380, 230, 90, 20));\r
- jButtonRemove.setText("Remove");\r
- jButtonRemove.addActionListener(this);\r
- }\r
- return jButtonRemove;\r
- }\r
-\r
- /**\r
- This method initializes jButtonRemoveAll \r
- \r
- @return javax.swing.JButton jButtonClearAll\r
- \r
- **/\r
- private JButton getJButtonClearAll() {\r
- if (jButtonClearAll == null) {\r
- jButtonClearAll = new JButton();\r
- jButtonClearAll.setBounds(new java.awt.Rectangle(380, 260, 90, 20));\r
- jButtonClearAll.setText("Clear All");\r
- jButtonClearAll.addActionListener(this);\r
- }\r
- return jButtonClearAll;\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.setPreferredSize(new java.awt.Dimension(90, 20));\r
- jButtonCancel.setLocation(new java.awt.Point(390, 305));\r
- jButtonCancel.setText("Cancel");\r
- jButtonCancel.setSize(new java.awt.Dimension(90, 20));\r
- jButtonCancel.addActionListener(this);\r
- }\r
- return jButtonCancel;\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.setSize(new java.awt.Dimension(90, 20));\r
- jButtonOk.setText("OK");\r
- jButtonOk.setLocation(new java.awt.Point(290, 305));\r
- jButtonOk.addActionListener(this);\r
- }\r
- return jButtonOk;\r
- }\r
-\r
- public static void main(String[] args) {\r
-\r
- }\r
-\r
- /**\r
- This is the default constructor\r
- \r
- **/\r
- public ModuleLibraryClassDefinitions() {\r
- super();\r
- init();\r
- this.setVisible(true);\r
- }\r
-\r
- /**\r
- This is the override edit constructor\r
- \r
- @param inLibraryClassDefinitions The input data of LibraryClassDefinitionsDocument.LibraryClassDefinitions\r
- \r
- **/\r
- public ModuleLibraryClassDefinitions(\r
- LibraryClassDefinitionsDocument.LibraryClassDefinitions inLibraryClassDefinitions) {\r
- super();\r
- init(inLibraryClassDefinitions);\r
- this.setVisible(true);\r
- }\r
-\r
- /**\r
- This method initializes this\r
- Fill values to all fields if these values are not empty\r
- \r
- @param inLibraryClassDefinitions The input data of LibraryClassDefinitionsDocument.LibraryClassDefinitions\r
- \r
- **/\r
- private void init(LibraryClassDefinitionsDocument.LibraryClassDefinitions inLibraryClassDefinitions) {\r
- init();\r
- this.setLibraryClassDefinitions(inLibraryClassDefinitions);\r
- if (this.libraryClassDefinitions != null) {\r
- if (this.libraryClassDefinitions.getLibraryClassList().size() > 0) {\r
- for (int index = 0; index < this.libraryClassDefinitions.getLibraryClassList().size(); index++) {\r
- listItem.addElement(this.libraryClassDefinitions.getLibraryClassArray(index).getUsage().toString()\r
- + ModuleLibraryClassDefinitions.Separator\r
- + this.libraryClassDefinitions.getLibraryClassArray(index).getStringValue());\r
- this.libraryClassDefinitions.getLibraryClassList();\r
- }\r
- }\r
- }\r
- }\r
-\r
- /**\r
- This method initializes this\r
- \r
- **/\r
- private void init() {\r
- this.setContentPane(getJContentPane());\r
- this.setTitle("Library Class Definitions");\r
- this.setBounds(new java.awt.Rectangle(0, 0, 500, 515));\r
- //this.centerWindow();\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.jRadioButtonAdd.setEnabled(!isView);\r
- this.jRadioButtonSelect.setEnabled(!isView);\r
- this.jTextFieldAdd.setEnabled(!isView);\r
- this.jComboBoxSelect.setEnabled(!isView);\r
- this.jComboBoxUsage.setEnabled(!isView);\r
- this.jButtonAdd.setEnabled(!isView);\r
- this.jButtonRemove.setEnabled(!isView);\r
- this.jButtonClearAll.setEnabled(!isView);\r
- this.jButtonCancel.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
- private JPanel getJContentPane() {\r
- if (jContentPane == null) {\r
- jLabelUsage = new JLabel();\r
- jLabelUsage.setBounds(new java.awt.Rectangle(15, 60, 205, 20));\r
- jLabelUsage.setText("Usage");\r
- jContentPane = new JPanel();\r
- jContentPane.setLayout(null);\r
- jContentPane.add(getJRadioButtonAdd(), null);\r
- jContentPane.add(getJRadioButtonSelect(), null);\r
- jContentPane.add(getJTextFieldAdd(), null);\r
- jContentPane.add(getJComboBoxSelect(), null);\r
- jContentPane.add(jLabelUsage, null);\r
- jContentPane.add(getJComboBoxUsage(), null);\r
- jContentPane.add(getJScrollPane(), null);\r
- jContentPane.add(getJButtonAdd(), null);\r
- jContentPane.add(getJButtonRemove(), null);\r
- jContentPane.add(getJButtonClearAll(), null);\r
- jContentPane.add(getJButtonCancel(), null);\r
- jContentPane.add(getJButtonOk(), null);\r
- }\r
- return jContentPane;\r
- }\r
-\r
- /**\r
- This method initializes all existing libraries and usage types\r
- \r
- **/\r
- private void initFrame() {\r
- jComboBoxSelect.addItem("BaseCpuICacheFlush");\r
- jComboBoxSelect.addItem("BaseDebugLibNull");\r
- jComboBoxSelect.addItem("BaseDebugLibReportStatusCode");\r
- jComboBoxSelect.addItem("BaseIoLibIntrinsic");\r
- jComboBoxSelect.addItem("BaseLib");\r
- jComboBoxSelect.addItem("BaseMemoryLib");\r
- jComboBoxSelect.addItem("BaseMemoryLibMmx");\r
- jComboBoxSelect.addItem("BaseMemoryLibSse2");\r
- jComboBoxSelect.addItem("BasePeCoffGetEntryPointLib");\r
- jComboBoxSelect.addItem("BasePeCoffLib");\r
- jComboBoxSelect.addItem("BasePrintLib");\r
- jComboBoxSelect.addItem("BaseReportStatusCodeLibNull");\r
- jComboBoxSelect.addItem("CommonPciCf8Lib");\r
- jComboBoxSelect.addItem("CommonPciExpressLib");\r
- jComboBoxSelect.addItem("CommonPciLibCf8");\r
- jComboBoxSelect.addItem("CommonPciLibPciExpress");\r
- jComboBoxSelect.addItem("DxeCoreEntryPoint");\r
- jComboBoxSelect.addItem("DxeHobLib");\r
- jComboBoxSelect.addItem("DxeIoLibCpuIo");\r
- jComboBoxSelect.addItem("DxeLib");\r
- jComboBoxSelect.addItem("DxePcdLib");\r
- jComboBoxSelect.addItem("DxeReportStatusCodeLib");\r
- jComboBoxSelect.addItem("DxeServicesTableLib");\r
- jComboBoxSelect.addItem("PeiCoreEntryPoint");\r
- jComboBoxSelect.addItem("PeiMemoryLib");\r
- jComboBoxSelect.addItem("PeimEntryPoint");\r
- jComboBoxSelect.addItem("PeiReportStatusCodeLib");\r
- jComboBoxSelect.addItem("PeiServicesTablePointerLib");\r
- jComboBoxSelect.addItem("PeiServicesTablePointerLibMm7");\r
- jComboBoxSelect.addItem("UefiDebugLibConOut");\r
- jComboBoxSelect.addItem("UefiDebugLibStdErr");\r
- jComboBoxSelect.addItem("UefiDriverEntryPointMultiple");\r
- jComboBoxSelect.addItem("UefiDriverEntryPointSingle");\r
- jComboBoxSelect.addItem("UefiDriverEntryPointSingleUnload");\r
- jComboBoxSelect.addItem("UefiDriverModelLib");\r
- jComboBoxSelect.addItem("UefiDriverModelLibNoConfigNoDiag");\r
- jComboBoxSelect.addItem("UefiLib");\r
- jComboBoxSelect.addItem("UefiMemoryLib");\r
-\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
- 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.dispose();\r
- this.setEdited(true);\r
- this.save();\r
- }\r
- if (arg0.getSource() == jButtonCancel) {\r
- this.dispose();\r
- this.setEdited(false);\r
- }\r
-\r
- //\r
- // Add current Library and its usage to the list\r
- //\r
- if (arg0.getSource() == jButtonAdd) {\r
- if (!checkAdd()) {\r
- return;\r
- }\r
- String strLibClass = "";\r
- String strUsage = "";\r
- if (jRadioButtonAdd.isSelected()) {\r
- strLibClass = jTextFieldAdd.getText();\r
- }\r
- if (jRadioButtonSelect.isSelected()) {\r
- strLibClass = jComboBoxSelect.getSelectedItem().toString();\r
- }\r
- strUsage = jComboBoxUsage.getSelectedItem().toString();\r
- listItem.addElement(strUsage + ModuleLibraryClassDefinitions.Separator + strLibClass);\r
- }\r
-\r
- //\r
- // Remove current Library and its usage of the list\r
- //\r
- if (arg0.getSource() == jButtonRemove) {\r
- int intSelected[] = jListLibraryClassDefinitions.getSelectedIndices();\r
- if (intSelected.length > 0) {\r
- for (int index = intSelected.length - 1; index > -1; index--) {\r
- listItem.removeElementAt(intSelected[index]);\r
- }\r
- }\r
- jListLibraryClassDefinitions.getSelectionModel().clearSelection();\r
- }\r
-\r
- if (arg0.getSource() == jButtonClearAll) {\r
- listItem.removeAllElements();\r
- }\r
-\r
- //\r
- // Contorl the selected status when click RadionButton\r
- // Do not use Radio Button Group\r
- //\r
- if (arg0.getSource() == jRadioButtonAdd) {\r
- if (jRadioButtonAdd.isSelected()) {\r
- jRadioButtonSelect.setSelected(false);\r
- jTextFieldAdd.setEnabled(true);\r
- jComboBoxSelect.setEnabled(false);\r
- }\r
- if (!jRadioButtonSelect.isSelected() && !jRadioButtonAdd.isSelected()) {\r
- jRadioButtonAdd.setSelected(true);\r
- jTextFieldAdd.setEnabled(true);\r
- jComboBoxSelect.setEnabled(false);\r
- }\r
- }\r
-\r
- if (arg0.getSource() == jRadioButtonSelect) {\r
- if (jRadioButtonSelect.isSelected()) {\r
- jRadioButtonAdd.setSelected(false);\r
- jTextFieldAdd.setEnabled(false);\r
- jComboBoxSelect.setEnabled(true);\r
- }\r
- if (!jRadioButtonSelect.isSelected() && !jRadioButtonAdd.isSelected()) {\r
- jRadioButtonSelect.setSelected(true);\r
- jTextFieldAdd.setEnabled(false);\r
- jComboBoxSelect.setEnabled(true);\r
- }\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 check() {\r
- if (listItem.getSize() < 1) {\r
- Log.err("Must have one Library Class at least!");\r
- return false;\r
- }\r
- return true;\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 required fields are not empty\r
- //\r
- if (this.jRadioButtonAdd.isSelected() && isEmpty(this.jTextFieldAdd.getText())) {\r
- Log.err("Library Class couldn't be empty");\r
- return false;\r
- }\r
-\r
- //\r
- // Check if all fields have correct data types \r
- //\r
- if (this.jRadioButtonAdd.isSelected() && !DataValidation.isLibraryClass(this.jTextFieldAdd.getText())) {\r
- Log.err("Incorrect data type for Library Class");\r
- return false;\r
- }\r
- return true;\r
- }\r
-\r
- /**\r
- Save all components of Mbd Header\r
- if exists mbdHeader, set the value directly\r
- if not exists mbdHeader, new an instance first\r
- \r
- **/\r
- public void save() {\r
- try {\r
- int intLibraryCount = listItem.getSize();\r
-\r
- if (this.libraryClassDefinitions == null) {\r
- libraryClassDefinitions = LibraryClassDefinitionsDocument.LibraryClassDefinitions.Factory.newInstance();\r
- }\r
-\r
- if (intLibraryCount > 0) {\r
- LibraryClassDocument.LibraryClass mLibraryClass = LibraryClassDocument.LibraryClass.Factory\r
- .newInstance();\r
- for (int index = this.libraryClassDefinitions.getLibraryClassList().size() - 1; index > -1; index--) {\r
- this.libraryClassDefinitions.removeLibraryClass(index);\r
- }\r
- for (int index = 0; index < intLibraryCount; index++) {\r
- String strAll = listItem.get(index).toString();\r
- String strUsage = strAll.substring(0, strAll.indexOf(ModuleLibraryClassDefinitions.Separator));\r
- String strLibraryClass = strAll.substring(strAll.indexOf(ModuleLibraryClassDefinitions.Separator)\r
- + ModuleLibraryClassDefinitions.Separator.length());\r
- mLibraryClass.setStringValue(strLibraryClass);\r
- mLibraryClass.setUsage(LibraryUsage.Enum.forString(strUsage));\r
- this.libraryClassDefinitions.addNewLibraryClass();\r
- this.libraryClassDefinitions.setLibraryClassArray(index, mLibraryClass);\r
- }\r
- } else {\r
- this.libraryClassDefinitions.setNil();\r
- }\r
- } catch (Exception e) {\r
- Log.err("Update Library Class Definitions", e.getMessage());\r
- }\r
- }\r
-\r
- /**\r
- Get LibraryClassDefinitionsDocument.LibraryClassDefinitions\r
- \r
- @return LibraryClassDefinitionsDocument.LibraryClassDefinitions\r
- \r
- **/\r
- public LibraryClassDefinitionsDocument.LibraryClassDefinitions getLibraryClassDefinitions() {\r
- return libraryClassDefinitions;\r
- }\r
-\r
- /**\r
- Set LibraryClassDefinitionsDocument.LibraryClassDefinitions\r
- \r
- @param libraryClassDefinitions The input data of LibraryClassDefinitionsDocument.LibraryClassDefinitions\r
- \r
- **/\r
- public void setLibraryClassDefinitions(\r
- LibraryClassDefinitionsDocument.LibraryClassDefinitions libraryClassDefinitions) {\r
- this.libraryClassDefinitions = libraryClassDefinitions;\r
- }\r
-}\r