+++ /dev/null
-/** @file\r
- \r
- The file is used to create, update Library Class Definition section of the MSA 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.Dimension;\r
-import java.awt.event.ActionEvent;\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.find.Find;\r
-import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;\r
-import org.tianocore.frameworkwizard.common.ui.IComboBox;\r
-import org.tianocore.frameworkwizard.common.ui.IDialog;\r
-import org.tianocore.frameworkwizard.common.ui.IFrame;\r
-import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
-import org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList;\r
-import org.tianocore.frameworkwizard.module.Identifications.ModuleIdentification;\r
-import org.tianocore.frameworkwizard.module.Identifications.LibraryClass.LibraryClassIdentification;\r
-import org.tianocore.frameworkwizard.module.Identifications.LibraryClass.LibraryClassVector;\r
-import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
-import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
-\r
-/**\r
- * The class is used to create, update Library Class Definition section of the MSA file\r
- * \r
- * It extends IDialog\r
- * \r
- */\r
-public class LibraryClassDefsDlg extends IDialog {\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 JPanel jContentPane = null;\r
-\r
- private IComboBox iComboBoxLibraryClassName = null;\r
-\r
- private JLabel jLabelUsage = null;\r
-\r
- private JComboBox jComboBoxUsage = null;\r
-\r
- private JLabel jLabelLibraryClassName = null;\r
-\r
- private JScrollPane jScrollPane = null;\r
-\r
- private StarLabel jStarLabel1 = null;\r
-\r
- private StarLabel jStarLabel2 = null;\r
-\r
- private JLabel jLabelRecommendedInstanceVersion = null;\r
-\r
- private JTextField jTextFieldRecommendedInstanceVersion = null;\r
-\r
- private JLabel jLabelRecommendedInstanceGuid = null;\r
-\r
- private JTextField jTextFieldRecommendedInstanceGuid = null;\r
-\r
- private JButton jButtonGenerateGuid = null;\r
-\r
- private JLabel jLabelFeatureFlag = null;\r
-\r
- private JTextField jTextFieldFeatureFlag = null;\r
-\r
- private JLabel jLabelArch = null;\r
-\r
- private JLabel jLabelModuleList = null;\r
-\r
- private JScrollPane jScrollPaneModuleList = null;\r
-\r
- private ICheckBoxList iCheckBoxListModule = null;\r
-\r
- private JLabel jLabelHelpText = null;\r
-\r
- private JTextField jTextFieldHelpText = null;\r
-\r
- private ArchCheckBox jArchCheckBox = null;\r
-\r
- private JButton jButtonOk = null;\r
-\r
- private JButton jButtonCancel = null;\r
-\r
- //\r
- // Not for UI\r
- //\r
- private EnumerationData ed = new EnumerationData();\r
-\r
- private WorkspaceTools wt = new WorkspaceTools();\r
-\r
- private LibraryClassIdentification lcid = null;\r
-\r
- /**\r
- This method initializes jComboBoxSelect \r
- \r
- @return javax.swing.JComboBox jComboBoxSelect\r
- \r
- **/\r
- private IComboBox getIComboBoxLibraryClassName() {\r
- if (iComboBoxLibraryClassName == null) {\r
- iComboBoxLibraryClassName = new IComboBox();\r
- iComboBoxLibraryClassName.setBounds(new java.awt.Rectangle(168, 12, 320, 20));\r
- iComboBoxLibraryClassName.setPreferredSize(new Dimension(320, 20));\r
- iComboBoxLibraryClassName.setEnabled(true);\r
- }\r
- return iComboBoxLibraryClassName;\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(168, 37, 320, 20));\r
- jComboBoxUsage.setPreferredSize(new Dimension(320, 20));\r
- }\r
- return jComboBoxUsage;\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 jTextFieldRecommendedInstanceVersion \r
- * \r
- * @return javax.swing.JTextField \r
- */\r
- private JTextField getJTextFieldRecommendedInstanceVersion() {\r
- if (jTextFieldRecommendedInstanceVersion == null) {\r
- jTextFieldRecommendedInstanceVersion = new JTextField();\r
- jTextFieldRecommendedInstanceVersion.setPreferredSize(new java.awt.Dimension(260, 20));\r
- jTextFieldRecommendedInstanceVersion.setSize(new java.awt.Dimension(260, 20));\r
- jTextFieldRecommendedInstanceVersion.setLocation(new java.awt.Point(220, 85));\r
- jTextFieldRecommendedInstanceVersion.setVisible(false);\r
- }\r
- return jTextFieldRecommendedInstanceVersion;\r
- }\r
-\r
- /**\r
- * This method initializes jTextFieldRecommendedInstanceGuid \r
- * \r
- * @return javax.swing.JTextField \r
- */\r
- private JTextField getJTextFieldRecommendedInstanceGuid() {\r
- if (jTextFieldRecommendedInstanceGuid == null) {\r
- jTextFieldRecommendedInstanceGuid = new JTextField();\r
- jTextFieldRecommendedInstanceGuid.setBounds(new java.awt.Rectangle(220, 110, 190, 20));\r
- jTextFieldRecommendedInstanceGuid.setPreferredSize(new java.awt.Dimension(190, 20));\r
- jTextFieldRecommendedInstanceGuid.setVisible(false);\r
- }\r
- return jTextFieldRecommendedInstanceGuid;\r
- }\r
-\r
- /**\r
- * This method initializes jButtonGenerateGuid \r
- * \r
- * @return javax.swing.JButton \r
- */\r
- private JButton getJButtonGenerateGuid() {\r
- if (jButtonGenerateGuid == null) {\r
- jButtonGenerateGuid = new JButton();\r
- jButtonGenerateGuid.setBounds(new java.awt.Rectangle(415, 112, 65, 20));\r
- jButtonGenerateGuid.setPreferredSize(new java.awt.Dimension(65, 20));\r
- jButtonGenerateGuid.setText("GEN");\r
- jButtonGenerateGuid.setVisible(false);\r
- jButtonGenerateGuid.addActionListener(this);\r
- }\r
- return jButtonGenerateGuid;\r
- }\r
-\r
- /**\r
- * This method initializes jTextFieldFeatureFlag \r
- * \r
- * @return javax.swing.JTextField \r
- */\r
- private JTextField getJTextFieldFeatureFlag() {\r
- if (jTextFieldFeatureFlag == null) {\r
- jTextFieldFeatureFlag = new JTextField();\r
- jTextFieldFeatureFlag.setBounds(new java.awt.Rectangle(168, 197, 320, 20));\r
- jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(320, 20));\r
- jTextFieldFeatureFlag.setToolTipText("Postfix expression that must evaluate to TRUE or FALSE");\r
- jTextFieldFeatureFlag.setEnabled(false);\r
- }\r
- return jTextFieldFeatureFlag;\r
- }\r
-\r
- /**\r
- This method initializes iCheckBoxListArch \r
- \r
- @return ICheckBoxList \r
- **/\r
- private ICheckBoxList getICheckBoxListSupModuleList() {\r
- if (iCheckBoxListModule == null) {\r
- iCheckBoxListModule = new ICheckBoxList();\r
- }\r
- return iCheckBoxListModule;\r
- }\r
-\r
- /**\r
- This method initializes jScrollPaneModuleList \r
- \r
- @return javax.swing.JScrollPane \r
- \r
- **/\r
- private JScrollPane getJScrollPaneModuleList() {\r
- if (jScrollPaneModuleList == null) {\r
- jScrollPaneModuleList = new JScrollPane();\r
- jScrollPaneModuleList.setBounds(new java.awt.Rectangle(168, 112, 320, 80));\r
- jScrollPaneModuleList.setPreferredSize(new java.awt.Dimension(320, 80));\r
- jScrollPaneModuleList.setViewportView(getICheckBoxListSupModuleList());\r
- }\r
- return jScrollPaneModuleList;\r
- }\r
-\r
- /**\r
- This method initializes jTextFieldHelpText \r
- \r
- @return javax.swing.JTextField \r
- \r
- **/\r
- private JTextField getJTextFieldHelpText() {\r
- if (jTextFieldHelpText == null) {\r
- jTextFieldHelpText = new JTextField();\r
- jTextFieldHelpText.setBounds(new java.awt.Rectangle(168, 62, 320, 20));\r
- jTextFieldHelpText.setPreferredSize(new java.awt.Dimension(320, 20));\r
- }\r
- return jTextFieldHelpText;\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(300, 232, 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(400, 232, 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 is the default constructor\r
- \r
- **/\r
- public LibraryClassDefsDlg(LibraryClassIdentification inLibraryClassIdentification, IFrame iFrame,\r
- ModuleIdentification mid) {\r
- super(iFrame, true);\r
- init(inLibraryClassIdentification, mid);\r
- }\r
-\r
- /**\r
- This method initializes this\r
- \r
- **/\r
- private void init() {\r
- this.setContentPane(getJScrollPane());\r
- this.setTitle("Library Class Definitions");\r
- this.setBounds(new java.awt.Rectangle(0, 0, 505, 305));\r
- initFrame();\r
- this.setViewMode(false);\r
- this.centerWindow();\r
- }\r
-\r
- /**\r
- This method initializes this\r
- \r
- **/\r
- private void init(LibraryClassIdentification inLibraryClassIdentification, ModuleIdentification mid) {\r
- init();\r
- this.lcid = inLibraryClassIdentification;\r
-\r
- //\r
- // Init arch with module's arch\r
- //\r
- this.jArchCheckBox.setEnabledItems(wt.getModuleArch(mid));\r
-\r
- //\r
- // Get defined library classes from dependent packages\r
- //\r
- Vector<PackageIdentification> vpid = wt.getPackageDependenciesOfModule(mid);\r
- if (vpid.size() <= 0) {\r
- Log.wrn("Init Library Class",\r
- "This module hasn't defined any package dependency, so there is no library class can be added");\r
- }\r
-\r
- Tools\r
- .generateComboBoxByVector(\r
- this.iComboBoxLibraryClassName,\r
- wt\r
- .getAllLibraryClassDefinitionsFromPackages(wt\r
- .getPackageDependenciesOfModule(mid)));\r
-\r
- if (lcid != null) {\r
- this.iComboBoxLibraryClassName.setSelectedItem(lcid.getLibraryClassName());\r
- this.jComboBoxUsage.setSelectedItem(lcid.getUsage());\r
- this.jTextFieldRecommendedInstanceVersion.setText(lcid.getRecommendedInstanceVersion());\r
- this.jTextFieldRecommendedInstanceGuid.setText(lcid.getRecommendedInstanceGuid());\r
- this.jTextFieldFeatureFlag.setText(lcid.getFeatureFlag());\r
- this.jArchCheckBox.setSelectedItems(lcid.getSupArchList());\r
- this.iCheckBoxListModule.setAllItemsUnchecked();\r
- this.iCheckBoxListModule.initCheckedItem(true, lcid.getSupModuleList());\r
- this.jTextFieldHelpText.setText(lcid.getHelp());\r
- }\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
- if (isView) {\r
- this.iComboBoxLibraryClassName.setEnabled(!isView);\r
- this.jComboBoxUsage.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
- jArchCheckBox = new ArchCheckBox();\r
- jArchCheckBox.setBounds(new java.awt.Rectangle(168, 87, 320, 20));\r
- jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\r
- jLabelHelpText = new JLabel();\r
- jLabelHelpText.setBounds(new java.awt.Rectangle(12, 62, 168, 20));\r
- jLabelHelpText.setText("Help Text");\r
- jLabelModuleList = new JLabel();\r
- jLabelModuleList.setBounds(new java.awt.Rectangle(12, 112, 168, 20));\r
- jLabelModuleList.setText("Supported Module Types");\r
- jLabelArch = new JLabel();\r
- jLabelArch.setBounds(new java.awt.Rectangle(12, 87, 168, 20));\r
- jLabelArch.setText("Supported Architectures");\r
- jLabelFeatureFlag = new JLabel();\r
- jLabelFeatureFlag.setBounds(new java.awt.Rectangle(12, 197, 168, 20));\r
- jLabelFeatureFlag.setText("Feature Flag Expression");\r
- jLabelFeatureFlag.setEnabled(false);\r
- jLabelRecommendedInstanceGuid = new JLabel();\r
- jLabelRecommendedInstanceGuid.setBounds(new java.awt.Rectangle(12, 87, 200, 20));\r
- jLabelRecommendedInstanceGuid.setText("Recommended Instance Guid");\r
- jLabelRecommendedInstanceGuid.setVisible(false);\r
- jLabelRecommendedInstanceVersion = new JLabel();\r
- jLabelRecommendedInstanceVersion.setBounds(new java.awt.Rectangle(12, 87, 200, 20));\r
- jLabelRecommendedInstanceVersion.setText("Recommended Instance Version");\r
- jLabelRecommendedInstanceVersion.setVisible(false);\r
- jLabelLibraryClassName = new JLabel();\r
- jLabelLibraryClassName.setBounds(new java.awt.Rectangle(12, 12, 168, 20));\r
- jLabelLibraryClassName.setText("Library Class Name");\r
- jLabelUsage = new JLabel();\r
- jLabelUsage.setBounds(new java.awt.Rectangle(12, 37, 168, 20));\r
- jLabelUsage.setText("Usage");\r
- jContentPane = new JPanel();\r
- jContentPane.setLayout(null);\r
- jContentPane.setPreferredSize(new java.awt.Dimension(495, 255));\r
-\r
- jContentPane.add(getIComboBoxLibraryClassName(), null);\r
- jContentPane.add(jLabelUsage, null);\r
- jContentPane.add(getJComboBoxUsage(), null);\r
- jContentPane.add(jLabelLibraryClassName, null);\r
- jContentPane.add(jLabelRecommendedInstanceVersion, null);\r
- jContentPane.add(getJTextFieldRecommendedInstanceVersion(), null);\r
- jContentPane.add(jLabelRecommendedInstanceGuid, null);\r
- jContentPane.add(getJTextFieldRecommendedInstanceGuid(), null);\r
- jContentPane.add(getJButtonGenerateGuid(), null);\r
- jContentPane.add(jLabelFeatureFlag, null);\r
- jContentPane.add(getJTextFieldFeatureFlag(), null);\r
- jContentPane.add(jLabelArch, null);\r
- jStarLabel1 = new StarLabel();\r
- jStarLabel1.setLocation(new java.awt.Point(2, 10));\r
- jStarLabel2 = new StarLabel();\r
- jStarLabel2.setLocation(new java.awt.Point(2, 35));\r
-\r
- jContentPane.add(jStarLabel1, null);\r
- jContentPane.add(jStarLabel2, null);\r
- jContentPane.add(jLabelModuleList, null);\r
- jContentPane.add(getJScrollPaneModuleList(), null);\r
- jContentPane.add(jLabelHelpText, null);\r
- jContentPane.add(getJTextFieldHelpText(), 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 all existing libraries and usage types\r
- \r
- **/\r
- private void initFrame() {\r
- Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVLibraryUsage());\r
- this.iCheckBoxListModule.setAllItems(ed.getVFrameworkModuleTypes());\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() == jButtonGenerateGuid) {\r
- this.jTextFieldRecommendedInstanceGuid.setText(Tools.generateUuidString());\r
- }\r
-\r
- if (arg0.getSource() == jButtonOk) {\r
- if (checkAdd()) {\r
- getCurrentLibraryClass();\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 LibraryClass\r
- //\r
- if (this.iComboBoxLibraryClassName.getSelectedItem() == null) {\r
- Log.wrn("Update Library Class Definitions", "Please select one Library Class");\r
- return false;\r
- }\r
- if (!DataValidation.isLibraryClass(this.iComboBoxLibraryClassName.getSelectedItem().toString())) {\r
- Log.wrn("Update Library Class Definitions", "Incorrect data type for Library Class");\r
- return false;\r
- }\r
- \r
- //\r
- // Check RecommendedInstanceVersion\r
- //\r
- // if (!isEmpty(this.jTextFieldRecommendedInstanceVersion.getText())) {\r
- // if (!DataValidation.isRecommendedInstanceVersion(this.jTextFieldRecommendedInstanceVersion.getText())) {\r
- // Log.err("Incorrect data type for Recommended Instance Version");\r
- // return false;\r
- // }\r
- // }\r
-\r
- //\r
- // Check RecommendedInstanceGuid\r
- //\r
- // if (!isEmpty(this.jTextFieldRecommendedInstanceGuid.getText())) {\r
- // if (!DataValidation.isGuid(this.jTextFieldRecommendedInstanceGuid.getText())) {\r
- // Log.err("Incorrect data type for Recommended Instance Guid");\r
- // return false;\r
- // }\r
- // }\r
-\r
- //\r
- // Check FeatureFlag\r
- //\r
- if (!isEmpty(this.jTextFieldFeatureFlag.getText())) {\r
- if (!DataValidation.isFeatureFlag(this.jTextFieldFeatureFlag.getText())) {\r
- Log.wrn("Update Library Class Definitions", "Incorrect data type for Feature Flag");\r
- return false;\r
- }\r
- }\r
- \r
- //\r
- // Check if the library is produced\r
- //\r
- String strUsage = this.jComboBoxUsage.getSelectedItem().toString();\r
- //\r
- // Check only when the library class is consumed\r
- //\r
- if (strUsage.equals(DataType.USAGE_TYPE_ALWAYS_CONSUMED) || strUsage.equals(DataType.USAGE_TYPE_SOMETIMES_CONSUMED)) {\r
- LibraryClassVector v = Find.getAllLibraryClassVector();\r
- boolean isFind = false;\r
- for (int index = 0; index < v.size(); index++) {\r
- LibraryClassIdentification lid = v.getLibraryClass(index);\r
- if (lid.getLibraryClassName().equals(this.iComboBoxLibraryClassName.getSelectedItem().toString())) {\r
- if (lid.getUsage().equals(DataType.USAGE_TYPE_ALWAYS_PRODUCED)\r
- || lid.getUsage().equals(DataType.USAGE_TYPE_SOMETIMES_PRODUCED)) {\r
- isFind = true;\r
- break;\r
- }\r
- }\r
- }\r
- if (!isFind) {\r
- Log.wrn("Update Library Class Definitions", "This Library Class has no instance yet. It may have some errors in build time.");\r
- //return false;\r
- }\r
- }\r
-\r
- return true;\r
- }\r
-\r
- private LibraryClassIdentification getCurrentLibraryClass() {\r
- String name = this.iComboBoxLibraryClassName.getSelectedItem().toString();\r
- String usage = this.jComboBoxUsage.getSelectedItem().toString();\r
- String version = this.jTextFieldRecommendedInstanceVersion.getText();\r
- String guid = this.jTextFieldRecommendedInstanceGuid.getText();\r
- String featureFlag = this.jTextFieldFeatureFlag.getText();\r
- Vector<String> arch = this.jArchCheckBox.getSelectedItemsVector();\r
- Vector<String> module = this.iCheckBoxListModule.getAllCheckedItemsString();\r
- String help = this.jTextFieldHelpText.getText();\r
- lcid = new LibraryClassIdentification(name, usage, version, guid, arch, featureFlag, module, help);\r
- return lcid;\r
- }\r
-\r
- public LibraryClassIdentification getLcid() {\r
- return lcid;\r
- }\r
-\r
- public void setLcid(LibraryClassIdentification lcid) {\r
- this.lcid = lcid;\r
- }\r
-}\r