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
private JPanel jContentPane = null;\r
\r
- private JComboBox jComboBoxLibraryClassName = null;\r
+ private IComboBox iComboBoxLibraryClassName = null;\r
\r
private JLabel jLabelUsage = null;\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(168, 12, 320, 20));\r
- jComboBoxLibraryClassName.setPreferredSize(new Dimension(320, 20));\r
- jComboBoxLibraryClassName.setEnabled(true);\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 jComboBoxLibraryClassName;\r
+ return iComboBoxLibraryClassName;\r
}\r
\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.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
This is the default constructor\r
\r
**/\r
- public LibraryClassDefsDlg(LibraryClassIdentification inLibraryClassIdentification, IFrame iFrame, ModuleIdentification mid) {\r
+ public LibraryClassDefsDlg(LibraryClassIdentification inLibraryClassIdentification, IFrame iFrame,\r
+ ModuleIdentification mid) {\r
super(iFrame, true);\r
init(inLibraryClassIdentification, mid);\r
}\r
private void init(LibraryClassIdentification inLibraryClassIdentification, ModuleIdentification mid) {\r
init();\r
this.lcid = inLibraryClassIdentification;\r
- \r
+\r
//\r
// Init arch with module's arch\r
//\r
this.jArchCheckBox.setEnabledItems(wt.getModuleArch(mid));\r
- \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", "This module hasn't defined any package dependency, so there is no library class can be added");\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.generateComboBoxByVector(this.jComboBoxLibraryClassName,\r
- wt.getAllLibraryClassDefinitionsFromPackages(wt.getPackageDependenciesOfModule(mid)));\r
+\r
+ Tools\r
+ .generateComboBoxByVector(\r
+ this.iComboBoxLibraryClassName,\r
+ wt\r
+ .getAllLibraryClassDefinitionsFromPackages(wt\r
+ .getPackageDependenciesOfModule(mid)));\r
\r
if (lcid != null) {\r
- this.jComboBoxLibraryClassName.setSelectedItem(lcid.getLibraryClassName());\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
**/\r
public void setViewMode(boolean isView) {\r
if (isView) {\r
- this.jComboBoxLibraryClassName.setEnabled(!isView);\r
+ this.iComboBoxLibraryClassName.setEnabled(!isView);\r
this.jComboBoxUsage.setEnabled(!isView);\r
}\r
}\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.setBounds(new java.awt.Rectangle(12, 197, 168, 20));\r
jLabelFeatureFlag.setText("Feature Flag Expression");\r
jLabelFeatureFlag.setEnabled(false);\r
jLabelRecommendedInstanceGuid = new JLabel();\r
jContentPane.setLayout(null);\r
jContentPane.setPreferredSize(new java.awt.Dimension(495, 255));\r
\r
- jContentPane.add(getJComboBoxLibraryClassName(), null);\r
+ jContentPane.add(getIComboBoxLibraryClassName(), null);\r
jContentPane.add(jLabelUsage, null);\r
jContentPane.add(getJComboBoxUsage(), null);\r
jContentPane.add(jLabelLibraryClassName, null);\r
//\r
// Check LibraryClass\r
//\r
- if (this.jComboBoxLibraryClassName.getSelectedItem() == null) {\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.jComboBoxLibraryClassName.getSelectedItem().toString())) {\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
//\r
// Check RecommendedInstanceVersion\r
//\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.jComboBoxLibraryClassName.getSelectedItem().toString();\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