From b3cb8ee7d04b6122e5ed02d0066300801347b42d Mon Sep 17 00:00:00 2001 From: hche10x Date: Mon, 13 Nov 2006 08:11:53 +0000 Subject: [PATCH] 1. Fix EDKT461 [Framework Wizard] Can't change ModuleBuildOptions for MSA file git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1938 6f19259b-4bc3-4df7-8a09-765794883524 --- .../frameworkwizard/FrameworkWizardUI.java | 6 + .../common/EnumerationData.java | 323 +++++++----- .../BootModes/BootModesIdentification.java | 2 +- .../BootModes/BootModesVector.java | 2 +- .../BuildOptionsIdentification.java | 93 ++++ .../BuildOptions/BuildOptionsVector.java | 95 ++++ .../module/ui/ModuleBuildOptions.java | 485 +++++++++++++++++ .../module/ui/dialog/BuildOptionsDlg.java | 495 ++++++++++++++++++ 8 files changed, 1358 insertions(+), 143 deletions(-) create mode 100644 Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/BuildOptions/BuildOptionsIdentification.java create mode 100644 Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/BuildOptions/BuildOptionsVector.java create mode 100644 Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleBuildOptions.java create mode 100644 Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/BuildOptionsDlg.java diff --git a/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/FrameworkWizardUI.java b/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/FrameworkWizardUI.java index 5eef420fdc..d11e7ceb02 100644 --- a/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/FrameworkWizardUI.java +++ b/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/FrameworkWizardUI.java @@ -73,6 +73,7 @@ import org.tianocore.frameworkwizard.far.installui.InstallStepOne; import org.tianocore.frameworkwizard.far.updateui.UpdateStepOne; import org.tianocore.frameworkwizard.module.Identifications.ModuleIdentification; import org.tianocore.frameworkwizard.module.ui.ModuleBootModes; +import org.tianocore.frameworkwizard.module.ui.ModuleBuildOptions; import org.tianocore.frameworkwizard.module.ui.ModuleDataHubs; import org.tianocore.frameworkwizard.module.ui.ModuleEvents; import org.tianocore.frameworkwizard.module.ui.ModuleExterns; @@ -2535,6 +2536,7 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe iTree.addNode(new IDefaultMutableTreeNode("External Defintions", IDefaultMutableTreeNode.MSA_EXTERNS, true, id, belongNode)); iTree.addNode(new IDefaultMutableTreeNode("Pcd Coded", IDefaultMutableTreeNode.MSA_PCDS, true, id, belongNode)); + iTree.addNode(new IDefaultMutableTreeNode("Build Options", IDefaultMutableTreeNode.MSA_BUILDOPTIONS, true, id, belongNode)); } private void insertPackageTreeNode(Identification id) { @@ -2882,6 +2884,10 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe ModulePCDs frmPcd = new ModulePCDs(msa); getJDesktopPaneModule().add(frmPcd, 1); break; + case IDefaultMutableTreeNode.MSA_BUILDOPTIONS: + ModuleBuildOptions frmMbo = new ModuleBuildOptions(msa); + getJDesktopPaneModule().add(frmMbo, 1); + break; } this.jTabbedPaneEditor.setSelectedIndex(0); resizeDesktopPanel(); diff --git a/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/EnumerationData.java b/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/EnumerationData.java index 80166959df..5b6c4f6c0e 100644 --- a/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/EnumerationData.java +++ b/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/EnumerationData.java @@ -21,183 +21,205 @@ public class EnumerationData { // Static data for externs definitions // public final static String EXTERNS_PCD_IS_DRIVER = "Pcd Is Driver"; - + 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_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"; - + // // Static data for guid type // public final static String GUID_TYPE_DATA_HUB_RECORD = "DATA_HUB_RECORD"; - + public final static String GUID_TYPE_EFI_EVENT = "EFI_EVENT"; - + public final static String GUID_TYPE_EFI_SYSTEM_CONFIGURATION_TABLE = "EFI_SYSTEM_CONFIGURATION_TABLE"; - + public final static String GUID_TYPE_EFI_VARIABLE = "EFI_VARIABLE"; - + public final static String GUID_TYPE_GUID = "GUID"; - + public final static String GUID_TYPE_HII_PACKAGE_LIST = "HII_PACKAGE_LIST"; - + public final static String GUID_TYPE_HOB = "HOB"; - + public final static String GUID_TYPE_TOKEN_SPACE_GUID = "TOKEN_SPACE_GUID"; + // + // Static data for build targets + // + public final static String BUILD_TARGET_DEBUG = "DEBUG"; + + public final static String BUILD_TARGET_RELEASE = "RELEASE"; + // // Common data // public Vector vSupportedArchitectures = new Vector(); - + public Vector vEnabled = new Vector(); - + public Vector vBoolean = new Vector(); - + // // Used by Msa Header // public Vector vModuleType = new Vector(); - + public Vector vCompontentType = new Vector(); - + // // Used by Library Class Definitions // public Vector vLibraryUsage = new Vector(); - + public Vector vFrameworkModuleTypes = new Vector(); - + public Vector vLibClassDef = new Vector(); - + public Vector vLibClassDefBase = new Vector(); - + public Vector vLibClassDefPei = new Vector(); - + public Vector vLibClassDefPeim = new Vector(); - + public Vector vLibClassDefDxeCore = new Vector(); - + public Vector vLibClassDefDxeDriver = new Vector(); - + public Vector vLibClassDefDxeSmmDriver = new Vector(); - + public Vector vLibClassDefUefiDriver = new Vector(); - + // // Used by Source Files // public Vector vSourceFilesToolChainFamily = new Vector(); - + public Vector vSourceFilesFileType = new Vector(); - + public Vector vToolCode = new Vector(); - + // // Used by Package Dependencies // public Vector vPackageUsage = new Vector(); - + // // Used by Protocols // public Vector vProtocolUsage = new Vector(); - + public Vector vProtocolNotifyUsage = new Vector(); - + public Vector vProtocolType = new Vector(); - + // // Used by Events // public Vector vEventType = new Vector(); - + public Vector vEventUsage = new Vector(); - + public Vector vEventGroup = new Vector(); - + // // Used by Hobs // public Vector vHobType = new Vector(); - + public Vector vHobUsage = new Vector(); - + // // Used by Ppis // public Vector vPpiType = new Vector(); - + public Vector vPpiUsage = new Vector(); - + public Vector vPpiNotifyUsage = new Vector(); - + // // Used by Variable // public Vector vVariableUsage = new Vector(); - + // // Used by Boot Mode // public Vector vBootModeNames = new Vector(); - + public Vector vBootModeUsage = new Vector(); - + // // Used by System Tables // public Vector vSystemTableUsage = new Vector(); - + // // Used by Data Hubs // public Vector vDataHubUsage = new Vector(); - + // // Used by Hii Packages // public Vector vHiiPackageUsage = new Vector(); - + // // Used by Guid // public Vector vGuidUsage = new Vector(); - + // // Used by Externs // public Vector vExternTypes = new Vector(); - + public Vector vPcdDriverTypes = new Vector(); - + // // Used by Pcd // public Vector vPcdItemTypes = new Vector(); - + public Vector vPcdUsage = new Vector(); + + // + // Used by Build Options + // + public Vector vBuildTargets = new Vector(); public EnumerationData() { init(); } - + private void init() { // // Init common data first @@ -205,12 +227,12 @@ public class EnumerationData { initSupportedArchitectures(); initEnabled(); initBoolean(); - + // // Used by Msa header // initModuleType(); - + // // Used by Library Class Definitions // @@ -231,95 +253,100 @@ public class EnumerationData { initSourceFilesToolChainFamily(); initSourceFilesFileType(); initToolCode(); - + // // Used by Package Dependencies // initPackageUsage(); - + // // Used by Protocols // initProtocolType(); initProtocolUsage(); initProtocolNotifyUsage(); - + // // Used by Events // initEventType(); initEventUsage(); initEventGroup(); - + // // Used by Hobs // initHobType(); initHobUsage(); - + // // Used by Ppis // initPpiType(); initPpiUsage(); initPpiNotifyUsage(); - + // // Used by Variable // initVariableUsage(); - + // // Used by Boot Mode // initBootModeNames(); initBootModeUsage(); - + // // Used by System Tables // initSystemTableUsage(); - + // // Used by Data Hubs // initDataHubUsage(); - + // // Used by Hii Packages // initHiiPackages(); - + // // Used by Guid // initGuidUsage(); - + // // Used by Externs // initExternTypes(); initPcdDriverTypes(); - + // // Used by Pcd // initPcdItemTypes(); initPcdUsage(); + + // + // Used by Build Option + // + initBuildTargets(); } - + private void initEnabled() { vEnabled.removeAllElements(); vEnabled.addElement("Disabled"); vEnabled.addElement("Enabled"); } - + private void initBoolean() { vBoolean.removeAllElements(); vBoolean.addElement(DataType.FALSE); vBoolean.addElement(DataType.TRUE); } - + private void initModuleType() { vModuleType.removeAllElements(); vModuleType.addElement("BASE"); @@ -337,25 +364,25 @@ public class EnumerationData { vModuleType.addElement("USER_DEFINED"); Sort.sortVectorString(vModuleType, DataType.SORT_TYPE_ASCENDING); } - -// private void initComponentType() { -// vCompontentType.removeAllElements(); -// vCompontentType.addElement("APRIORI"); -// vCompontentType.addElement("LIBRARY"); -// vCompontentType.addElement("FV_IMAGE_FILE"); -// vCompontentType.addElement("BS_DRIVER"); -// vCompontentType.addElement("RT_DRIVER"); -// vCompontentType.addElement("SAL_RT_DRIVER"); -// vCompontentType.addElement("PE32_PEIM"); -// vCompontentType.addElement("PIC_PEIM"); -// vCompontentType.addElement("COMBINED_PEIM_DRIVER"); -// vCompontentType.addElement("PEI_CORE"); -// vCompontentType.addElement("DXE_CORE"); -// vCompontentType.addElement("APPLICATION"); -// vCompontentType.addElement("BS_DRIVER_EFI"); -// vCompontentType.addElement("SHELLAPP"); -// } - + + // private void initComponentType() { + // vCompontentType.removeAllElements(); + // vCompontentType.addElement("APRIORI"); + // vCompontentType.addElement("LIBRARY"); + // vCompontentType.addElement("FV_IMAGE_FILE"); + // vCompontentType.addElement("BS_DRIVER"); + // vCompontentType.addElement("RT_DRIVER"); + // vCompontentType.addElement("SAL_RT_DRIVER"); + // vCompontentType.addElement("PE32_PEIM"); + // vCompontentType.addElement("PIC_PEIM"); + // vCompontentType.addElement("COMBINED_PEIM_DRIVER"); + // vCompontentType.addElement("PEI_CORE"); + // vCompontentType.addElement("DXE_CORE"); + // vCompontentType.addElement("APPLICATION"); + // vCompontentType.addElement("BS_DRIVER_EFI"); + // vCompontentType.addElement("SHELLAPP"); + // } + private void initSupportedArchitectures() { vSupportedArchitectures.removeAllElements(); vSupportedArchitectures.addElement("EBC"); @@ -365,7 +392,7 @@ public class EnumerationData { vSupportedArchitectures.addElement("ARM"); vSupportedArchitectures.addElement("PPC"); } - + private void initLibraryUsage() { vLibraryUsage.removeAllElements(); vLibraryUsage.addElement("ALWAYS_CONSUMED"); @@ -374,7 +401,7 @@ public class EnumerationData { vLibraryUsage.addElement("SOMETIMES_PRODUCED"); vLibraryUsage.addElement("PRIVATE"); } - + private void initFrameworkModuleTypes() { vFrameworkModuleTypes.removeAllElements(); vFrameworkModuleTypes.addElement("BASE"); @@ -416,7 +443,7 @@ public class EnumerationData { vLibClassDef.addElement(vLibClassDefUefiDriver.elementAt(index)); } } - + private void initLibClassDefBase() { vLibClassDefBase.removeAllElements(); vLibClassDefBase.addElement("BaseLib"); @@ -435,12 +462,12 @@ public class EnumerationData { vLibClassDefBase.addElement("SmbusLib"); vLibClassDefBase.addElement("TimerLib"); } - + private void initLibClassDefPei() { vLibClassDefPei.removeAllElements(); vLibClassDefPei.addElement("PeiCoreEntryPoint"); } - + private void initLibClassDefPeim() { vLibClassDefPeim.removeAllElements(); vLibClassDefPeim.addElement("BaseMemoryLib"); @@ -456,13 +483,13 @@ public class EnumerationData { vLibClassDefPeim.addElement("ResourcePublicationLib"); vLibClassDefPeim.addElement("SmbusLib"); } - + private void initLibClassDefDxeCore() { vLibClassDefDxeCore.removeAllElements(); vLibClassDefDxeCore.addElement("DxeCoreEntryPoint"); vLibClassDefDxeCore.addElement("HobLib"); } - + private void initLibClassDefDxeDriver() { vLibClassDefDxeDriver.removeAllElements(); vLibClassDefDxeDriver.addElement("DxeServicesTableLib"); @@ -477,12 +504,12 @@ public class EnumerationData { vLibClassDefDxeDriver.addElement("UefiDecompressLib"); vLibClassDefDxeDriver.addElement("UefiRuntimeServicesTableLib"); } - + private void initLibClassDefDxeSmmDriver() { vLibClassDefDxeSmmDriver.removeAllElements(); vLibClassDefDxeSmmDriver.addElement("DxeSmmDriverEntryPoint"); } - + private void initLibClassDefUefiDriver() { vLibClassDefUefiDriver.removeAllElements(); vLibClassDefUefiDriver.addElement("BaseMemoryLib"); @@ -492,14 +519,14 @@ public class EnumerationData { vLibClassDefUefiDriver.addElement("UefiDriverModelLib"); vLibClassDefUefiDriver.addElement("UefiLib"); } - + private void initSourceFilesToolChainFamily() { vSourceFilesToolChainFamily.removeAllElements(); vSourceFilesToolChainFamily.addElement("MSFT"); vSourceFilesToolChainFamily.addElement("INTC"); vSourceFilesToolChainFamily.addElement("GCC"); } - + private void initSourceFilesFileType() { vSourceFilesFileType.removeAllElements(); vSourceFilesFileType.addElement("CCODE"); @@ -516,23 +543,23 @@ public class EnumerationData { vSourceFilesFileType.addElement("FFS"); vSourceFilesFileType.addElement("EFI"); } - + private void initToolCode() { vToolCode.removeAllElements(); vToolCode.addElement(DataType.EMPTY_SELECT_ITEM); -// vToolCode.addElement("Build_CCode"); -// vToolCode.addElement("Build_AUTOGEN"); -// vToolCode.addElement("Build_DPX"); -// vToolCode.addElement("Build_ASM"); -// vToolCode.addElement("Build_Assembly"); -// vToolCode.addElement("Build_Gcc_Assembly"); -// vToolCode.addElement("Build_IPF_Assembly_Code"); -// vToolCode.addElement("Build_IPF_PP_Code"); -// vToolCode.addElement("Build_Library"); -// vToolCode.addElement("Build_UNI"); -// vToolCode.addElement("Build_Unicode_Database"); -// vToolCode.addElement("Build_VFR"); -// vToolCode.addElement("Build_DUMMY"); + // vToolCode.addElement("Build_CCode"); + // vToolCode.addElement("Build_AUTOGEN"); + // vToolCode.addElement("Build_DPX"); + // vToolCode.addElement("Build_ASM"); + // vToolCode.addElement("Build_Assembly"); + // vToolCode.addElement("Build_Gcc_Assembly"); + // vToolCode.addElement("Build_IPF_Assembly_Code"); + // vToolCode.addElement("Build_IPF_PP_Code"); + // vToolCode.addElement("Build_Library"); + // vToolCode.addElement("Build_UNI"); + // vToolCode.addElement("Build_Unicode_Database"); + // vToolCode.addElement("Build_VFR"); + // vToolCode.addElement("Build_DUMMY"); vToolCode.addElement("CC"); vToolCode.addElement("DLINK"); vToolCode.addElement("SLINK"); @@ -541,13 +568,13 @@ public class EnumerationData { vToolCode.addElement("ASMLINK"); vToolCode.addElement("ASL"); } - + private void initPackageUsage() { vPackageUsage.removeAllElements(); vPackageUsage.addElement("ALWAYS_CONSUMED"); vPackageUsage.addElement("ALWAYS_PRODUCED"); } - + private void initProtocolUsage() { vProtocolUsage.removeAllElements(); vProtocolUsage.addElement("ALWAYS_CONSUMED"); @@ -558,19 +585,19 @@ public class EnumerationData { vProtocolUsage.addElement("BY_START"); vProtocolUsage.addElement("PRIVATE"); } - + private void initProtocolType() { vProtocolType.removeAllElements(); vProtocolType.addElement("Protocol"); vProtocolType.addElement("Protocol Notify"); } - + private void initEventType() { vEventType.removeAllElements(); vEventType.addElement("CreateEvents"); vEventType.addElement("SignalEvents"); } - + private void initEventUsage() { vEventUsage.removeAllElements(); vEventUsage.addElement("ALWAYS_CONSUMED"); @@ -579,14 +606,14 @@ public class EnumerationData { vEventUsage.addElement("SOMETIMES_PRODUCED"); vEventUsage.addElement("PRIVATE"); } - + private void initEventGroup() { vEventGroup.removeAllElements(); vEventGroup.addElement("EVENT_GROUP_GUID"); vEventGroup.addElement("EVENT_TYPE_PERIODIC_TIMER"); vEventGroup.addElement("EVENT_TYPE_RELATIVE_TIMER"); } - + private void initHobType() { vHobType.removeAllElements(); vHobType.addElement("PHIT"); @@ -598,7 +625,7 @@ public class EnumerationData { vHobType.addElement("POOL"); vHobType.addElement("CAPSULE_VOLUME"); } - + private void initHobUsage() { vHobUsage.removeAllElements(); vHobUsage.addElement("ALWAYS_CONSUMED"); @@ -607,13 +634,13 @@ public class EnumerationData { vHobUsage.addElement("SOMETIMES_PRODUCED"); vHobUsage.addElement("PRIVATE"); } - + private void initPpiType() { vPpiType.removeAllElements(); vPpiType.addElement("Ppi"); vPpiType.addElement("Ppi Notify"); } - + private void initPpiUsage() { vPpiUsage.removeAllElements(); vPpiUsage.addElement("ALWAYS_CONSUMED"); @@ -622,16 +649,16 @@ public class EnumerationData { vPpiUsage.addElement("SOMETIMES_PRODUCED"); vPpiUsage.addElement("PRIVATE"); } - + private void initPpiNotifyUsage() { vPpiNotifyUsage.removeAllElements(); vPpiNotifyUsage.addElement("SOMETIMES_CONSUMED"); } - + private void initProtocolNotifyUsage() { vProtocolNotifyUsage.addElement("SOMETIMES_CONSUMED"); } - + private void initVariableUsage() { vVariableUsage.removeAllElements(); vVariableUsage.addElement("ALWAYS_CONSUMED"); @@ -640,7 +667,7 @@ public class EnumerationData { vVariableUsage.addElement("SOMETIMES_PRODUCED"); vVariableUsage.addElement("PRIVATE"); } - + private void initBootModeNames() { vBootModeNames.removeAllElements(); vBootModeNames.addElement("FULL"); @@ -664,7 +691,7 @@ public class EnumerationData { vBootModeNames.addElement("RECOVERY_S5_RESUME"); vBootModeNames.addElement("RECOVERY_FLASH_UPDATE"); } - + private void initBootModeUsage() { vBootModeUsage.removeAllElements(); vBootModeUsage.addElement("ALWAYS_CONSUMED"); @@ -672,7 +699,7 @@ public class EnumerationData { vBootModeUsage.addElement("ALWAYS_PRODUCED"); vBootModeUsage.addElement("SOMETIMES_PRODUCED"); } - + private void initSystemTableUsage() { vSystemTableUsage.removeAllElements(); vSystemTableUsage.addElement("ALWAYS_CONSUMED"); @@ -681,7 +708,7 @@ public class EnumerationData { vSystemTableUsage.addElement("SOMETIMES_PRODUCED"); vSystemTableUsage.addElement("PRIVATE"); } - + private void initDataHubUsage() { vDataHubUsage.removeAllElements(); vDataHubUsage.addElement("ALWAYS_CONSUMED"); @@ -690,14 +717,14 @@ public class EnumerationData { vDataHubUsage.addElement("SOMETIMES_PRODUCED"); vDataHubUsage.addElement("PRIVATE"); } - + private void initHiiPackages() { vHiiPackageUsage.removeAllElements(); vHiiPackageUsage.addElement("ALWAYS_PRODUCED"); vHiiPackageUsage.addElement("SOMETIMES_PRODUCED"); vHiiPackageUsage.addElement("PRIVATE"); } - + private void initGuidUsage() { vGuidUsage.removeAllElements(); vGuidUsage.addElement("ALWAYS_CONSUMED"); @@ -706,23 +733,23 @@ public class EnumerationData { vGuidUsage.addElement("SOMETIMES_PRODUCED"); vGuidUsage.addElement("PRIVATE"); } - + private void initExternTypes() { vExternTypes.removeAllElements(); - + 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); } - + private void initPcdDriverTypes() { - vPcdDriverTypes.removeAllElements(); + vPcdDriverTypes.removeAllElements(); vPcdDriverTypes.addElement("PEI_PCD_DRIVER"); vPcdDriverTypes.addElement("DXE_PCD_DRIVER"); } - + private void initPcdItemTypes() { vPcdItemTypes.removeAllElements(); vPcdItemTypes.addElement(DataType.PCD_ITEM_TYPE_FEATURE_FLAG); @@ -731,7 +758,7 @@ public class EnumerationData { vPcdItemTypes.addElement(DataType.PCD_ITEM_TYPE_DYNAMIC); vPcdItemTypes.addElement(DataType.PCD_ITEM_TYPE_DYNAMIC_EX); } - + private void initPcdUsage() { vPcdUsage.removeAllElements(); vPcdUsage.addElement("ALWAYS_CONSUMED"); @@ -740,6 +767,12 @@ public class EnumerationData { vPcdUsage.addElement("SOMETIMES_PRODUCED"); } + private void initBuildTargets() { + vBuildTargets.removeAllElements(); + vBuildTargets.addElement(EnumerationData.BUILD_TARGET_DEBUG); + vBuildTargets.addElement(EnumerationData.BUILD_TARGET_RELEASE); + } + public Vector getvCompontentType() { return vCompontentType; } @@ -1079,4 +1112,12 @@ public class EnumerationData { public void setVPcdUsage(Vector pcdUsage) { vPcdUsage = pcdUsage; } + + public Vector getVBuildTargets() { + return vBuildTargets; + } + + public void setVBuildTargets(Vector buildTargets) { + vBuildTargets = buildTargets; + } } diff --git a/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/BootModes/BootModesIdentification.java b/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/BootModes/BootModesIdentification.java index 0005ad1ccc..3a81248926 100644 --- a/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/BootModes/BootModesIdentification.java +++ b/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/BootModes/BootModesIdentification.java @@ -1,6 +1,6 @@ /** @file - The file is used to define Package Dependencies Identification + The file is used to define Boot Modes Identification Copyright (c) 2006, Intel Corporation All rights reserved. This program and the accompanying materials diff --git a/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/BootModes/BootModesVector.java b/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/BootModes/BootModesVector.java index 82928060bc..4c0840370f 100644 --- a/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/BootModes/BootModesVector.java +++ b/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/BootModes/BootModesVector.java @@ -1,6 +1,6 @@ /** @file - The file is used to define Package Dependencies Vector + The file is used to define Boot Modes Vector Copyright (c) 2006, Intel Corporation All rights reserved. This program and the accompanying materials diff --git a/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/BuildOptions/BuildOptionsIdentification.java b/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/BuildOptions/BuildOptionsIdentification.java new file mode 100644 index 0000000000..7074d3c7e0 --- /dev/null +++ b/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/BuildOptions/BuildOptionsIdentification.java @@ -0,0 +1,93 @@ +/** @file + + The file is used to define Build Options Identification + + Copyright (c) 2006, Intel Corporation + All rights reserved. This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + **/ + +package org.tianocore.frameworkwizard.module.Identifications.BuildOptions; + +import java.util.Vector; + +public class BuildOptionsIdentification { + + // + // Define class members + // + private String option = null; + + private Vector buildTargets = null; + + private String toolChainFamily = null; + + private String tagName = null; + + private String toolCode = null; + + private Vector supArchList = null; + + public BuildOptionsIdentification(String arg0, Vector arg1, String arg2, String arg3, String arg4, Vector arg5) { + this.option = (arg0 == null ? "" : arg0); + this.buildTargets = arg1; + this.toolChainFamily = (arg2 == null ? "" : arg2); + this.tagName = (arg3 == null ? "" : arg3); + this.toolCode = (arg4 == null ? "" : arg4); + this.supArchList = arg5; + } + + public String getOption() { + return option; + } + + public void setOption(String option) { + this.option = option; + } + + public Vector getSupArchList() { + return supArchList; + } + + public void setSupArchList(Vector supArchList) { + this.supArchList = supArchList; + } + + public String getTagName() { + return tagName; + } + + public void setTagName(String tagName) { + this.tagName = tagName; + } + + public String getToolChainFamily() { + return toolChainFamily; + } + + public void setToolChainFamily(String toolChainFamily) { + this.toolChainFamily = toolChainFamily; + } + + public String getToolCode() { + return toolCode; + } + + public void setToolCode(String toolCode) { + this.toolCode = toolCode; + } + + public Vector getBuildTargets() { + return buildTargets; + } + + public void setBuildTargets(Vector buildTargets) { + this.buildTargets = buildTargets; + } +} diff --git a/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/BuildOptions/BuildOptionsVector.java b/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/BuildOptions/BuildOptionsVector.java new file mode 100644 index 0000000000..dcd1bff392 --- /dev/null +++ b/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/BuildOptions/BuildOptionsVector.java @@ -0,0 +1,95 @@ +/** @file + + The file is used to define Build Options Vector + + Copyright (c) 2006, Intel Corporation + All rights reserved. This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + **/ +package org.tianocore.frameworkwizard.module.Identifications.BuildOptions; + +import java.util.Vector; + +public class BuildOptionsVector { + + private Vector vBuildOptions = new Vector(); + + public int findBuildOptions(BuildOptionsIdentification sfi) { + for (int index = 0; index < vBuildOptions.size(); index++) { + if (vBuildOptions.elementAt(index).equals(sfi)) { + return index; + } + } + return -1; + } + + public int findBuildOptions(String name) { + for (int index = 0; index < vBuildOptions.size(); index++) { + if (vBuildOptions.elementAt(index).getOption().equals(name)) { + return index; + } + } + return -1; + } + + public BuildOptionsIdentification getBuildOptions(int index) { + if (index > -1) { + return vBuildOptions.elementAt(index); + } else { + return null; + } + } + + public void addBuildOptions(BuildOptionsIdentification arg0) { + vBuildOptions.addElement(arg0); + } + + public void setBuildOptions(BuildOptionsIdentification arg0, int arg1) { + vBuildOptions.setElementAt(arg0, arg1); + } + + public void removeBuildOptions(BuildOptionsIdentification arg0) { + int index = findBuildOptions(arg0); + if (index > -1) { + vBuildOptions.removeElementAt(index); + } + } + + public void removeBuildOptions(int index) { + if (index > -1 && index < this.size()) { + vBuildOptions.removeElementAt(index); + } + } + + public Vector getvBuildOptions() { + return vBuildOptions; + } + + public void setvBuildOptions(Vector BuildOptions) { + vBuildOptions = BuildOptions; + } + + public Vector getBuildOptionsName() { + Vector v = new Vector(); + for (int index = 0; index < this.vBuildOptions.size(); index++) { + v.addElement(vBuildOptions.get(index).getOption()); + } + return v; + } + + public int size() { + return this.vBuildOptions.size(); + } + + public Vector toStringVector(int index) { + Vector v = new Vector(); + v.addElement(getBuildOptions(index).getOption()); + return v; + } +} diff --git a/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleBuildOptions.java b/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleBuildOptions.java new file mode 100644 index 0000000000..076f820ae8 --- /dev/null +++ b/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleBuildOptions.java @@ -0,0 +1,485 @@ +/** @file + + The file is used to create, update BuildOptions of MSA/MBD file + + Copyright (c) 2006, Intel Corporation + All rights reserved. This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + **/ + +package org.tianocore.frameworkwizard.module.ui; + +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ComponentEvent; +import java.awt.event.MouseEvent; +import java.util.List; +import java.util.Vector; + +import javax.swing.JButton; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.ListSelectionModel; +import javax.swing.event.ListSelectionEvent; + +import org.tianocore.ModuleBuildOptionsDocument; +import org.tianocore.UserExtensionsDocument; +import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea; +import org.tianocore.OptionDocument.Option; +import org.tianocore.frameworkwizard.common.DataType; +import org.tianocore.frameworkwizard.common.IDefaultTableModel; +import org.tianocore.frameworkwizard.common.Log; +import org.tianocore.frameworkwizard.common.Tools; +import org.tianocore.frameworkwizard.common.Identifications.OpeningModuleType; +import org.tianocore.frameworkwizard.common.ui.IFrame; +import org.tianocore.frameworkwizard.common.ui.IInternalFrame; +import org.tianocore.frameworkwizard.module.Identifications.BuildOptions.BuildOptionsIdentification; +import org.tianocore.frameworkwizard.module.Identifications.BuildOptions.BuildOptionsVector; +import org.tianocore.frameworkwizard.module.ui.dialog.BuildOptionsDlg; + +/** + The class is used to create, update BuildOptions of MSA/MBD file + It extends IInternalFrame + + + + **/ +public class ModuleBuildOptions extends IInternalFrame { + + /// + /// Define class Serial Version UID + /// + private static final long serialVersionUID = -3888558623432442561L; + + // + //Define class members + // + private JPanel jContentPane = null; + + private JButton jButtonAdd = null; + + private JButton jButtonRemove = null; + + private JButton jButtonUpdate = null; + + private JScrollPane jScrollPane = null; + + private JScrollPane jScrollPaneTable = null; + + private JTable jTable = null; + + // + // Not used by UI + // + private OpeningModuleType omt = null; + + private ModuleSurfaceArea msa = null; + + private ModuleBuildOptionsDocument.ModuleBuildOptions mbo = null; + + private List ue = null; + + private BuildOptionsIdentification id = null; + + private BuildOptionsVector vid = new BuildOptionsVector(); + + private IDefaultTableModel model = null; + + private int selectedRow = -1; + + /** + This method initializes jButtonAdd + + @return javax.swing.JButton jButtonAdd + + **/ + private JButton getJButtonAdd() { + if (jButtonAdd == null) { + jButtonAdd = new JButton(); + jButtonAdd.setBounds(new java.awt.Rectangle(210, 195, 90, 20)); + jButtonAdd.setText("Add"); + jButtonAdd.addActionListener(this); + jButtonAdd.setPreferredSize(new java.awt.Dimension(90, 20)); + } + return jButtonAdd; + } + + /** + This method initializes jButtonRemove + + @return javax.swing.JButton jButtonRemove + + **/ + private JButton getJButtonRemove() { + if (jButtonRemove == null) { + jButtonRemove = new JButton(); + jButtonRemove.setBounds(new java.awt.Rectangle(390, 195, 90, 20)); + jButtonRemove.setText("Remove"); + jButtonRemove.addActionListener(this); + jButtonRemove.setPreferredSize(new java.awt.Dimension(90, 20)); + } + return jButtonRemove; + } + + /** + This method initializes jButtonUpdate + + @return javax.swing.JButton jButtonUpdate + + **/ + private JButton getJButtonUpdate() { + if (jButtonUpdate == null) { + jButtonUpdate = new JButton(); + jButtonUpdate.setBounds(new java.awt.Rectangle(315, 195, 90, 20)); + jButtonUpdate.setPreferredSize(new java.awt.Dimension(90, 20)); + jButtonUpdate.setText("Edit"); + jButtonUpdate.addActionListener(this); + } + return jButtonUpdate; + } + + /** + This method initializes jScrollPane + + @return javax.swing.JScrollPane + */ + private JScrollPane getJScrollPane() { + if (jScrollPane == null) { + jScrollPane = new JScrollPane(); + jScrollPane.setViewportView(getJContentPane()); + } + return jScrollPane; + } + + /** + This method initializes jScrollPaneTable + + @return javax.swing.JScrollPane + **/ + private JScrollPane getJScrollPaneTable() { + if (jScrollPaneTable == null) { + jScrollPaneTable = new JScrollPane(); + jScrollPaneTable.setBounds(new java.awt.Rectangle(15, 10, 470, 420)); + jScrollPaneTable.setPreferredSize(new Dimension(470, 420)); + jScrollPaneTable.setViewportView(getJTable()); + } + return jScrollPaneTable; + } + + /** + This method initializes jTable + + @return javax.swing.JTable + **/ + private JTable getJTable() { + if (jTable == null) { + jTable = new JTable(); + model = new IDefaultTableModel(); + jTable = new JTable(model); + jTable.setRowHeight(20); + + model.addColumn("Option String Value"); + + jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + jTable.getSelectionModel().addListSelectionListener(this); + jTable.getModel().addTableModelListener(this); + jTable.addMouseListener(this); + } + return jTable; + } + + public static void main(String[] args) { + } + + /** + This method initializes this + + **/ + private void init() { + this.setSize(500, 515); + this.setContentPane(getJScrollPane()); + this.setTitle("Boot Modes"); + } + + /** + This method initializes this + Fill values to all fields if these values are not empty + + @param inBuildOptions + + **/ + private void init(ModuleBuildOptionsDocument.ModuleBuildOptions inModuleBuildOptions) { + init(); + this.mbo = inModuleBuildOptions; + + if (this.mbo != null) { + // + // Save User Extensitions + // + if (this.mbo.getUserExtensionsList() != null) { + this.ue = this.mbo.getUserExtensionsList(); + } + + if (this.mbo.getOptions() != null) { + if (this.mbo.getOptions().getOptionList() != null) { + for (int index = 0; index < this.mbo.getOptions().getOptionList().size(); index++) { + Option o = this.mbo.getOptions().getOptionList().get(index); + if (o != null) { + String arg0 = o.getStringValue(); + Vector arg1 = Tools.convertListToVector(o.getBuildTargets()); + String arg2 = o.getToolChainFamily(); + String arg3 = o.getTagName(); + String arg4 = o.getToolCode(); + Vector arg5 = Tools.convertListToVector(o.getSupArchList()); + + id = new BuildOptionsIdentification(arg0, arg1, arg2, arg3, arg4, arg5); + vid.addBuildOptions(id); + } + } + } + } + } + showTable(); + } + + /** + This is the default constructor + + **/ + public ModuleBuildOptions() { + super(); + init(); + this.setVisible(true); + } + + /** + This is the override edit constructor + + @param inBuildOptions The input BuildOptionsDocument.BuildOptions + + **/ + public ModuleBuildOptions(OpeningModuleType inOmt) { + super(); + this.omt = inOmt; + this.msa = omt.getXmlMsa(); + init(msa.getModuleBuildOptions()); + this.setVisible(true); + } + + /** + This method initializes jContentPane + + @return javax.swing.JPanel jContentPane + + **/ + private JPanel getJContentPane() { + if (jContentPane == null) { + jContentPane = new JPanel(); + jContentPane.setLayout(null); + jContentPane.setPreferredSize(new java.awt.Dimension(490, 490)); + + jContentPane.add(getJButtonAdd(), null); + jContentPane.add(getJButtonRemove(), null); + jContentPane.add(getJButtonUpdate(), null); + jContentPane.add(getJScrollPaneTable(), null); + } + return jContentPane; + } + + private void showEdit(int index) { + BuildOptionsDlg dlg = new BuildOptionsDlg(vid.getBuildOptions(index), new IFrame(), omt.getId()); + int result = dlg.showDialog(); + if (result == DataType.RETURN_TYPE_OK) { + if (index == -1) { + this.vid.addBuildOptions(dlg.getId()); + } else { + this.vid.setBuildOptions(dlg.getId(), index); + } + this.showTable(); + this.save(); + dlg.dispose(); + } + if (result == DataType.RETURN_TYPE_CANCEL) { + dlg.dispose(); + } + } + + /** + Clear all table rows + + **/ + private void clearAll() { + if (model != null) { + for (int index = model.getRowCount() - 1; index >= 0; index--) { + model.removeRow(index); + } + } + } + + /** + Read content of vector and put then into table + + **/ + private void showTable() { + clearAll(); + + if (vid.size() > 0) { + for (int index = 0; index < vid.size(); index++) { + model.addRow(vid.toStringVector(index)); + } + } + this.jTable.repaint(); + this.jTable.updateUI(); + } + + /* (non-Javadoc) + * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) + * + * Override actionPerformed to listen all actions + * + */ + public void actionPerformed(ActionEvent arg0) { + if (arg0.getSource() == jButtonAdd) { + showEdit(-1); + } + if (arg0.getSource() == jButtonUpdate) { + if (this.selectedRow < 0) { + Log.wrn("Update Boot Modes", "Please select one record first."); + return; + } + showEdit(selectedRow); + } + + if (arg0.getSource() == jButtonRemove) { + if (jTable.isEditing()) { + jTable.getCellEditor().stopCellEditing(); + } + if (selectedRow > -1) { + this.model.removeRow(selectedRow); + this.vid.removeBuildOptions(selectedRow); + selectedRow = -1; + this.save(); + } + } + } + + /** + Save all components of Mbd Header + if exists BuildOptions, set the value directly + if not exists BuildOptions, new an instance first + + **/ + public void save() { + try { + int count = this.vid.size(); + + this.mbo = ModuleBuildOptionsDocument.ModuleBuildOptions.Factory.newInstance(); + this.mbo.addNewOptions(); + // + // Restore User Extensions Data + // + if (this.ue != null) { + for (int index = 0; index < this.ue.size(); index++) { + this.mbo.addNewUserExtensions(); + this.mbo.setUserExtensionsArray(index, ue.get(index)); + } + } + + if (count > 0) { + for (int index = 0; index < count; index++) { + Option o = Option.Factory.newInstance(); + if (!isEmpty(vid.getBuildOptions(index).getOption())) { + o.setStringValue(vid.getBuildOptions(index).getOption()); + } + if (vid.getBuildOptions(index).getBuildTargets() != null + && vid.getBuildOptions(index).getBuildTargets().size() > 0) { + o.setBuildTargets(vid.getBuildOptions(index).getBuildTargets()); + } + if (!isEmpty(vid.getBuildOptions(index).getToolChainFamily())) { + o.setToolChainFamily(vid.getBuildOptions(index).getToolChainFamily()); + } + if (!isEmpty(vid.getBuildOptions(index).getTagName())) { + o.setTagName(vid.getBuildOptions(index).getTagName()); + } + if (!isEmpty(vid.getBuildOptions(index).getToolCode())) { + o.setToolCode(vid.getBuildOptions(index).getToolCode()); + } + if (vid.getBuildOptions(index).getSupArchList() != null + && vid.getBuildOptions(index).getSupArchList().size() > 0) { + o.setSupArchList(vid.getBuildOptions(index).getSupArchList()); + } + + this.mbo.getOptions().addNewOption(); + this.mbo.getOptions().setOptionArray(this.mbo.getOptions().getOptionList().size() - 1, o); + } + } + + this.msa.setModuleBuildOptions(this.mbo); + this.omt.setSaved(false); + } catch (Exception e) { + Log.wrn("Update Module Build Options", e.getMessage()); + Log.err("Update Module Build Options", e.getMessage()); + } + } + + /* (non-Javadoc) + * @see javax.swing.event.ListSelectionListener#valueChanged(javax.swing.event.ListSelectionEvent) + * + */ + public void valueChanged(ListSelectionEvent arg0) { + if (arg0.getValueIsAdjusting()) { + return; + } + ListSelectionModel lsm = (ListSelectionModel) arg0.getSource(); + if (lsm.isSelectionEmpty()) { + return; + } else { + selectedRow = lsm.getMinSelectionIndex(); + } + } + + /* (non-Javadoc) + * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent) + * + */ + public void mouseClicked(MouseEvent arg0) { + if (arg0.getClickCount() == 2) { + if (this.selectedRow < 0) { + return; + } else { + showEdit(selectedRow); + } + } + } + + /* (non-Javadoc) + * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent) + * + * Override componentResized to resize all components when frame's size is changed + */ + public void componentResized(ComponentEvent arg0) { + int intCurrentWidth = this.getJContentPane().getWidth(); + int intCurrentHeight = this.getJContentPane().getHeight(); + int intPreferredWidth = this.getJContentPane().getPreferredSize().width; + int intPreferredHeight = this.getJContentPane().getPreferredSize().height; + + Tools.resizeComponent(this.jScrollPaneTable, intCurrentWidth, intCurrentHeight, intPreferredWidth, + intPreferredHeight); + Tools.relocateComponent(this.jButtonAdd, intCurrentWidth, intCurrentHeight, intPreferredWidth, + intPreferredHeight, DataType.SPACE_TO_RIGHT_FOR_ADD_BUTTON, + DataType.SPACE_TO_BOTTOM_FOR_ADD_BUTTON); + Tools.relocateComponent(this.jButtonRemove, intCurrentWidth, intCurrentHeight, intPreferredWidth, + intPreferredHeight, DataType.SPACE_TO_RIGHT_FOR_REMOVE_BUTTON, + DataType.SPACE_TO_BOTTOM_FOR_REMOVE_BUTTON); + Tools.relocateComponent(this.jButtonUpdate, intCurrentWidth, intCurrentHeight, intPreferredWidth, + intPreferredHeight, DataType.SPACE_TO_RIGHT_FOR_UPDATE_BUTTON, + DataType.SPACE_TO_BOTTOM_FOR_UPDATE_BUTTON); + } +} diff --git a/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/BuildOptionsDlg.java b/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/BuildOptionsDlg.java new file mode 100644 index 0000000000..a4bad7e40a --- /dev/null +++ b/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/BuildOptionsDlg.java @@ -0,0 +1,495 @@ +/** @file + + The file is used to create, update SourceFiles section of the MSA file + + Copyright (c) 2006, Intel Corporation + All rights reserved. This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + **/ +package org.tianocore.frameworkwizard.module.ui.dialog; + +import java.awt.event.ActionEvent; +import java.util.Vector; + +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTextField; + +import org.tianocore.frameworkwizard.common.DataType; +import org.tianocore.frameworkwizard.common.DataValidation; +import org.tianocore.frameworkwizard.common.EnumerationData; +import org.tianocore.frameworkwizard.common.Log; +import org.tianocore.frameworkwizard.common.Tools; +import org.tianocore.frameworkwizard.common.ui.ArchCheckBox; +import org.tianocore.frameworkwizard.common.ui.IComboBox; +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.common.ui.iCheckBoxList.ICheckBoxList; +import org.tianocore.frameworkwizard.module.Identifications.ModuleIdentification; +import org.tianocore.frameworkwizard.module.Identifications.BuildOptions.BuildOptionsIdentification; +import org.tianocore.frameworkwizard.workspace.WorkspaceTools; + +/** + * The class is used to create, update SourceFiles section of the MSA file + * + * It extends IDialog + * + **/ +public class BuildOptionsDlg extends IDialog { + + /// + /// Define class Serial Version UID + /// + private static final long serialVersionUID = -6765742852142775378L; + + // + // Define class members + // + private JPanel jContentPane = null; + + private JLabel jLabelFileName = null; + + private JTextField jTextFieldFileOption = null; + + private JLabel jLabelToolChainFamily = null; + + private StarLabel jStarLabel1 = null; + + private JLabel jLabelArch = null; + + private JScrollPane jScrollPane = null; + + private JLabel jLabelTagName = null; + + private JTextField jTextFieldTagName = null; + + private JLabel jLabelToolCode = null; + + private JTextField jTextFieldToolCode = null; + + private IComboBox iComboBoxToolCode = null; + + private JTextField jTextFieldToolChainFamily = null; + + private ArchCheckBox jArchCheckBox = null; + + private JButton jButtonOk = null; + + private JButton jButtonCancel = null; + + private JScrollPane jScrollPaneBuildTargets = null; + + private ICheckBoxList iCheckBoxListBuildTargets = null; + + // + // Not used by UI + // + private BuildOptionsIdentification id = null; + + private EnumerationData ed = new EnumerationData(); + + private WorkspaceTools wt = new WorkspaceTools(); + + private JLabel jLabelBuildTargets = null; + + /** + This method initializes jTextFieldFileOption + + @return javax.swing.JTextField jTextFieldFileOption + + **/ + private JTextField getJTextFieldSourceFilesDirectory() { + if (jTextFieldFileOption == null) { + jTextFieldFileOption = new JTextField(); + jTextFieldFileOption.setBounds(new java.awt.Rectangle(168, 12, 340, 20)); + jTextFieldFileOption.setPreferredSize(new java.awt.Dimension(340, 20)); + jTextFieldFileOption.setToolTipText("Path is relative to the MSA file and must include the file name"); + } + return jTextFieldFileOption; + } + + /** + This method initializes jScrollPane + + @return javax.swing.JScrollPane + */ + private JScrollPane getJScrollPane() { + if (jScrollPane == null) { + jScrollPane = new JScrollPane(); + jScrollPane.setViewportView(getJContentPane()); + } + return jScrollPane; + } + + /** + * This method initializes jTextFieldTagName + * + * @return javax.swing.JTextField + */ + private JTextField getJTextFieldTagName() { + if (jTextFieldTagName == null) { + jTextFieldTagName = new JTextField(); + jTextFieldTagName.setBounds(new java.awt.Rectangle(168, 37, 340, 20)); + jTextFieldTagName.setPreferredSize(new java.awt.Dimension(340, 20)); + jTextFieldTagName.setToolTipText("You may specify a specific tool chain tag name, such as BILL1"); + } + return jTextFieldTagName; + } + + private IComboBox getIComboBoxToolCode() { + if (iComboBoxToolCode == null) { + iComboBoxToolCode = new IComboBox(); + iComboBoxToolCode.setBounds(new java.awt.Rectangle(168, 62, 340, 20)); + iComboBoxToolCode.setPreferredSize(new java.awt.Dimension(340, 20)); + iComboBoxToolCode.setToolTipText("You may select a specific tool command from drop down list,
" + + "or you can DOUBLE-CLICK this field to enter your customized
" + + "tool command.
" + + "Press ENTER to save your input or press ESCAPE to quit"); + } + return iComboBoxToolCode; + } + + /** + * This method initializes jTextFieldToolCode + * + * @return javax.swing.JTextField + */ + private JTextField getJTextFieldToolCode() { + if (jTextFieldToolCode == null) { + jTextFieldToolCode = new JTextField(); + jTextFieldToolCode.setBounds(new java.awt.Rectangle(168, 62, 340, 20)); + jTextFieldToolCode.setPreferredSize(new java.awt.Dimension(340, 20)); + jTextFieldToolCode.setToolTipText("You may specify a specific tool command, such as ASM"); + jTextFieldToolCode.setVisible(false); + } + return jTextFieldToolCode; + } + + /** + * This method initializes jTextFieldToolChainFamily + * + * @return javax.swing.JTextField + */ + private JTextField getJTextFieldToolChainFamily() { + if (jTextFieldToolChainFamily == null) { + jTextFieldToolChainFamily = new JTextField(); + jTextFieldToolChainFamily.setBounds(new java.awt.Rectangle(168, 87, 340, 20)); + jTextFieldToolChainFamily.setPreferredSize(new java.awt.Dimension(340, 20)); + jTextFieldToolChainFamily.setToolTipText("You may specify a specific tool chain family, such as GCC"); + } + return jTextFieldToolChainFamily; + } + + /** + This method initializes jButtonOk + + @return javax.swing.JButton + + **/ + private JButton getJButtonOk() { + if (jButtonOk == null) { + jButtonOk = new JButton(); + jButtonOk.setBounds(new java.awt.Rectangle(317, 202, 90, 20)); + jButtonOk.setText("Ok"); + jButtonOk.addActionListener(this); + } + return jButtonOk; + } + + /** + This method initializes jButtonCancel + + @return javax.swing.JButton + + **/ + private JButton getJButtonCancel() { + if (jButtonCancel == null) { + jButtonCancel = new JButton(); + jButtonCancel.setBounds(new java.awt.Rectangle(412, 202, 90, 20)); + jButtonCancel.setText("Cancel"); + jButtonCancel.addActionListener(this); + } + return jButtonCancel; + } + + /** + This method initializes iCheckBoxListArch + + @return ICheckBoxList + **/ + private ICheckBoxList getICheckBoxListSupModuleList() { + if (iCheckBoxListBuildTargets == null) { + iCheckBoxListBuildTargets = new ICheckBoxList(); + } + return iCheckBoxListBuildTargets; + } + + /** + This method initializes jScrollPaneBuildTargets + + @return javax.swing.JScrollPane + + **/ + private JScrollPane getJScrollPaneBuildTargets() { + if (jScrollPaneBuildTargets == null) { + jScrollPaneBuildTargets = new JScrollPane(); + jScrollPaneBuildTargets.setBounds(new java.awt.Rectangle(168, 137, 340, 40)); + jScrollPaneBuildTargets.setPreferredSize(new java.awt.Dimension(340, 40)); + jScrollPaneBuildTargets.setViewportView(getICheckBoxListSupModuleList()); + } + return jScrollPaneBuildTargets; + } + + public static void main(String[] args) { + + } + + /** + This is the default constructor + + **/ + public BuildOptionsDlg(BuildOptionsIdentification inBuildOptionsIdentification, IFrame iFrame, + ModuleIdentification mid) { + super(iFrame, true); + init(inBuildOptionsIdentification, mid); + } + + /** + This method initializes this + + **/ + private void init() { + this.setSize(525, 270); + this.setContentPane(getJScrollPane()); + this.setTitle("Source Files"); + this.setViewMode(false); + this.centerWindow(); + Tools.generateComboBoxByVector(iComboBoxToolCode, ed.getVToolCode()); + this.iCheckBoxListBuildTargets.setAllItems(ed.getVBuildTargets()); + } + + /** + This method initializes this + Fill values to all fields if these values are not empty + + + @param inSourceFiles The input data of SourceFilesDocument.SourceFiles + + **/ + private void init(BuildOptionsIdentification inBuildOptionsIdentification, ModuleIdentification mid) { + init(); + + // + // Init arch with module's arch + // + this.jArchCheckBox.setEnabledItems(wt.getModuleArch(mid)); + + if (inBuildOptionsIdentification != null) { + this.jTextFieldFileOption.setText(inBuildOptionsIdentification.getOption()); + this.jTextFieldTagName.setText(inBuildOptionsIdentification.getTagName()); + + // + // Generate Tool Code selection list + // + Vector v = ed.getVToolCode(); + boolean isFind = false; + String strToolCode = inBuildOptionsIdentification.getToolCode(); + + // + // If the input value is not in the default list, add it to the list + // + if (strToolCode != null) { + for (int index = 0; index < v.size(); index++) { + if (v.elementAt(index).equals(strToolCode)) { + isFind = true; + break; + } + } + if (!isFind && !isEmpty(strToolCode)) { + v.addElement(strToolCode); + } + } + + Tools.generateComboBoxByVector(iComboBoxToolCode, v); + this.iComboBoxToolCode.setSelectedItem(strToolCode); + + this.jTextFieldToolChainFamily.setText(inBuildOptionsIdentification.getToolChainFamily()); + + this.jArchCheckBox.setSelectedItems(inBuildOptionsIdentification.getSupArchList()); + + this.iCheckBoxListBuildTargets.setAllItemsUnchecked(); + this.iCheckBoxListBuildTargets.initCheckedItem(true, inBuildOptionsIdentification.getBuildTargets()); + } + } + + /** + Disable all components when the mode is view + + @param isView true - The view mode; false - The non-view mode + + **/ + public void setViewMode(boolean isView) { + if (isView) { + this.jTextFieldFileOption.setEnabled(!isView); + } + } + + /** + This method initializes jContentPane + + @return javax.swing.JPanel jContentPane + + **/ + private JPanel getJContentPane() { + if (jContentPane == null) { + jLabelBuildTargets = new JLabel(); + jLabelBuildTargets.setBounds(new java.awt.Rectangle(12, 137, 155, 20)); + jLabelBuildTargets.setText("Build Targets"); + jArchCheckBox = new ArchCheckBox(); + jArchCheckBox.setBounds(new java.awt.Rectangle(168, 112, 340, 20)); + jArchCheckBox.setPreferredSize(new java.awt.Dimension(340, 20)); + jLabelToolCode = new JLabel(); + jLabelToolCode.setBounds(new java.awt.Rectangle(12, 62, 155, 20)); + jLabelToolCode.setText("Tool Code"); + jLabelTagName = new JLabel(); + jLabelTagName.setBounds(new java.awt.Rectangle(12, 37, 155, 20)); + jLabelTagName.setText("Tag Name"); + jLabelArch = new JLabel(); + jLabelArch.setBounds(new java.awt.Rectangle(12, 112, 155, 20)); + jLabelArch.setText("Supported Architectures"); + jLabelToolChainFamily = new JLabel(); + jLabelToolChainFamily.setBounds(new java.awt.Rectangle(12, 87, 155, 20)); + jLabelToolChainFamily.setText("Tool Chain Family"); + jLabelFileName = new JLabel(); + jLabelFileName.setText("Option String"); + jLabelFileName.setBounds(new java.awt.Rectangle(12, 12, 155, 20)); + + jContentPane = new JPanel(); + jContentPane.setLayout(null); + jContentPane.setPreferredSize(new java.awt.Dimension(505, 222)); + + jContentPane.add(jLabelFileName, null); + jContentPane.add(getJTextFieldSourceFilesDirectory(), null); + jContentPane.add(jLabelToolChainFamily, null); + jStarLabel1 = new StarLabel(); + jStarLabel1.setLocation(new java.awt.Point(0, 10)); + + jContentPane.add(jStarLabel1, null); + jContentPane.add(jLabelArch, null); + jContentPane.add(jLabelTagName, null); + jContentPane.add(getJTextFieldTagName(), null); + jContentPane.add(jLabelToolCode, null); + jContentPane.add(getJTextFieldToolCode(), null); + jContentPane.add(getIComboBoxToolCode(), null); + jContentPane.add(getJTextFieldToolChainFamily(), null); + jContentPane.add(jArchCheckBox, null); + jContentPane.add(getJButtonOk(), null); + jContentPane.add(getJButtonCancel(), null); + jContentPane.add(jLabelBuildTargets, null); + jContentPane.add(getJScrollPaneBuildTargets(), null); + } + return jContentPane; + } + + /* (non-Javadoc) + * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) + * + * Override actionPerformed to listen all actions + * + */ + public void actionPerformed(ActionEvent arg0) { + if (arg0.getSource() == jButtonOk) { + if (checkAdd()) { + getCurrentId(); + this.returnType = DataType.RETURN_TYPE_OK; + this.setVisible(false); + } + } + + if (arg0.getSource() == jButtonCancel) { + this.returnType = DataType.RETURN_TYPE_CANCEL; + this.setVisible(false); + } + } + + private BuildOptionsIdentification getCurrentId() { + String arg0 = this.jTextFieldFileOption.getText(); + Vector arg1 = this.iCheckBoxListBuildTargets.getAllCheckedItemsString(); + String arg2 = this.jTextFieldToolChainFamily.getText(); + String arg3 = this.jTextFieldTagName.getText(); + String arg4 = this.iComboBoxToolCode.getSelectedItem().toString(); + if (arg4.equals(DataType.EMPTY_SELECT_ITEM)) { + arg4 = ""; + } + Vector arg5 = this.jArchCheckBox.getSelectedItemsVector(); + + id = new BuildOptionsIdentification(arg0, arg1, arg2, arg3, arg4, arg5); + return id; + } + + /** + Data validation for all fields + + @retval true - All datas are valid + @retval false - At least one data is invalid + + **/ + public boolean checkAdd() { + // + // Check Option + // + if (isEmpty(this.jTextFieldFileOption.getText())) { + Log.wrn("Update Build Options", "Option String must be entered!"); + return false; + } + + // + // Check TagName + // + if (!isEmpty(this.jTextFieldTagName.getText())) { + if (!DataValidation.isTagName(this.jTextFieldTagName.getText())) { + Log.wrn("Update Build Options", "Incorrect data type for Tag Name"); + return false; + } + } + + // + // Check ToolCode + // + if (!isEmpty(this.jTextFieldToolCode.getText())) { + if (!DataValidation.isToolCode(this.jTextFieldToolCode.getText())) { + Log.wrn("Update Build Options", "Incorrect data type for Tool Code"); + return false; + } + } + + // + // Check ToolChainFamily + // + if (!isEmpty(this.jTextFieldToolChainFamily.getText())) { + if (!DataValidation.isToolChainFamily(this.jTextFieldToolChainFamily.getText())) { + Log.wrn("Update Build Options", "Incorrect data type for Tool Chain Family"); + return false; + } + } + + return true; + } + + public BuildOptionsIdentification getId() { + return id; + } + + public void setId(BuildOptionsIdentification id) { + this.id = id; + } +} -- 2.39.2