From 3b7a9058fdf4e730963d20fc5ce57794ac2e6bc7 Mon Sep 17 00:00:00 2001 From: hche10x Date: Thu, 21 Sep 2006 01:07:28 +0000 Subject: [PATCH] 1. Fix EDKT273 "Externs are not being grouped together in MSA Files" 2. Fix EDKT274 "Wrong display in Extern when selecting "Specification" git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1580 6f19259b-4bc3-4df7-8a09-765794883524 --- .../frameworkwizard/common/DataType.java | 4 + .../common/EnumerationData.java | 45 +- .../frameworkwizard/common/Tools.java | 17 + .../frameworkwizard/common/ui/IDialog.java | 6 +- .../frameworkwizard/common/ui/IFrame.java | 7 +- .../common/ui/IInternalFrame.java | 7 +- .../Externs/ExternsIdentification.java | 108 ++- .../Externs/ExternsVector.java | 130 +++- .../module/ui/ModuleExterns.java | 304 ++++---- .../frameworkwizard/module/ui/MsaHeader.java | 208 +++++- .../module/ui/dialog/ExternsDlg.java | 684 +++++++++++++++--- 11 files changed, 1202 insertions(+), 318 deletions(-) diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/DataType.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/DataType.java index dcf35617e6..6f95ca445d 100644 --- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/DataType.java +++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/DataType.java @@ -61,6 +61,10 @@ public class DataType { public static final String DOS_LINE_SEPARATOR = "\r\n"; public static final String UNIX_LINE_SEPARATOR = "\n"; + + public static final String LINE_SEPARATOR = UNIX_LINE_SEPARATOR; + + public static final String HTML_LINE_SEPARATOR = "
"; public static final String EMPTY_SELECT_ITEM = "----"; diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/EnumerationData.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/EnumerationData.java index 99f40384a3..680bd65c50 100644 --- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/EnumerationData.java +++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/EnumerationData.java @@ -24,19 +24,23 @@ public class EnumerationData { public final static String EXTERNS_SPECIFICATION = "Specification"; + public final static String EXTERNS_IMAGE = "Image"; public final static String EXTERNS_MODULE_ENTRY_POINT = "ModuleEntryPoint"; public final static String EXTERNS_MODULE_UNLOAD_IMAGE = "ModuleUnloadImage"; + public final static String EXTERNS_LIBRARY = "Library"; public final static String EXTERNS_CONSTRUCTOR = "Constructor"; public final static String EXTERNS_DESTRUCTOR = "Destructor"; + public final static String EXTERNS_DRIVER = "Driver"; public final static String EXTERNS_DRIVER_BINDING = "DriverBinding"; public final static String EXTERNS_COMPONENT_NAME = "ComponentName"; public final static String EXTERNS_DRIVER_CONFIG = "DriverConfig"; public final static String EXTERNS_DRIVER_DIAG = "DriverDiag"; - public final static String EXTERNS_SET_VIRTUAL_ADDRESS_MAP_CALL_BACK = "SetVirtualAddressMapCallBack"; - public final static String EXTERNS_EXIT_BOOT_SERVICES_CALL_BACK = "ExitBootServicesCallBack"; + public final static String EXTERNS_CALL_BACK = "Call Back"; + public final static String EXTERNS_VIRTUAL_ADDRESS_MAP_CALL_BACK = "VirtualAddressMap"; + public final static String EXTERNS_EXIT_BOOT_SERVICES_CALL_BACK = "ExitBootServices"; // // Common data @@ -669,28 +673,33 @@ public class EnumerationData { private void initExternTypes() { vExternTypes.removeAllElements(); - vExternTypes.addElement(EnumerationData.EXTERNS_PCD_IS_DRIVER); - vExternTypes.addElement(EnumerationData.EXTERNS_SPECIFICATION); + vExternTypes.addElement(EnumerationData.EXTERNS_IMAGE); + vExternTypes.addElement(EnumerationData.EXTERNS_DRIVER); + vExternTypes.addElement(EnumerationData.EXTERNS_LIBRARY); + vExternTypes.addElement(EnumerationData.EXTERNS_CALL_BACK); - vExternTypes.addElement(EnumerationData.EXTERNS_MODULE_ENTRY_POINT); - vExternTypes.addElement(EnumerationData.EXTERNS_MODULE_UNLOAD_IMAGE); - - vExternTypes.addElement(EnumerationData.EXTERNS_CONSTRUCTOR); - vExternTypes.addElement(EnumerationData.EXTERNS_DESTRUCTOR); - - vExternTypes.addElement(EnumerationData.EXTERNS_DRIVER_BINDING); - vExternTypes.addElement(EnumerationData.EXTERNS_COMPONENT_NAME); - vExternTypes.addElement(EnumerationData.EXTERNS_DRIVER_CONFIG); - vExternTypes.addElement(EnumerationData.EXTERNS_DRIVER_DIAG); +// vExternTypes.addElement(EnumerationData.EXTERNS_PCD_IS_DRIVER); +// +// vExternTypes.addElement(EnumerationData.EXTERNS_SPECIFICATION); +// +// vExternTypes.addElement(EnumerationData.EXTERNS_MODULE_ENTRY_POINT); +// vExternTypes.addElement(EnumerationData.EXTERNS_MODULE_UNLOAD_IMAGE); +// +// vExternTypes.addElement(EnumerationData.EXTERNS_CONSTRUCTOR); +// vExternTypes.addElement(EnumerationData.EXTERNS_DESTRUCTOR); - vExternTypes.addElement(EnumerationData.EXTERNS_SET_VIRTUAL_ADDRESS_MAP_CALL_BACK); - vExternTypes.addElement(EnumerationData.EXTERNS_EXIT_BOOT_SERVICES_CALL_BACK); +// vExternTypes.addElement(EnumerationData.EXTERNS_DRIVER_BINDING); +// vExternTypes.addElement(EnumerationData.EXTERNS_COMPONENT_NAME); +// vExternTypes.addElement(EnumerationData.EXTERNS_DRIVER_CONFIG); +// vExternTypes.addElement(EnumerationData.EXTERNS_DRIVER_DIAG); +// +// vExternTypes.addElement(EnumerationData.EXTERNS_SET_VIRTUAL_ADDRESS_MAP_CALL_BACK); +// vExternTypes.addElement(EnumerationData.EXTERNS_EXIT_BOOT_SERVICES_CALL_BACK); } private void initPcdDriverTypes() { - vPcdDriverTypes.removeAllElements(); - vPcdDriverTypes.addElement(DataType.EMPTY_SELECT_ITEM); + vPcdDriverTypes.removeAllElements(); vPcdDriverTypes.addElement("PEI_PCD_DRIVER"); vPcdDriverTypes.addElement("DXE_PCD_DRIVER"); } diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/Tools.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/Tools.java index 4b32baa7ef..e6647d24cc 100644 --- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/Tools.java +++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/Tools.java @@ -632,4 +632,21 @@ public class Tools { count = wholeString.split(searchString).length; return count; } + + /** + * Check the input data is empty or not + * + * @param strValue + * The input data which need be checked + * + * @retval true - The input data is empty + * @retval fals - The input data is not empty + * + */ + public static boolean isEmpty(String strValue) { + if (strValue.length() > 0) { + return false; + } + return true; + } } diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/ui/IDialog.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/ui/IDialog.java index 3272d207f3..1fc7c4c156 100644 --- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/ui/IDialog.java +++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/ui/IDialog.java @@ -23,6 +23,7 @@ import java.awt.event.ActionListener; import javax.swing.JDialog; import org.tianocore.frameworkwizard.common.DataType; +import org.tianocore.frameworkwizard.common.Tools; /** The class is used to override Dialog to provides customized interfaces @@ -148,10 +149,7 @@ public class IDialog extends JDialog implements ActionListener { **/ public boolean isEmpty(String strValue) { - if (strValue.length() > 0) { - return false; - } - return true; + return Tools.isEmpty(strValue); } /** diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/ui/IFrame.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/ui/IFrame.java index 198841941b..51f85d6771 100644 --- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/ui/IFrame.java +++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/ui/IFrame.java @@ -27,6 +27,8 @@ import java.awt.event.WindowListener; import javax.swing.JFrame; import javax.swing.JOptionPane; +import org.tianocore.frameworkwizard.common.Tools; + /** The class is used to override Frame to provides customized interfaces It extends JFrame implements ActionListener and WindowListener @@ -228,10 +230,7 @@ public class IFrame extends JFrame implements ActionListener, WindowListener, Co **/ public boolean isEmpty(String strValue) { - if (strValue.length() > 0) { - return false; - } - return true; + return Tools.isEmpty(strValue); } /** diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/ui/IInternalFrame.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/ui/IInternalFrame.java index df58142728..f0d018605d 100644 --- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/ui/IInternalFrame.java +++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/ui/IInternalFrame.java @@ -35,6 +35,8 @@ import javax.swing.event.ListSelectionListener; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; +import org.tianocore.frameworkwizard.common.Tools; + /** * The class is used to override JInternalFrame to provides customized * interfaces It extends JInternalFrame implements ActionListener @@ -124,10 +126,7 @@ public class IInternalFrame extends JInternalFrame implements ActionListener, Co * */ public boolean isEmpty(String strValue) { - if (strValue.length() > 0) { - return false; - } - return true; + return Tools.isEmpty(strValue); } public void actionPerformed(ActionEvent arg0) { diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/Externs/ExternsIdentification.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/Externs/ExternsIdentification.java index 59b85d7e16..31979ceb88 100644 --- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/Externs/ExternsIdentification.java +++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/Externs/ExternsIdentification.java @@ -17,40 +17,57 @@ package org.tianocore.frameworkwizard.module.Identifications.Externs; import java.util.Vector; +import org.tianocore.frameworkwizard.common.EnumerationData; + public class ExternsIdentification { // // Define class members // - private String name = null; + private String name0 = null; + + private String name1 = null; + + private String name2 = null; + + private String name3 = null; private String type = null; - + private Vector supArchList = null; private String featureFlag = null; - public ExternsIdentification(String arg0, String arg1, String arg2, Vector arg3) { - this.name = (arg0 == null ? "" : arg0); + public ExternsIdentification(String arg0, String arg1) { + this.name0 = (arg0 == null ? "" : arg0); this.type = (arg1 == null ? "" : arg1); - this.featureFlag = (arg2 == null ? "" : arg2); - this.supArchList = arg3; } - public String getFeatureFlag() { - return featureFlag; + public ExternsIdentification(String arg0, String arg1, String arg2, String arg3, Vector arg4) { + this.name0 = (arg0 == null ? "" : arg0); + this.name1 = (arg1 == null ? "" : arg1); + this.type = (arg2 == null ? "" : arg2); + this.featureFlag = (arg3 == null ? "" : arg3); + this.supArchList = arg4; } - public void setFeatureFlag(String featureFlag) { - this.featureFlag = featureFlag; + public ExternsIdentification(String arg0, String arg1, String arg2, String arg3, String arg4, String arg5, + Vector arg6) { + this.name0 = (arg0 == null ? "" : arg0); + this.name1 = (arg1 == null ? "" : arg1); + this.name2 = (arg2 == null ? "" : arg2); + this.name3 = (arg3 == null ? "" : arg3); + this.type = (arg4 == null ? "" : arg4); + this.featureFlag = (arg5 == null ? "" : arg5); + this.supArchList = arg6; } - public String getName() { - return name; + public String getFeatureFlag() { + return featureFlag; } - public void setName(String name) { - this.name = name; + public void setFeatureFlag(String featureFlag) { + this.featureFlag = featureFlag; } public Vector getSupArchList() { @@ -60,11 +77,36 @@ public class ExternsIdentification { public void setSupArchList(Vector supArchList) { this.supArchList = supArchList; } - + public boolean equals(ExternsIdentification pi) { - if (this.name.equals(pi.name)) { - return true; + if (this.type.equals(pi.type)) { + if (this.type.equals(EnumerationData.EXTERNS_SPECIFICATION)) { + if (this.name0.equals(pi.name0)) { + return true; + } + } + if (this.type.equals(EnumerationData.EXTERNS_IMAGE)) { + if (this.name0.equals(pi.name0) && this.name1.equals(pi.name1)) { + return true; + } + } + if (this.type.equals(EnumerationData.EXTERNS_LIBRARY)) { + if (this.name0.equals(pi.name0) && this.name1.equals(pi.name1)) { + return true; + } + } + if (this.type.equals(EnumerationData.EXTERNS_CALL_BACK)) { + if (this.name0.equals(pi.name0) && this.name1.equals(pi.name1)) { + return true; + } + } + if (this.type.equals(EnumerationData.EXTERNS_DRIVER)) { + if (this.name0.equals(pi.name0) && this.name1.equals(pi.name1) && this.name2.equals(pi.name2) && this.name3.equals(pi.name3)) { + return true; + } + } } + return false; } @@ -75,4 +117,36 @@ public class ExternsIdentification { public void setType(String type) { this.type = type; } + + public String getName0() { + return name0; + } + + public void setName0(String name0) { + this.name0 = name0; + } + + public String getName1() { + return name1; + } + + public void setName1(String name1) { + this.name1 = name1; + } + + public String getName2() { + return name2; + } + + public void setName2(String name2) { + this.name2 = name2; + } + + public String getName3() { + return name3; + } + + public void setName3(String name3) { + this.name3 = name3; + } } diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/Externs/ExternsVector.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/Externs/ExternsVector.java index 93b2507f42..dbc2035fa9 100644 --- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/Externs/ExternsVector.java +++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/Externs/ExternsVector.java @@ -16,6 +16,7 @@ package org.tianocore.frameworkwizard.module.Identifications.Externs; import java.util.Vector; +import org.tianocore.frameworkwizard.common.DataType; import org.tianocore.frameworkwizard.common.EnumerationData; public class ExternsVector { @@ -31,15 +32,6 @@ public class ExternsVector { return -1; } - public int findExterns(String name) { - for (int index = 0; index < vExterns.size(); index++) { - if (vExterns.elementAt(index).getName().equals(name)) { - return index; - } - } - return -1; - } - public ExternsIdentification getExterns(int index) { if (index > -1) { return vExterns.elementAt(index); @@ -49,21 +41,7 @@ public class ExternsVector { } public void addExterns(ExternsIdentification arg0) { - boolean isExistPcd = false; - if (arg0.getType().equals(EnumerationData.EXTERNS_PCD_IS_DRIVER)) { - for (int index = 0; index < size(); index++) { - if (getExterns(index).getType().equals(EnumerationData.EXTERNS_PCD_IS_DRIVER)) { - setExterns(arg0, index); - isExistPcd = true; - break; - } - } - if (!isExistPcd) { - vExterns.addElement(arg0); - } - } else { - vExterns.addElement(arg0); - } + vExterns.addElement(arg0); } public void setExterns(ExternsIdentification arg0, int arg1) { @@ -91,22 +69,106 @@ public class ExternsVector { vExterns = Externs; } - public Vector getExternsName() { - Vector v = new Vector(); - for (int index = 0; index < this.vExterns.size(); index++) { - v.addElement(vExterns.get(index).getName()); - } - return v; - } - public int size() { return this.vExterns.size(); } public Vector toStringVector(int index) { Vector v = new Vector(); - v.addElement(getExterns(index).getName()); - v.addElement(getExterns(index).getType()); + + // + // For Specification + // + if (this.getExterns(index).getType().equals(EnumerationData.EXTERNS_SPECIFICATION)) { + v.addElement(getExterns(index).getType()); + v.addElement(getExterns(index).getType() + " Name"); + v.addElement(getExterns(index).getName0()); + return v; + } + + // + // For Image + // + if (this.getExterns(index).getType().equals(EnumerationData.EXTERNS_IMAGE)) { + v.addElement(getExterns(index).getType()); + String name = ""; + String value = ""; + + name = EnumerationData.EXTERNS_MODULE_ENTRY_POINT; + value = this.getExterns(index).getName0(); + name = name + DataType.HTML_LINE_SEPARATOR + EnumerationData.EXTERNS_MODULE_UNLOAD_IMAGE; + value = value + DataType.HTML_LINE_SEPARATOR + this.getExterns(index).getName1() + + DataType.HTML_LINE_SEPARATOR; + + v.addElement("" + name + ""); + v.addElement("" + value + ""); + return v; + } + + // + // For Library + // + if (this.getExterns(index).getType().equals(EnumerationData.EXTERNS_LIBRARY)) { + v.addElement(getExterns(index).getType()); + String name = ""; + String value = ""; + + name = EnumerationData.EXTERNS_CONSTRUCTOR; + value = this.getExterns(index).getName0(); + name = name + DataType.HTML_LINE_SEPARATOR + EnumerationData.EXTERNS_DESTRUCTOR; + value = value + DataType.HTML_LINE_SEPARATOR + this.getExterns(index).getName1() + + DataType.HTML_LINE_SEPARATOR; + + v.addElement("" + name + ""); + v.addElement("" + value + ""); + return v; + } + + // + // For Driver + // + if (this.getExterns(index).getType().equals(EnumerationData.EXTERNS_DRIVER)) { + v.addElement(getExterns(index).getType()); + String name = ""; + String value = ""; + + name = EnumerationData.EXTERNS_DRIVER_BINDING; + value = this.getExterns(index).getName0(); + name = name + DataType.HTML_LINE_SEPARATOR + EnumerationData.EXTERNS_COMPONENT_NAME; + value = value + DataType.HTML_LINE_SEPARATOR + this.getExterns(index).getName1(); + name = name + DataType.HTML_LINE_SEPARATOR + EnumerationData.EXTERNS_DRIVER_CONFIG; + value = value + DataType.HTML_LINE_SEPARATOR + this.getExterns(index).getName2(); + name = name + DataType.HTML_LINE_SEPARATOR + EnumerationData.EXTERNS_DRIVER_DIAG; + value = value + DataType.HTML_LINE_SEPARATOR + this.getExterns(index).getName3() + + DataType.HTML_LINE_SEPARATOR; + + v.addElement("" + name + ""); + v.addElement("" + value + ""); + return v; + } + + // + // For Call Back + // + if (this.getExterns(index).getType().equals(EnumerationData.EXTERNS_CALL_BACK)) { + v.addElement(getExterns(index).getType()); + String name = ""; + String value = ""; + + name = EnumerationData.EXTERNS_VIRTUAL_ADDRESS_MAP_CALL_BACK; + value = this.getExterns(index).getName0(); + name = name + DataType.HTML_LINE_SEPARATOR + EnumerationData.EXTERNS_EXIT_BOOT_SERVICES_CALL_BACK; + value = value + DataType.HTML_LINE_SEPARATOR + this.getExterns(index).getName1() + + DataType.HTML_LINE_SEPARATOR; + + v.addElement("" + name + ""); + v.addElement("" + value + ""); + return v; + } + + // + // Return a empty v + // return v; } } diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleExterns.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleExterns.java index d885028bd8..cc8a81a167 100644 --- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleExterns.java +++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleExterns.java @@ -29,7 +29,6 @@ import javax.swing.ListSelectionModel; import javax.swing.event.ListSelectionEvent; import org.tianocore.ExternsDocument; -import org.tianocore.PcdDriverTypes; import org.tianocore.ExternsDocument.Externs; import org.tianocore.ExternsDocument.Externs.Extern; import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea; @@ -184,8 +183,9 @@ public class ModuleExterns extends IInternalFrame implements ItemListener { jTable = new JTable(model); jTable.setRowHeight(20); - model.addColumn("Name"); model.addColumn("Type"); + model.addColumn("Name"); + model.addColumn("Value"); jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); jTable.getSelectionModel().addListSelectionListener(this); @@ -195,10 +195,6 @@ public class ModuleExterns extends IInternalFrame implements ItemListener { return jTable; } - public static void main(String[] args) { - - } - /** This method initializes this @@ -221,17 +217,6 @@ public class ModuleExterns extends IInternalFrame implements ItemListener { this.externs = inExterns; if (this.externs != null) { - // - // Get PcdIsDriver - // - if (this.externs.getPcdIsDriver() != null) { - String arg0 = this.externs.getPcdIsDriver().toString(); - String arg1 = EnumerationData.EXTERNS_PCD_IS_DRIVER; - - id = new ExternsIdentification(arg0, arg1, null, null); - vid.addExterns(id); - } - // // Get specification // @@ -240,7 +225,7 @@ public class ModuleExterns extends IInternalFrame implements ItemListener { String arg0 = externs.getSpecificationList().get(index); String arg1 = EnumerationData.EXTERNS_SPECIFICATION; - id = new ExternsIdentification(arg0, arg1, null, null); + id = new ExternsIdentification(arg0, arg1); vid.addExterns(id); } } @@ -250,57 +235,63 @@ public class ModuleExterns extends IInternalFrame implements ItemListener { // if (this.externs.getExternList().size() > 0) { for (int index = 0; index < this.externs.getExternList().size(); index++) { - String arg0 = null; - String arg1 = null; - if (this.externs.getExternList().get(index).getModuleEntryPoint() != null) { - arg0 = this.externs.getExternList().get(index).getModuleEntryPoint(); - arg1 = EnumerationData.EXTERNS_MODULE_ENTRY_POINT; - } - if (this.externs.getExternList().get(index).getModuleUnloadImage() != null) { - arg0 = this.externs.getExternList().get(index).getModuleUnloadImage(); - arg1 = EnumerationData.EXTERNS_MODULE_UNLOAD_IMAGE; - } + // + // Get common data + // + String featureFlag = externs.getExternList().get(index).getFeatureFlag(); + Vector arch = Tools + .convertListToVector(externs.getExternList().get(index).getSupArchList()); - if (this.externs.getExternList().get(index).getConstructor() != null) { - arg0 = this.externs.getExternList().get(index).getConstructor(); - arg1 = EnumerationData.EXTERNS_CONSTRUCTOR; + // + // Get Image data + // + if (this.externs.getExternList().get(index).getModuleEntryPoint() != null + || this.externs.getExternList().get(index).getModuleUnloadImage() != null) { + String moduleEntryPoint = this.externs.getExternList().get(index).getModuleEntryPoint(); + String moduleUnloadImage = this.externs.getExternList().get(index).getModuleUnloadImage(); + String type = EnumerationData.EXTERNS_IMAGE; + id = new ExternsIdentification(moduleEntryPoint, moduleUnloadImage, type, featureFlag, arch); } - if (this.externs.getExternList().get(index).getDestructor() != null) { - arg0 = this.externs.getExternList().get(index).getDestructor(); - arg1 = EnumerationData.EXTERNS_DESTRUCTOR; + + // + // Get Library Data + // + if (this.externs.getExternList().get(index).getConstructor() != null + || this.externs.getExternList().get(index).getDestructor() != null) { + String constructor = this.externs.getExternList().get(index).getConstructor(); + String destructor = this.externs.getExternList().get(index).getDestructor(); + String type = EnumerationData.EXTERNS_LIBRARY; + id = new ExternsIdentification(constructor, destructor, type, featureFlag, arch); } + // + // Get Driver Data + // if (this.externs.getExternList().get(index).getDriverBinding() != null) { - arg0 = this.externs.getExternList().get(index).getDriverBinding(); - arg1 = EnumerationData.EXTERNS_DRIVER_BINDING; - } - if (this.externs.getExternList().get(index).getComponentName() != null) { - arg0 = this.externs.getExternList().get(index).getComponentName(); - arg1 = EnumerationData.EXTERNS_COMPONENT_NAME; - } - if (this.externs.getExternList().get(index).getDriverConfig() != null) { - arg0 = this.externs.getExternList().get(index).getDriverConfig(); - arg1 = EnumerationData.EXTERNS_DRIVER_CONFIG; - } - if (this.externs.getExternList().get(index).getDriverDiag() != null) { - arg0 = this.externs.getExternList().get(index).getDriverDiag(); - arg1 = EnumerationData.EXTERNS_DRIVER_DIAG; + String driverBinding = this.externs.getExternList().get(index).getDriverBinding(); + String componentName = this.externs.getExternList().get(index).getComponentName(); + String driverConfig = this.externs.getExternList().get(index).getDriverConfig(); + String driverDiag = this.externs.getExternList().get(index).getDriverDiag(); + String type = EnumerationData.EXTERNS_DRIVER; + id = new ExternsIdentification(driverBinding, componentName, driverConfig, driverDiag, type, + featureFlag, arch); } - if (this.externs.getExternList().get(index).getSetVirtualAddressMapCallBack() != null) { - arg0 = this.externs.getExternList().get(index).getSetVirtualAddressMapCallBack(); - arg1 = EnumerationData.EXTERNS_SET_VIRTUAL_ADDRESS_MAP_CALL_BACK; - } - if (this.externs.getExternList().get(index).getExitBootServicesCallBack() != null) { - arg0 = this.externs.getExternList().get(index).getExitBootServicesCallBack(); - arg1 = EnumerationData.EXTERNS_EXIT_BOOT_SERVICES_CALL_BACK; + // + // Get Call Back Data + // + if (this.externs.getExternList().get(index).getSetVirtualAddressMapCallBack() != null + || this.externs.getExternList().get(index).getExitBootServicesCallBack() != null) { + String virtualAddressMap = this.externs.getExternList().get(index) + .getSetVirtualAddressMapCallBack(); + String exitBootServices = this.externs.getExternList().get(index).getExitBootServicesCallBack(); + String type = EnumerationData.EXTERNS_CALL_BACK; + id = new ExternsIdentification(virtualAddressMap, exitBootServices, type, featureFlag, arch); } - String arg2 = externs.getExternList().get(index).getFeatureFlag(); - Vector arg3 = Tools - .convertListToVector(externs.getExternList().get(index).getSupArchList()); - - id = new ExternsIdentification(arg0, arg1, arg2, arg3); + // + // Add id to vector + // vid.addExterns(id); } } @@ -391,7 +382,45 @@ public class ModuleExterns extends IInternalFrame implements ItemListener { if (vid.size() > 0) { for (int index = 0; index < vid.size(); index++) { + int line = 1; + + // + // For Specification + // + if (vid.getExterns(index).getType().equals(EnumerationData.EXTERNS_SPECIFICATION)) { + line = 1; + } + + // + // For Image + // + if (vid.getExterns(index).getType().equals(EnumerationData.EXTERNS_IMAGE)) { + line = 2; + } + + // + // For Library + // + if (vid.getExterns(index).getType().equals(EnumerationData.EXTERNS_LIBRARY)) { + line = 2; + } + + // + // For Driver + // + if (vid.getExterns(index).getType().equals(EnumerationData.EXTERNS_DRIVER)) { + line = 4; + } + + // + // For Call Back + // + if (vid.getExterns(index).getType().equals(EnumerationData.EXTERNS_CALL_BACK)) { + line = 2; + } + model.addRow(vid.toStringVector(index)); + jTable.setRowHeight(index, line * 18); } } this.jTable.repaint(); @@ -439,107 +468,116 @@ public class ModuleExterns extends IInternalFrame implements ItemListener { try { int count = this.vid.size(); - this.externs = Externs.Factory.newInstance(); - // // - // // Save PcdIsDriver first - // // - // if (!this.jComboBoxPcdIsDriver.getSelectedItem().toString().equals(DataType.EMPTY_SELECT_ITEM)) { - // externs.setPcdIsDriver(PcdDriverTypes.Enum.forString(this.jComboBoxPcdIsDriver.getSelectedItem() - // .toString())); - // } + // + // Save pcd and flash map information first + // + Externs ex = Externs.Factory.newInstance(); + if (this.externs.getPcdIsDriver() != null) { + ex.setPcdIsDriver(this.externs.getPcdIsDriver()); + } + if (this.externs.getTianoR8FlashMapH()) { + ex.setTianoR8FlashMapH(this.externs.getTianoR8FlashMapH()); + } + this.externs = ex; + // + // Save externs + // if (count > 0) { for (int index = 0; index < count; index++) { - // - // Save Pcd Is Driver - // - if (vid.getExterns(index).getType().equals(EnumerationData.EXTERNS_PCD_IS_DRIVER)) { - externs.setPcdIsDriver(PcdDriverTypes.Enum.forString(vid.getExterns(index).getName())); - continue; - } - // // Save specfication // if (vid.getExterns(index).getType().equals(EnumerationData.EXTERNS_SPECIFICATION)) { - if (!isEmpty(vid.getExterns(index).getName())) { + if (!isEmpty(vid.getExterns(index).getName0())) { this.externs.addNewSpecification(); this.externs.setSpecificationArray(externs.getSpecificationList().size() - 1, - vid.getExterns(index).getName()); + vid.getExterns(index).getName0()); + continue; } - } else { - // - // Save extern - // - Extern e = Extern.Factory.newInstance(); - - if (vid.getExterns(index).getType().equals(EnumerationData.EXTERNS_MODULE_ENTRY_POINT)) { - if (!isEmpty(vid.getExterns(index).getName())) { - e.setModuleEntryPoint(vid.getExterns(index).getName()); + } + + Extern e = Extern.Factory.newInstance(); + // + // Save image + // + if (vid.getExterns(index).getType().equals(EnumerationData.EXTERNS_IMAGE)) { + if (!isEmpty(vid.getExterns(index).getName0()) || !isEmpty(vid.getExterns(index).getName1())) { + e = Extern.Factory.newInstance(); + if (!isEmpty(vid.getExterns(index).getName0())) { + e.setModuleEntryPoint(vid.getExterns(index).getName0()); } - } - if (vid.getExterns(index).getType().equals(EnumerationData.EXTERNS_MODULE_UNLOAD_IMAGE)) { - if (!isEmpty(vid.getExterns(index).getName())) { - e.setModuleUnloadImage(vid.getExterns(index).getName()); + if (!isEmpty(vid.getExterns(index).getName1())) { + e.setModuleUnloadImage(vid.getExterns(index).getName1()); } } + } - if (vid.getExterns(index).getType().equals(EnumerationData.EXTERNS_CONSTRUCTOR)) { - if (!isEmpty(vid.getExterns(index).getName())) { - e.setConstructor(vid.getExterns(index).getName()); + // + // Save library + // + if (vid.getExterns(index).getType().equals(EnumerationData.EXTERNS_LIBRARY)) { + if (!isEmpty(vid.getExterns(index).getName0()) || !isEmpty(vid.getExterns(index).getName1())) { + e = Extern.Factory.newInstance(); + if (!isEmpty(vid.getExterns(index).getName0())) { + e.setConstructor(vid.getExterns(index).getName0()); } - } - if (vid.getExterns(index).getType().equals(EnumerationData.EXTERNS_DESTRUCTOR)) { - if (!isEmpty(vid.getExterns(index).getName())) { - e.setDestructor(vid.getExterns(index).getName()); + if (!isEmpty(vid.getExterns(index).getName1())) { + e.setDestructor(vid.getExterns(index).getName1()); } } + } - if (vid.getExterns(index).getType().equals(EnumerationData.EXTERNS_DRIVER_BINDING)) { - if (!isEmpty(vid.getExterns(index).getName())) { - e.setDriverBinding(vid.getExterns(index).getName()); + // + // Save call back + // + if (vid.getExterns(index).getType().equals(EnumerationData.EXTERNS_CALL_BACK)) { + if (!isEmpty(vid.getExterns(index).getName0()) || !isEmpty(vid.getExterns(index).getName1())) { + e = Extern.Factory.newInstance(); + if (!isEmpty(vid.getExterns(index).getName0())) { + e.setSetVirtualAddressMapCallBack(vid.getExterns(index).getName0()); } - } - if (vid.getExterns(index).getType().equals(EnumerationData.EXTERNS_COMPONENT_NAME)) { - if (!isEmpty(vid.getExterns(index).getName())) { - e.setComponentName(vid.getExterns(index).getName()); + if (!isEmpty(vid.getExterns(index).getName1())) { + e.setExitBootServicesCallBack(vid.getExterns(index).getName1()); } } - if (vid.getExterns(index).getType().equals(EnumerationData.EXTERNS_DRIVER_CONFIG)) { - if (!isEmpty(vid.getExterns(index).getName())) { - e.setDriverConfig(vid.getExterns(index).getName()); + } + + // + // Save driver + // + if (vid.getExterns(index).getType().equals(EnumerationData.EXTERNS_DRIVER)) { + if (!isEmpty(vid.getExterns(index).getName0()) || !isEmpty(vid.getExterns(index).getName1()) + || !isEmpty(vid.getExterns(index).getName2()) || !isEmpty(vid.getExterns(index).getName3())) { + e = Extern.Factory.newInstance(); + if (!isEmpty(vid.getExterns(index).getName0())) { + e.setDriverBinding(vid.getExterns(index).getName0()); } - } - if (vid.getExterns(index).getType().equals(EnumerationData.EXTERNS_DRIVER_DIAG)) { - if (!isEmpty(vid.getExterns(index).getName())) { - e.setDriverDiag(vid.getExterns(index).getName()); + if (!isEmpty(vid.getExterns(index).getName1())) { + e.setComponentName(vid.getExterns(index).getName1()); } - } - - if (vid.getExterns(index).getType() - .equals(EnumerationData.EXTERNS_SET_VIRTUAL_ADDRESS_MAP_CALL_BACK)) { - if (!isEmpty(vid.getExterns(index).getName())) { - e.setSetVirtualAddressMapCallBack(vid.getExterns(index).getName()); + if (!isEmpty(vid.getExterns(index).getName2())) { + e.setDriverConfig(vid.getExterns(index).getName2()); } - } - if (vid.getExterns(index).getType() - .equals(EnumerationData.EXTERNS_EXIT_BOOT_SERVICES_CALL_BACK)) { - if (!isEmpty(vid.getExterns(index).getName())) { - e.setExitBootServicesCallBack(vid.getExterns(index).getName()); + if (!isEmpty(vid.getExterns(index).getName3())) { + e.setDriverDiag(vid.getExterns(index).getName3()); } } + } - if (!isEmpty(vid.getExterns(index).getFeatureFlag())) { - e.setFeatureFlag(vid.getExterns(index).getFeatureFlag()); - } - if (vid.getExterns(index).getSupArchList() != null - && vid.getExterns(index).getSupArchList().size() > 0) { - e.setSupArchList(vid.getExterns(index).getSupArchList()); - } - - this.externs.addNewExtern(); - this.externs.setExternArray(this.externs.getExternList().size() - 1, e); + // + // Save common data + // + if (!isEmpty(vid.getExterns(index).getFeatureFlag())) { + e.setFeatureFlag(vid.getExterns(index).getFeatureFlag()); } + if (vid.getExterns(index).getSupArchList() != null + && vid.getExterns(index).getSupArchList().size() > 0) { + e.setSupArchList(vid.getExterns(index).getSupArchList()); + } + + this.externs.addNewExtern(); + this.externs.setExternArray(this.externs.getExternList().size() - 1, e); } } diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/MsaHeader.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/MsaHeader.java index 9cf0d380e0..70e2166fbe 100644 --- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/MsaHeader.java +++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/MsaHeader.java @@ -29,10 +29,12 @@ import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; +import org.tianocore.ExternsDocument; import org.tianocore.ModuleDefinitionsDocument; import org.tianocore.ModuleSurfaceAreaDocument; import org.tianocore.ModuleTypeDef; import org.tianocore.MsaHeaderDocument; +import org.tianocore.PcdDriverTypes; import org.tianocore.LicenseDocument.License; import org.tianocore.frameworkwizard.common.DataType; import org.tianocore.frameworkwizard.common.DataValidation; @@ -58,9 +60,9 @@ public class MsaHeader extends IInternalFrame { private static final long serialVersionUID = -8152099582923006900L; private int dialogWidth = 500; - + private int dialogHeight = 630; - + // //Define class members // @@ -152,8 +154,6 @@ public class MsaHeader extends IInternalFrame { private StarLabel jStarLabel14 = null; -// private StarLabel jStarLabel15 = null; - private JCheckBox jCheckBoxIa32 = null; private JCheckBox jCheckBoxX64 = null; @@ -165,7 +165,13 @@ public class MsaHeader extends IInternalFrame { private JCheckBox jCheckBoxArm = null; private JCheckBox jCheckBoxPpc = null; - + + private JComboBox jComboBoxPcdIsDriver = null; + + private JCheckBox jCheckBoxPcd = null; + + private JCheckBox jCheckBoxFlashMap = null; + // // Not used for UI // @@ -175,6 +181,8 @@ public class MsaHeader extends IInternalFrame { private ModuleSurfaceAreaDocument.ModuleSurfaceArea msa = null; + private ExternsDocument.Externs ex = null; + private OpeningModuleType omt = null; private EnumerationData ed = new EnumerationData(); @@ -394,12 +402,11 @@ public class MsaHeader extends IInternalFrame { private JTextField getJTextFieldSpecification() { if (jTextFieldSpecification == null) { jTextFieldSpecification = new JTextField(); - + jTextFieldSpecification.setPreferredSize(new java.awt.Dimension(320, 20)); jTextFieldSpecification.setText("FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052"); jTextFieldSpecification.setBorder(null); - - + jTextFieldSpecification.setSize(new java.awt.Dimension(320, 20)); jTextFieldSpecification.setLocation(new java.awt.Point(2, dialogHeight - 30)); jTextFieldSpecification.setEditable(false); @@ -622,6 +629,23 @@ public class MsaHeader extends IInternalFrame { return jTextFieldOutputFileBasename; } + /** + * This method initializes jComboBoxPcdIsDriver + * + * @return javax.swing.JComboBox + */ + private JComboBox getJComboBoxPcdIsDriver() { + if (jComboBoxPcdIsDriver == null) { + jComboBoxPcdIsDriver = new JComboBox(); + jComboBoxPcdIsDriver.setPreferredSize(new java.awt.Dimension(320, 20)); + jComboBoxPcdIsDriver.setBounds(new java.awt.Rectangle(160, 530, 320, 20)); + jComboBoxPcdIsDriver.addItemListener(this); + jComboBoxPcdIsDriver.setEnabled(false); + Tools.generateComboBoxByVector(jComboBoxPcdIsDriver, ed.getVPcdDriverTypes()); + } + return jComboBoxPcdIsDriver; + } + /** This is the default constructor @@ -654,8 +678,14 @@ public class MsaHeader extends IInternalFrame { md.setSupportedArchitectures(ed.getVSupportedArchitectures()); msa.setModuleDefinitions(md); } + + // + // Init items of Header, Definitions and Externs + // init(msa.getMsaHeader()); init(msa.getModuleDefinitions()); + init(msa.getExterns()); + this.setVisible(true); this.setViewMode(false); } @@ -767,6 +797,25 @@ public class MsaHeader extends IInternalFrame { } } + /** + This method initializes this + Fill values to all fields if these values are not empty + + @param inEx The input data of ExternsDocument.Externs + + **/ + private void init(ExternsDocument.Externs inEx) { + if (inEx != null) { + this.ex = inEx; + if (ex.getPcdIsDriver() != null) { + this.jCheckBoxPcd.setSelected(true); + this.jComboBoxPcdIsDriver.setEnabled(true); + this.jComboBoxPcdIsDriver.setSelectedItem(ex.getPcdIsDriver()); + } + this.jCheckBoxFlashMap.setSelected(ex.getTianoR8FlashMapH()); + } + } + /** This method initializes jContentPane @@ -827,7 +876,7 @@ public class MsaHeader extends IInternalFrame { jContentPane = new JPanel(); jContentPane.setLayout(null); jContentPane.setPreferredSize(new java.awt.Dimension(dialogWidth - 10, dialogHeight - 10)); - + jContentPane.addFocusListener(this); jContentPane.add(jLabelBaseName, null); @@ -840,7 +889,7 @@ public class MsaHeader extends IInternalFrame { jContentPane.add(jLabelLicense, null); jContentPane.add(jLabelCopyright, null); jContentPane.add(jLabelDescription, null); -// jContentPane.add(jLabelSpecification, null); + // jContentPane.add(jLabelSpecification, null); jContentPane.add(getJTextFieldSpecification(), null); jContentPane.add(getJButtonOk(), null); jContentPane.add(getJButtonCancel(), null); @@ -880,8 +929,8 @@ public class MsaHeader extends IInternalFrame { jStarLabel13.setLocation(new java.awt.Point(0, 480)); jStarLabel14 = new StarLabel(); jStarLabel14.setLocation(new java.awt.Point(0, 505)); -// jStarLabel15 = new StarLabel(); -// jStarLabel15.setLocation(new java.awt.Point(0, 530)); + // jStarLabel15 = new StarLabel(); + // jStarLabel15.setLocation(new java.awt.Point(0, 530)); jContentPane.add(jStarLabel1, null); jContentPane.add(jStarLabel2, null); @@ -894,7 +943,7 @@ public class MsaHeader extends IInternalFrame { jContentPane.add(jStarLabel12, null); jContentPane.add(jStarLabel13, null); jContentPane.add(jStarLabel14, null); -// jContentPane.add(jStarLabel15, null); + // jContentPane.add(jStarLabel15, null); jContentPane.add(getJScrollPaneCopyright(), null); jContentPane.add(getJCheckBoxIa32(), null); @@ -903,6 +952,10 @@ public class MsaHeader extends IInternalFrame { jContentPane.add(getJCheckBoxEbc(), null); jContentPane.add(getJCheckBoxArm(), null); jContentPane.add(getJCheckBoxPpc(), null); + + jContentPane.add(getJCheckBoxPcd(), null); + jContentPane.add(getJComboBoxPcdIsDriver(), null); + jContentPane.add(getJCheckBoxFlashMap(), null); } return jContentPane; } @@ -923,14 +976,20 @@ public class MsaHeader extends IInternalFrame { this.setEdited(true); this.dispose(); } + if (arg0.getSource() == jButtonCancel) { this.setEdited(false); } + if (arg0.getSource() == jButtonGenerateGuid) { jTextFieldGuid.setText(Tools.generateUuidString()); jTextFieldGuid.requestFocus(); jButtonGenerateGuid.requestFocus(); } + + if (arg0.getSource() == this.jCheckBoxPcd) { + this.jComboBoxPcdIsDriver.setEnabled(this.jCheckBoxPcd.isSelected()); + } } /** @@ -997,7 +1056,8 @@ public class MsaHeader extends IInternalFrame { return false; } if (!DataValidation.isAbstract(this.jTextFieldAbstract.getText())) { - Log.wrn("Update Msa Header", "Incorrect data type for Abstract, is should be a sentence describing the module."); + Log.wrn("Update Msa Header", + "Incorrect data type for Abstract, is should be a sentence describing the module."); //this.jTextFieldAbstract.requestFocus(); return false; } @@ -1119,9 +1179,10 @@ public class MsaHeader extends IInternalFrame { Tools.resizeComponentWidth(this.jComboBoxModuleType, intCurrentWidth, intPreferredWidth); Tools.resizeComponentWidth(this.jComboBoxBinaryModule, intCurrentWidth, intPreferredWidth); Tools.resizeComponentWidth(this.jTextFieldOutputFileBasename, intCurrentWidth, intPreferredWidth); + Tools.resizeComponentWidth(this.jComboBoxPcdIsDriver, intCurrentWidth, intPreferredWidth); Tools.relocateComponentX(this.jButtonGenerateGuid, intCurrentWidth, intPreferredWidth, - DataType.SPACE_TO_RIGHT_FOR_GENERATE_BUTTON); + DataType.SPACE_TO_RIGHT_FOR_GENERATE_BUTTON); } public void focusLost(FocusEvent arg0) { @@ -1347,6 +1408,92 @@ public class MsaHeader extends IInternalFrame { } } + // + // Check Pcd is Driver + // + if (arg0.getSource() == this.jCheckBoxPcd) { + if ((this.ex == null) && this.jCheckBoxPcd.isSelected()) { + this.ex = ExternsDocument.Externs.Factory.newInstance(); + this.ex.setPcdIsDriver(PcdDriverTypes.Enum.forString(this.jComboBoxPcdIsDriver.getSelectedItem() + .toString())); + this.msa.setExterns(this.ex); + } + + if ((this.ex != null) && (this.ex.getPcdIsDriver() == null) && this.jCheckBoxPcd.isSelected()) { + this.ex.setPcdIsDriver(PcdDriverTypes.Enum.forString(this.jComboBoxPcdIsDriver.getSelectedItem() + .toString())); + this.msa.setExterns(this.ex); + } + + if ((this.ex != null) && (this.ex.getPcdIsDriver() != null)) { + if (this.jCheckBoxPcd.isSelected() + && !this.jComboBoxPcdIsDriver.getSelectedItem().toString().equals( + this.ex.getPcdIsDriver() + .toString())) { + this.ex.setPcdIsDriver(PcdDriverTypes.Enum.forString(this.jComboBoxPcdIsDriver.getSelectedItem() + .toString())); + this.msa.setExterns(this.ex); + } + if (!this.jCheckBoxPcd.isSelected()) { + ExternsDocument.Externs newEx = ExternsDocument.Externs.Factory.newInstance(); + if (this.ex.getExternList() != null) { + for (int index = 0; index < this.ex.getExternList().size(); index++) { + newEx.addNewExtern(); + newEx.setExternArray(index, this.ex.getExternArray(index)); + } + } + if (this.ex.getSpecificationList() != null) { + for (int index = 0; index < this.ex.getSpecificationList().size(); index++) { + newEx.addNewSpecification(); + newEx.setSpecificationArray(index, this.ex.getSpecificationArray(index)); + } + } + if (this.ex.getTianoR8FlashMapH()) { + newEx.setTianoR8FlashMapH(this.ex.getTianoR8FlashMapH()); + } + this.ex = newEx; + this.msa.setExterns(this.ex); + } + } + } + + // + // Check Flash Map + // + if (arg0.getSource() == this.jCheckBoxFlashMap) { + if ((this.ex == null) && this.jCheckBoxFlashMap.isSelected()) { + this.ex = ExternsDocument.Externs.Factory.newInstance(); + this.ex.setTianoR8FlashMapH(this.jCheckBoxFlashMap.isSelected()); + this.msa.setExterns(this.ex); + } + + if ((this.ex != null) && this.jCheckBoxFlashMap.isSelected()) { + this.ex.setTianoR8FlashMapH(this.jCheckBoxFlashMap.isSelected()); + this.msa.setExterns(this.ex); + } + + if ((this.ex != null) && !this.jCheckBoxFlashMap.isSelected()) { + ExternsDocument.Externs newEx = ExternsDocument.Externs.Factory.newInstance(); + if (this.ex.getExternList() != null) { + for (int index = 0; index < this.ex.getExternList().size(); index++) { + newEx.addNewExtern(); + newEx.setExternArray(index, this.ex.getExternArray(index)); + } + } + if (this.ex.getSpecificationList() != null) { + for (int index = 0; index < this.ex.getSpecificationList().size(); index++) { + newEx.addNewSpecification(); + newEx.setSpecificationArray(index, this.ex.getSpecificationArray(index)); + } + } + if (this.ex.getPcdIsDriver() != null) { + newEx.setPcdIsDriver(this.ex.getPcdIsDriver()); + } + this.ex = newEx; + this.msa.setExterns(this.ex); + } + } + this.save(); } @@ -1436,4 +1583,35 @@ public class MsaHeader extends IInternalFrame { } } } + + /** + * This method initializes jCheckBoxPcd + * + * @return javax.swing.JCheckBox + */ + private JCheckBox getJCheckBoxPcd() { + if (jCheckBoxPcd == null) { + jCheckBoxPcd = new JCheckBox(); + jCheckBoxPcd.setBounds(new java.awt.Rectangle(0, 530, 140, 20)); + jCheckBoxPcd.setText("Is this a PCD Driver?"); + jCheckBoxPcd.addFocusListener(this); + jCheckBoxPcd.addActionListener(this); + } + return jCheckBoxPcd; + } + + /** + * This method initializes jCheckBoxFlashMap + * + * @return javax.swing.JCheckBox + */ + private JCheckBox getJCheckBoxFlashMap() { + if (jCheckBoxFlashMap == null) { + jCheckBoxFlashMap = new JCheckBox(); + jCheckBoxFlashMap.setBounds(new java.awt.Rectangle(0, 555, 480, 20)); + jCheckBoxFlashMap.setText("Are you using a legacy FlashMap header file?"); + jCheckBoxFlashMap.addFocusListener(this); + } + return jCheckBoxFlashMap; + } } diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/ExternsDlg.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/ExternsDlg.java index b53cbf7243..6ff84ffc78 100644 --- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/ExternsDlg.java +++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/ExternsDlg.java @@ -34,6 +34,7 @@ import org.tianocore.frameworkwizard.common.Tools; import org.tianocore.frameworkwizard.common.ui.ArchCheckBox; import org.tianocore.frameworkwizard.common.ui.IDialog; import org.tianocore.frameworkwizard.common.ui.IFrame; +import org.tianocore.frameworkwizard.common.ui.StarLabel; import org.tianocore.frameworkwizard.module.Identifications.Externs.ExternsIdentification; /** @@ -60,11 +61,9 @@ public class ExternsDlg extends IDialog implements ItemListener { private JScrollPane jScrollPane = null; - private JComboBox jComboBoxPcdIsDriver = null; + private JLabel jLabelSpecification = null; - private JLabel jLabelC_Name = null; - - private JTextField jTextFieldC_Name = null; + private JTextField jTextFieldSpecification = null; private JLabel jLabelFeatureFlag = null; @@ -78,6 +77,58 @@ public class ExternsDlg extends IDialog implements ItemListener { private JButton jButtonCancel = null; + private StarLabel jStarLabel1 = null; + + private JPanel jPanelSpecification = null; + + private JPanel jPanelImage = null; + + private JPanel jPanelDriver = null; + + private JPanel jPanelLibrary = null; + + private JPanel jPanelCallBack = null; + + private JLabel jLabelModuleEntryPoint = null; + + private JTextField jTextFieldModuleEntryPoint = null; + + private JLabel jLabelModuleUnloadImage = null; + + private JTextField jTextFieldModuleUnloadImage = null; + + private JLabel jLabelDriverBinding = null; + + private JTextField jTextFieldDriverBinding = null; + + private JLabel jLabelComponentName = null; + + private JTextField jTextFieldComponentName = null; + + private JLabel jLabelDriverConfig = null; + + private JTextField jTextFieldDriverConfig = null; + + private JLabel jLabelDriverDiagnostic = null; + + private JTextField jTextFieldDriverDiagnostic = null; + + private JLabel jLabelConstructor = null; + + private JTextField jTextFieldConstructor = null; + + private JLabel jLabelDestructor = null; + + private JTextField jTextFieldDestructor = null; + + private JLabel jLabelVirtualAddressMap = null; + + private JTextField jTextFieldVirtualAddressMap = null; + + private JLabel jLabelExitBootServices = null; + + private JTextField jTextFieldExitBootServices = null; + // // Not used by UI // @@ -114,35 +165,19 @@ public class ExternsDlg extends IDialog implements ItemListener { return jScrollPane; } - /** - * This method initializes jComboBoxPcdIsDriver - * - * @return javax.swing.JComboBox - */ - private JComboBox getJComboBoxPcdIsDriver() { - if (jComboBoxPcdIsDriver == null) { - jComboBoxPcdIsDriver = new JComboBox(); - jComboBoxPcdIsDriver.setLocation(new java.awt.Point(168, 37)); - jComboBoxPcdIsDriver.setPreferredSize(new java.awt.Dimension(320, 20)); - jComboBoxPcdIsDriver.setSize(new java.awt.Dimension(320, 20)); - jComboBoxPcdIsDriver.addItemListener(this); - } - return jComboBoxPcdIsDriver; - } - /** This method initializes jTextFieldC_Name @return javax.swing.JTextField **/ - private JTextField getJTextFieldC_Name() { - if (jTextFieldC_Name == null) { - jTextFieldC_Name = new JTextField(); - jTextFieldC_Name.setBounds(new java.awt.Rectangle(168, 37, 320, 20)); - jTextFieldC_Name.setPreferredSize(new java.awt.Dimension(320, 20)); + private JTextField getJTextFieldSpecification() { + if (jTextFieldSpecification == null) { + jTextFieldSpecification = new JTextField(); + jTextFieldSpecification.setPreferredSize(new java.awt.Dimension(320, 20)); + jTextFieldSpecification.setBounds(new java.awt.Rectangle(168, 0, 320, 20)); } - return jTextFieldC_Name; + return jTextFieldSpecification; } /** @@ -170,7 +205,7 @@ public class ExternsDlg extends IDialog implements ItemListener { private JButton getJButtonOk() { if (jButtonOk == null) { jButtonOk = new JButton(); - jButtonOk.setBounds(new java.awt.Rectangle(300, 122, 90, 20)); + jButtonOk.setBounds(new java.awt.Rectangle(300, 187, 90, 20)); jButtonOk.setText("Ok"); jButtonOk.addActionListener(this); } @@ -186,13 +221,273 @@ public class ExternsDlg extends IDialog implements ItemListener { private JButton getJButtonCancel() { if (jButtonCancel == null) { jButtonCancel = new JButton(); - jButtonCancel.setBounds(new java.awt.Rectangle(400, 122, 90, 20)); + jButtonCancel.setBounds(new java.awt.Rectangle(400, 187, 90, 20)); jButtonCancel.setText("Cancel"); jButtonCancel.addActionListener(this); } return jButtonCancel; } + /** + * This method initializes jPanelSpecification + * + * @return javax.swing.JPanel + */ + private JPanel getJPanelSpecification() { + if (jPanelSpecification == null) { + jPanelSpecification = new JPanel(); + jPanelSpecification.setBounds(new java.awt.Rectangle(0, 37, 505, 20)); + jPanelSpecification.setLayout(null); + + jLabelSpecification = new JLabel(); + jLabelSpecification.setBounds(new java.awt.Rectangle(12, 0, 140, 20)); + jLabelSpecification.setText("Specification Name"); + + jPanelSpecification.add(jLabelSpecification, null); + jPanelSpecification.add(getJTextFieldSpecification(), null); + } + return jPanelSpecification; + } + + /** + * This method initializes jPanelImage + * + * @return javax.swing.JPanel + */ + private JPanel getJPanelImage() { + if (jPanelImage == null) { + jLabelModuleUnloadImage = new JLabel(); + jLabelModuleUnloadImage.setBounds(new java.awt.Rectangle(12, 25, 140, 20)); + jLabelModuleUnloadImage.setText("Module Unload Image"); + jLabelModuleEntryPoint = new JLabel(); + jLabelModuleEntryPoint.setBounds(new java.awt.Rectangle(12, 0, 140, 20)); + jLabelModuleEntryPoint.setText("Module Entry Point"); + jPanelImage = new JPanel(); + jPanelImage.setBounds(new java.awt.Rectangle(0, 37, 505, 45)); + jPanelImage.setLayout(null); + jPanelImage.add(jLabelModuleEntryPoint, null); + jPanelImage.add(getJTextFieldModuleEntryPoint(), null); + jPanelImage.add(jLabelModuleUnloadImage, null); + jPanelImage.add(getJTextFieldModuleUnloadImage(), null); + } + return jPanelImage; + } + + /** + * This method initializes jPanelDriver + * + * @return javax.swing.JPanel + */ + private JPanel getJPanelDriver() { + if (jPanelDriver == null) { + jStarLabel1 = new StarLabel(); + jStarLabel1.setLocation(new java.awt.Point(0, 0)); + jLabelDriverDiagnostic = new JLabel(); + jLabelDriverDiagnostic.setBounds(new java.awt.Rectangle(12, 75, 140, 20)); + jLabelDriverDiagnostic.setText("Driver Diagnostic"); + jLabelDriverConfig = new JLabel(); + jLabelDriverConfig.setBounds(new java.awt.Rectangle(12, 50, 140, 20)); + jLabelDriverConfig.setText("Driver Config"); + jLabelComponentName = new JLabel(); + jLabelComponentName.setBounds(new java.awt.Rectangle(12, 25, 140, 20)); + jLabelComponentName.setText("Component Name"); + jLabelDriverBinding = new JLabel(); + jLabelDriverBinding.setBounds(new java.awt.Rectangle(12, 0, 140, 20)); + jLabelDriverBinding.setText("Driver Binding"); + jPanelDriver = new JPanel(); + jPanelDriver.setBounds(new java.awt.Rectangle(0, 37, 505, 95)); + jPanelDriver.setLayout(null); + jPanelDriver.add(jStarLabel1, null); + jPanelDriver.add(jLabelDriverBinding, null); + jPanelDriver.add(getJTextFieldDriverBinding(), null); + jPanelDriver.add(jLabelComponentName, null); + jPanelDriver.add(getJTextFieldComponentName(), null); + jPanelDriver.add(jLabelDriverConfig, null); + jPanelDriver.add(getJTextFieldDriverConfig(), null); + jPanelDriver.add(jLabelDriverDiagnostic, null); + jPanelDriver.add(getJTextFieldDriverDiagnostic(), null); + } + return jPanelDriver; + } + + /** + * This method initializes jPanelLibrary + * + * @return javax.swing.JPanel + */ + private JPanel getJPanelLibrary() { + if (jPanelLibrary == null) { + jLabelDestructor = new JLabel(); + jLabelDestructor.setBounds(new java.awt.Rectangle(12, 25, 140, 20)); + jLabelDestructor.setText("Destructor"); + jLabelConstructor = new JLabel(); + jLabelConstructor.setBounds(new java.awt.Rectangle(12, 0, 140, 20)); + jLabelConstructor.setText("Constructor"); + jPanelLibrary = new JPanel(); + jPanelLibrary.setBounds(new java.awt.Rectangle(0, 37, 505, 45)); + jPanelLibrary.setLayout(null); + jPanelLibrary.add(jLabelConstructor, null); + jPanelLibrary.add(getJTextFieldConstructor(), null); + jPanelLibrary.add(jLabelDestructor, null); + jPanelLibrary.add(getJTextFieldDestructor(), null); + } + return jPanelLibrary; + } + + /** + * This method initializes jPanelCallBack + * + * @return javax.swing.JPanel + */ + private JPanel getJPanelCallBack() { + if (jPanelCallBack == null) { + jLabelExitBootServices = new JLabel(); + jLabelExitBootServices.setBounds(new java.awt.Rectangle(12, 25, 140, 20)); + jLabelExitBootServices.setText("Exit Boot Services"); + jLabelVirtualAddressMap = new JLabel(); + jLabelVirtualAddressMap.setBounds(new java.awt.Rectangle(12, 0, 140, 20)); + jLabelVirtualAddressMap.setText("Virtual Address Map"); + jPanelCallBack = new JPanel(); + jPanelCallBack.setBounds(new java.awt.Rectangle(0, 37, 505, 45)); + jPanelCallBack.setLayout(null); + jPanelCallBack.add(jLabelVirtualAddressMap, null); + jPanelCallBack.add(getJTextFieldVirtualAddressMap(), null); + jPanelCallBack.add(jLabelExitBootServices, null); + jPanelCallBack.add(getJTextFieldExitBootServices(), null); + } + return jPanelCallBack; + } + + /** + * This method initializes jTextFieldModuleEntryPoint + * + * @return javax.swing.JTextField + */ + private JTextField getJTextFieldModuleEntryPoint() { + if (jTextFieldModuleEntryPoint == null) { + jTextFieldModuleEntryPoint = new JTextField(); + jTextFieldModuleEntryPoint.setBounds(new java.awt.Rectangle(168, 0, 320, 20)); + } + return jTextFieldModuleEntryPoint; + } + + /** + * This method initializes jTextFieldModuleUnloadImage + * + * @return javax.swing.JTextField + */ + private JTextField getJTextFieldModuleUnloadImage() { + if (jTextFieldModuleUnloadImage == null) { + jTextFieldModuleUnloadImage = new JTextField(); + jTextFieldModuleUnloadImage.setBounds(new java.awt.Rectangle(168, 25, 320, 20)); + } + return jTextFieldModuleUnloadImage; + } + + /** + * This method initializes jTextFieldDriverBinding + * + * @return javax.swing.JTextField + */ + private JTextField getJTextFieldDriverBinding() { + if (jTextFieldDriverBinding == null) { + jTextFieldDriverBinding = new JTextField(); + jTextFieldDriverBinding.setBounds(new java.awt.Rectangle(168, 0, 320, 20)); + } + return jTextFieldDriverBinding; + } + + /** + * This method initializes jTextFieldComponentName + * + * @return javax.swing.JTextField + */ + private JTextField getJTextFieldComponentName() { + if (jTextFieldComponentName == null) { + jTextFieldComponentName = new JTextField(); + jTextFieldComponentName.setBounds(new java.awt.Rectangle(168, 25, 320, 20)); + } + return jTextFieldComponentName; + } + + /** + * This method initializes jTextFieldDriverConfig + * + * @return javax.swing.JTextField + */ + private JTextField getJTextFieldDriverConfig() { + if (jTextFieldDriverConfig == null) { + jTextFieldDriverConfig = new JTextField(); + jTextFieldDriverConfig.setBounds(new java.awt.Rectangle(168, 50, 320, 20)); + } + return jTextFieldDriverConfig; + } + + /** + * This method initializes jTextFieldDriverDiagnostic + * + * @return javax.swing.JTextField + */ + private JTextField getJTextFieldDriverDiagnostic() { + if (jTextFieldDriverDiagnostic == null) { + jTextFieldDriverDiagnostic = new JTextField(); + jTextFieldDriverDiagnostic.setBounds(new java.awt.Rectangle(168, 75, 320, 20)); + } + return jTextFieldDriverDiagnostic; + } + + /** + * This method initializes jTextFieldConstructor + * + * @return javax.swing.JTextField + */ + private JTextField getJTextFieldConstructor() { + if (jTextFieldConstructor == null) { + jTextFieldConstructor = new JTextField(); + jTextFieldConstructor.setBounds(new java.awt.Rectangle(168, 0, 320, 20)); + } + return jTextFieldConstructor; + } + + /** + * This method initializes jTextFieldDestructor + * + * @return javax.swing.JTextField + */ + private JTextField getJTextFieldDestructor() { + if (jTextFieldDestructor == null) { + jTextFieldDestructor = new JTextField(); + jTextFieldDestructor.setBounds(new java.awt.Rectangle(168, 25, 320, 20)); + } + return jTextFieldDestructor; + } + + /** + * This method initializes jTextFieldVirtualAddressMap + * + * @return javax.swing.JTextField + */ + private JTextField getJTextFieldVirtualAddressMap() { + if (jTextFieldVirtualAddressMap == null) { + jTextFieldVirtualAddressMap = new JTextField(); + jTextFieldVirtualAddressMap.setBounds(new java.awt.Rectangle(168, 0, 320, 20)); + } + return jTextFieldVirtualAddressMap; + } + + /** + * This method initializes jTextFieldExitBootServices + * + * @return javax.swing.JTextField + */ + private JTextField getJTextFieldExitBootServices() { + if (jTextFieldExitBootServices == null) { + jTextFieldExitBootServices = new JTextField(); + jTextFieldExitBootServices.setBounds(new java.awt.Rectangle(168, 25, 320, 20)); + } + return jTextFieldExitBootServices; + } + public static void main(String[] args) { } @@ -202,7 +497,7 @@ public class ExternsDlg extends IDialog implements ItemListener { **/ private void init() { - this.setSize(515, 200); + this.setSize(515, 250); this.setContentPane(getJScrollPane()); this.setTitle("Externs"); initFrame(); @@ -221,14 +516,56 @@ public class ExternsDlg extends IDialog implements ItemListener { this.id = inExternsId; if (this.id != null) { - if (id.getType().equals(EnumerationData.EXTERNS_PCD_IS_DRIVER)) { - this.jComboBoxPcdIsDriver.setSelectedItem(id.getName()); - } else { - this.jTextFieldC_Name.setText(id.getName()); - } - this.jComboBoxType.setSelectedItem(id.getType()); + String type = id.getType(); + // + // Filter the type to lock down the type + // + this.jComboBoxType.removeAllItems(); + this.jComboBoxType.addItem(type); + this.jTextFieldFeatureFlag.setText(id.getFeatureFlag()); this.jArchCheckBox.setSelectedItems(id.getSupArchList()); + + // + // Init specification + // + if (type.equals(EnumerationData.EXTERNS_SPECIFICATION)) { + this.jTextFieldSpecification.setText(id.getName0()); + } + + // + // Init image + // + if (type.equals(EnumerationData.EXTERNS_IMAGE)) { + this.jTextFieldModuleEntryPoint.setText(id.getName0()); + this.jTextFieldModuleUnloadImage.setText(id.getName1()); + } + + // + // Init library + // + if (type.equals(EnumerationData.EXTERNS_LIBRARY)) { + this.jTextFieldConstructor.setText(id.getName0()); + this.jTextFieldDestructor.setText(id.getName1()); + } + + // + // Init driver + // + if (type.equals(EnumerationData.EXTERNS_DRIVER)) { + this.jTextFieldDriverBinding.setText(id.getName0()); + this.jTextFieldComponentName.setText(id.getName1()); + this.jTextFieldDriverConfig.setText(id.getName2()); + this.jTextFieldDriverDiagnostic.setText(id.getName3()); + } + + // + // Init library + // + if (type.equals(EnumerationData.EXTERNS_CALL_BACK)) { + this.jTextFieldVirtualAddressMap.setText(id.getName0()); + this.jTextFieldExitBootServices.setText(id.getName1()); + } } } @@ -255,23 +592,21 @@ public class ExternsDlg extends IDialog implements ItemListener { jArchCheckBox = new ArchCheckBox(); jArchCheckBox.setBounds(new java.awt.Rectangle(168, 62, 320, 20)); jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20)); - jLabelC_Name = new JLabel(); - jLabelC_Name.setBounds(new java.awt.Rectangle(12, 37, 140, 20)); - jLabelC_Name.setText("Enter Value"); + jLabelName = new JLabel(); jLabelName.setText("Choose Extern Type"); - jLabelName.setBounds(new java.awt.Rectangle(12, 12, 168, 20)); + jLabelName.setBounds(new java.awt.Rectangle(12, 12, 155, 20)); jLabelArch = new JLabel(); - jLabelArch.setBounds(new java.awt.Rectangle(12, 62, 168, 20)); + jLabelArch.setBounds(new java.awt.Rectangle(12, 62, 155, 20)); jLabelArch.setText("Supported Architectures"); jLabelFeatureFlag = new JLabel(); - jLabelFeatureFlag.setBounds(new java.awt.Rectangle(12, 87, 168, 20)); + jLabelFeatureFlag.setBounds(new java.awt.Rectangle(12, 87, 155, 20)); jLabelFeatureFlag.setText("Feature Flag Expression"); jLabelFeatureFlag.setEnabled(false); jContentPane = new JPanel(); jContentPane.setLayout(null); - jContentPane.setPreferredSize(new java.awt.Dimension(505, 155)); + jContentPane.setPreferredSize(new java.awt.Dimension(505, 200)); jContentPane.add(jLabelName, null); jContentPane.add(getJComboBoxType(), null); @@ -279,12 +614,15 @@ public class ExternsDlg extends IDialog implements ItemListener { jContentPane.add(jLabelArch, null); jContentPane.add(getJTextFieldFeatureFlag(), null); - jContentPane.add(getJComboBoxPcdIsDriver(), null); - jContentPane.add(jLabelC_Name, null); - jContentPane.add(getJTextFieldC_Name(), null); jContentPane.add(jArchCheckBox, null); jContentPane.add(getJButtonOk(), null); jContentPane.add(getJButtonCancel(), null); + + jContentPane.add(getJPanelSpecification(), null); + jContentPane.add(getJPanelImage(), null); + jContentPane.add(getJPanelDriver(), null); + jContentPane.add(getJPanelLibrary(), null); + jContentPane.add(getJPanelCallBack(), null); } return jContentPane; } @@ -295,7 +633,11 @@ public class ExternsDlg extends IDialog implements ItemListener { **/ private void initFrame() { Tools.generateComboBoxByVector(this.jComboBoxType, ed.getVExternTypes()); - Tools.generateComboBoxByVector(this.jComboBoxPcdIsDriver, ed.getVPcdDriverTypes()); + this.jPanelSpecification.setVisible(true); + this.jPanelImage.setVisible(false); + this.jPanelLibrary.setVisible(false); + this.jPanelDriver.setVisible(false); + this.jPanelCallBack.setVisible(false); } /* (non-Javadoc) @@ -307,7 +649,7 @@ public class ExternsDlg extends IDialog implements ItemListener { public void actionPerformed(ActionEvent arg0) { if (arg0.getSource() == jButtonOk) { if (checkAdd()) { - getCurrentExterns(); + this.getCurrentExterns(); this.returnType = DataType.RETURN_TYPE_OK; this.setVisible(false); } @@ -332,43 +674,132 @@ public class ExternsDlg extends IDialog implements ItemListener { // // - // When and only When type is not "Pcd Is Driver" + // Check specification // - if (!this.jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_PCD_IS_DRIVER)) { + if (this.jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_SPECIFICATION)) { + if (isEmpty(this.jTextFieldSpecification.getText())) { + Log.wrn("Update Externs", "Please type specification's name"); + return false; + } + if (!DataValidation.isSentence(this.jTextFieldSpecification.getText())) { + Log.wrn("Update Externs", "Incorrect data type for Specification"); + return false; + } + // - // Check CName + // No need to check feature flag, return true directly here. // - if (isEmpty(this.jTextFieldC_Name.getText())) { - Log.wrn("Update Externs", "Value couldn't be empty"); + return true; + } + + // + // Check image + // + if (this.jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_IMAGE)) { + if (isEmpty(this.jTextFieldModuleEntryPoint.getText()) + && isEmpty(this.jTextFieldModuleUnloadImage.getText())) { + Log.wrn("Update Externs", "At least one of ModuleEntryPoint or ModuleUnloadImage should have a value"); return false; } + if (!isEmpty(this.jTextFieldModuleEntryPoint.getText())) { + if (!DataValidation.isC_NameType(this.jTextFieldModuleEntryPoint.getText())) { + Log.wrn("Update Externs", "Incorrect data type for Module Entry Point"); + return false; + } + } + if (!isEmpty(this.jTextFieldModuleUnloadImage.getText())) { + if (!DataValidation.isC_NameType(this.jTextFieldModuleUnloadImage.getText())) { + Log.wrn("Update Externs", "Incorrect data type for Module Unload Image"); + return false; + } + } + } - if (!isEmpty(this.jTextFieldC_Name.getText())) { - if (this.jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_SPECIFICATION)) { - if (!DataValidation.isSentence(this.jTextFieldC_Name.getText())) { - Log.wrn("Update Externs", "Incorrect data type for Specification"); - return false; - } - } else { - if (!DataValidation.isC_NameType(this.jTextFieldC_Name.getText())) { - Log.wrn("Update Externs", "Incorrect data type for C Name"); - return false; - } + // + // Check library + // + if (this.jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_LIBRARY)) { + if (isEmpty(this.jTextFieldConstructor.getText()) && isEmpty(this.jTextFieldDestructor.getText())) { + Log.wrn("Update Externs", "At least one of Constructor or Destructor should have a value"); + return false; + } + if (!isEmpty(this.jTextFieldConstructor.getText())) { + if (!DataValidation.isC_NameType(this.jTextFieldConstructor.getText())) { + Log.wrn("Update Externs", "Incorrect data type for Constructor"); + return false; } } + if (!isEmpty(this.jTextFieldDestructor.getText())) { + if (!DataValidation.isC_NameType(this.jTextFieldDestructor.getText())) { + Log.wrn("Update Externs", "Incorrect data type for Destructor"); + return false; + } + } + } - // - // Check FeatureFlag - // - if (!isEmpty(this.jTextFieldFeatureFlag.getText())) { - if (!DataValidation.isFeatureFlag(this.jTextFieldFeatureFlag.getText())) { - Log.wrn("Update Externs", "Incorrect data type for Feature Flag"); + // + // Check driver + // + if (this.jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_DRIVER)) { + if (isEmpty(this.jTextFieldDriverBinding.getText())) { + Log.wrn("Update Externs", "DriverBinding must have a value"); + return false; + } + if (!isEmpty(this.jTextFieldDriverBinding.getText())) { + if (!DataValidation.isC_NameType(this.jTextFieldDriverBinding.getText())) { + Log.wrn("Update Externs", "Incorrect data type for DriverBinding"); + return false; + } + } + if (!isEmpty(this.jTextFieldComponentName.getText())) { + if (!DataValidation.isC_NameType(this.jTextFieldComponentName.getText())) { + Log.wrn("Update Externs", "Incorrect data type for ComponentName"); + return false; + } + } + if (!isEmpty(this.jTextFieldDriverConfig.getText())) { + if (!DataValidation.isC_NameType(this.jTextFieldDriverConfig.getText())) { + Log.wrn("Update Externs", "Incorrect data type for DriverConfig"); + return false; + } + } + if (!isEmpty(this.jTextFieldDriverDiagnostic.getText())) { + if (!DataValidation.isC_NameType(this.jTextFieldDriverDiagnostic.getText())) { + Log.wrn("Update Externs", "Incorrect data type for DriverDiagnostic"); return false; } } - } else { - if (this.jComboBoxPcdIsDriver.getSelectedItem().toString().equals(DataType.EMPTY_SELECT_ITEM)) { - Log.wrn("Update Externs", "You must select one PCD DRIVER type"); + } + + // + // Check call back + // + if (this.jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_CALL_BACK)) { + if (isEmpty(this.jTextFieldVirtualAddressMap.getText()) + && isEmpty(this.jTextFieldExitBootServices.getText())) { + Log.wrn("Update Externs", "At least one of VirtualAddressMap or ExitBootServices should have a value"); + return false; + } + if (!isEmpty(this.jTextFieldVirtualAddressMap.getText())) { + if (!DataValidation.isC_NameType(this.jTextFieldVirtualAddressMap.getText())) { + Log.wrn("Update Externs", "Incorrect data type for Virtual Address Map"); + return false; + } + } + if (!isEmpty(this.jTextFieldExitBootServices.getText())) { + if (!DataValidation.isC_NameType(this.jTextFieldExitBootServices.getText())) { + Log.wrn("Update Externs", "Incorrect data type for Exit Boot Services"); + return false; + } + } + } + + // + // Check FeatureFlag + // + if (!isEmpty(this.jTextFieldFeatureFlag.getText())) { + if (!DataValidation.isFeatureFlag(this.jTextFieldFeatureFlag.getText())) { + Log.wrn("Update Externs", "Incorrect data type for Feature Flag"); return false; } } @@ -378,17 +809,45 @@ public class ExternsDlg extends IDialog implements ItemListener { private ExternsIdentification getCurrentExterns() { String arg0 = ""; - if (this.jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_PCD_IS_DRIVER)) { - arg0 = this.jComboBoxPcdIsDriver.getSelectedItem().toString(); - } else { - arg0 = this.jTextFieldC_Name.getText(); + String arg1 = ""; + String arg2 = ""; + String arg3 = ""; + + String type = this.jComboBoxType.getSelectedItem().toString(); + String featureFlag = this.jTextFieldFeatureFlag.getText(); + Vector arch = this.jArchCheckBox.getSelectedItemsVector(); + + if (type.equals(EnumerationData.EXTERNS_SPECIFICATION)) { + arg0 = this.jTextFieldSpecification.getText(); + id = new ExternsIdentification(arg0, type); } - String arg1 = this.jComboBoxType.getSelectedItem().toString(); - String arg2 = this.jTextFieldFeatureFlag.getText(); - Vector arg3 = this.jArchCheckBox.getSelectedItemsVector(); + if (type.equals(EnumerationData.EXTERNS_IMAGE)) { + arg0 = this.jTextFieldModuleEntryPoint.getText(); + arg1 = this.jTextFieldModuleUnloadImage.getText(); + id = new ExternsIdentification(arg0, arg1, type, featureFlag, arch); + } + + if (type.equals(EnumerationData.EXTERNS_LIBRARY)) { + arg0 = this.jTextFieldConstructor.getText(); + arg1 = this.jTextFieldDestructor.getText(); + id = new ExternsIdentification(arg0, arg1, type, featureFlag, arch); + } + + if (type.equals(EnumerationData.EXTERNS_DRIVER)) { + arg0 = this.jTextFieldDriverBinding.getText(); + arg1 = this.jTextFieldComponentName.getText(); + arg2 = this.jTextFieldDriverConfig.getText(); + arg3 = this.jTextFieldDriverDiagnostic.getText(); + id = new ExternsIdentification(arg0, arg1, arg2, arg3, type, featureFlag, arch); + } + + if (type.equals(EnumerationData.EXTERNS_CALL_BACK)) { + arg0 = this.jTextFieldVirtualAddressMap.getText(); + arg1 = this.jTextFieldExitBootServices.getText(); + id = new ExternsIdentification(arg0, arg1, type, featureFlag, arch); + } - id = new ExternsIdentification(arg0, arg1, arg2, arg3); return id; } @@ -400,19 +859,66 @@ public class ExternsDlg extends IDialog implements ItemListener { */ public void itemStateChanged(ItemEvent arg0) { if (arg0.getSource() == jComboBoxType && arg0.getStateChange() == ItemEvent.SELECTED) { - if (jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_PCD_IS_DRIVER)) { - this.jComboBoxPcdIsDriver.setVisible(true); - this.jTextFieldC_Name.setVisible(false); - this.jLabelArch.setEnabled(false); - this.jArchCheckBox.setAllItemsEnabled(false); - } else if (jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_SPECIFICATION)) { + if (jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_SPECIFICATION)) { + this.jPanelSpecification.setVisible(true); + this.jPanelImage.setVisible(false); + this.jPanelLibrary.setVisible(false); + this.jPanelDriver.setVisible(false); + this.jPanelCallBack.setVisible(false); this.jLabelArch.setEnabled(false); this.jArchCheckBox.setAllItemsEnabled(false); - } else { - this.jComboBoxPcdIsDriver.setVisible(false); - this.jTextFieldC_Name.setVisible(true); + this.jLabelArch.setLocation(12, 62); + this.jArchCheckBox.setLocation(168, 62); + this.jLabelFeatureFlag.setLocation(12, 87); + this.jTextFieldFeatureFlag.setLocation(168, 87); + } else if (jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_IMAGE)) { + this.jPanelSpecification.setVisible(false); + this.jPanelImage.setVisible(true); + this.jPanelLibrary.setVisible(false); + this.jPanelDriver.setVisible(false); + this.jPanelCallBack.setVisible(false); + this.jLabelArch.setEnabled(true); + this.jArchCheckBox.setAllItemsEnabled(true); + this.jLabelArch.setLocation(12, 87); + this.jArchCheckBox.setLocation(168, 87); + this.jLabelFeatureFlag.setLocation(12, 112); + this.jTextFieldFeatureFlag.setLocation(168, 112); + } else if (jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_LIBRARY)) { + this.jPanelSpecification.setVisible(false); + this.jPanelImage.setVisible(false); + this.jPanelLibrary.setVisible(true); + this.jPanelDriver.setVisible(false); + this.jPanelCallBack.setVisible(false); + this.jLabelArch.setEnabled(true); + this.jArchCheckBox.setAllItemsEnabled(true); + this.jLabelArch.setLocation(12, 87); + this.jArchCheckBox.setLocation(168, 87); + this.jLabelFeatureFlag.setLocation(12, 112); + this.jTextFieldFeatureFlag.setLocation(168, 112); + } else if (jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_DRIVER)) { + this.jPanelSpecification.setVisible(false); + this.jPanelImage.setVisible(false); + this.jPanelLibrary.setVisible(false); + this.jPanelDriver.setVisible(true); + this.jPanelCallBack.setVisible(false); + this.jLabelArch.setEnabled(true); + this.jArchCheckBox.setAllItemsEnabled(true); + this.jLabelArch.setLocation(12, 137); + this.jArchCheckBox.setLocation(168, 137); + this.jLabelFeatureFlag.setLocation(12, 162); + this.jTextFieldFeatureFlag.setLocation(168, 162); + } else if (jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_CALL_BACK)) { + this.jPanelSpecification.setVisible(false); + this.jPanelImage.setVisible(false); + this.jPanelLibrary.setVisible(false); + this.jPanelDriver.setVisible(false); + this.jPanelCallBack.setVisible(true); this.jLabelArch.setEnabled(true); this.jArchCheckBox.setAllItemsEnabled(true); + this.jLabelArch.setLocation(12, 87); + this.jArchCheckBox.setLocation(168, 87); + this.jLabelFeatureFlag.setLocation(12, 112); + this.jTextFieldFeatureFlag.setLocation(168, 112); } } } -- 2.39.2