+/** @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.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.ui.ArchCheckBox;\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.LibraryClass.LibraryClassIdentification;\r
+import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
+\r
+/**\r
+ The class is used to create, update Library Class Definition of MSA/MBD file\r
+ It extends IInternalFrame\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 JComboBox jComboBoxLibraryClassName = 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 JComboBox getJComboBoxLibraryClassName() {\r
+ if (jComboBoxLibraryClassName == null) {\r
+ jComboBoxLibraryClassName = new JComboBox();\r
+ jComboBoxLibraryClassName.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
+ jComboBoxLibraryClassName.setPreferredSize(new Dimension(320, 20));\r
+ jComboBoxLibraryClassName.setEnabled(true);\r
+ }\r
+ return jComboBoxLibraryClassName;\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, 35, 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, 110, 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(160, 85, 320, 20));\r
+ jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(320, 20));\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(160, 135, 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(160, 60, 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(290, 225, 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(390, 225, 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
+ super(iFrame, true);\r
+ init(inLibraryClassIdentification);\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, 500, 295));\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) {\r
+ init();\r
+ this.lcid = inLibraryClassIdentification;\r
+ if (lcid != null) {\r
+ this.jComboBoxLibraryClassName.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.jComboBoxLibraryClassName.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(160, 110, 320, 20));\r
+ jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\r
+ jLabelHelpText = new JLabel();\r
+ jLabelHelpText.setBounds(new java.awt.Rectangle(14, 60, 140, 20));\r
+ jLabelHelpText.setText("Help Text");\r
+ jLabelModuleList = new JLabel();\r
+ jLabelModuleList.setBounds(new java.awt.Rectangle(15, 135, 140, 20));\r
+ jLabelModuleList.setText("Sup Module List");\r
+ jLabelArch = new JLabel();\r
+ jLabelArch.setBounds(new java.awt.Rectangle(15, 110, 140, 20));\r
+ jLabelArch.setText("Sup Arch List");\r
+ jLabelFeatureFlag = new JLabel();\r
+ jLabelFeatureFlag.setBounds(new java.awt.Rectangle(15, 85, 140, 20));\r
+ jLabelFeatureFlag.setText("Feature Flag");\r
+ jLabelRecommendedInstanceGuid = new JLabel();\r
+ jLabelRecommendedInstanceGuid.setBounds(new java.awt.Rectangle(15, 110, 200, 20));\r
+ jLabelRecommendedInstanceGuid.setText("Recommended Instance Guid");\r
+ jLabelRecommendedInstanceGuid.setVisible(false);\r
+ jLabelRecommendedInstanceVersion = new JLabel();\r
+ jLabelRecommendedInstanceVersion.setBounds(new java.awt.Rectangle(15, 85, 200, 20));\r
+ jLabelRecommendedInstanceVersion.setText("Recommended Instance Version");\r
+ jLabelRecommendedInstanceVersion.setVisible(false);\r
+ jLabelLibraryClassName = new JLabel();\r
+ jLabelLibraryClassName.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
+ jLabelLibraryClassName.setText("Library Class Name");\r
+ jLabelUsage = new JLabel();\r
+ jLabelUsage.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
+ jLabelUsage.setText("Usage");\r
+ jContentPane = new JPanel();\r
+ jContentPane.setLayout(null);\r
+ jContentPane.setPreferredSize(new java.awt.Dimension(490, 245));\r
+\r
+ jContentPane.add(getJComboBoxLibraryClassName(), 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(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
+ 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(jComboBoxLibraryClassName, wt.getAllLibraryClassDefinitionsFromWorkspace());\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.jComboBoxLibraryClassName.getSelectedItem() == null) {\r
+ Log.err("No Library Class can be added");\r
+ return false;\r
+ }\r
+ if (!DataValidation.isLibraryClass(this.jComboBoxLibraryClassName.getSelectedItem().toString())) {\r
+ Log.err("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.err("Incorrect data type for Feature Flag");\r
+ return false;\r
+ }\r
+ }\r
+\r
+ return true;\r
+ }\r
+\r
+ private LibraryClassIdentification getCurrentLibraryClass() {\r
+ String name = this.jComboBoxLibraryClassName.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