summaryrefslogtreecommitdiff
path: root/Tools/Java
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/Java')
-rw-r--r--Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdHeader.java50
-rw-r--r--Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFileContents.java241
-rw-r--r--Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFrameworkModules.java1
-rw-r--r--Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdHeader.java59
-rw-r--r--Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdModuleSA.java151
5 files changed, 342 insertions, 160 deletions
diff --git a/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdHeader.java b/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdHeader.java
index 58701918c9..8ee2da170c 100644
--- a/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdHeader.java
+++ b/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdHeader.java
@@ -36,6 +36,8 @@ import org.tianocore.frameworkwizard.common.Identifications.OpeningPackageType;
import org.tianocore.frameworkwizard.common.ui.IInternalFrame;
import org.tianocore.frameworkwizard.common.ui.StarLabel;
import javax.swing.JCheckBox;
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
/**
The class is used to create, update spdHeader of Spd file
@@ -44,7 +46,7 @@ import javax.swing.JCheckBox;
@since PackageEditor 1.0
**/
-public class SpdHeader extends IInternalFrame {
+public class SpdHeader extends IInternalFrame implements DocumentListener{
private int dialogWidth = 560;
@@ -185,6 +187,7 @@ public class SpdHeader extends IInternalFrame {
jPackageNameTextField = new JTextField();
jPackageNameTextField.setBounds(new java.awt.Rectangle(valueColumn, rowOne, valueWidth, oneRowHeight));
jPackageNameTextField.setPreferredSize(new java.awt.Dimension(valueWidth, oneRowHeight));
+ jPackageNameTextField.getDocument().addDocumentListener(this);
jPackageNameTextField.addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent e) {
if (!DataValidation.isUiNameType(jPackageNameTextField.getText())) {
@@ -194,7 +197,6 @@ public class SpdHeader extends IInternalFrame {
if (jPackageNameTextField.getText().equals(sfc.getSpdHdrPkgName())) {
return;
}
- docConsole.setSaved(false);
sfc.setSpdHdrPkgName(jPackageNameTextField.getText());
}
});
@@ -213,6 +215,7 @@ public class SpdHeader extends IInternalFrame {
jGuidTextField = new JTextField();
jGuidTextField.setBounds(new java.awt.Rectangle(valueColumn, rowTwo, shortValueWidth, oneRowHeight));
jGuidTextField.setPreferredSize(new java.awt.Dimension(shortValueWidth, oneRowHeight));
+ jGuidTextField.getDocument().addDocumentListener(this);
jGuidTextField.addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent e) {
if (!DataValidation.isGuid(jGuidTextField.getText())) {
@@ -222,7 +225,6 @@ public class SpdHeader extends IInternalFrame {
if (jGuidTextField.getText().equals(sfc.getSpdHdrGuidValue())) {
return;
}
- docConsole.setSaved(false);
sfc.setSpdHdrGuidValue(jGuidTextField.getText());
}
});
@@ -241,6 +243,7 @@ public class SpdHeader extends IInternalFrame {
jVersionTextField = new JTextField();
jVersionTextField.setBounds(new java.awt.Rectangle(valueColumn, rowThree, valueWidth, oneRowHeight));
jVersionTextField.setPreferredSize(new java.awt.Dimension(valueWidth, oneRowHeight));
+ jVersionTextField.getDocument().addDocumentListener(this);
jVersionTextField.addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent e) {
if (!DataValidation.isVersion(jVersionTextField.getText())) {
@@ -250,7 +253,6 @@ public class SpdHeader extends IInternalFrame {
if (jVersionTextField.getText().equals(sfc.getSpdHdrVer())) {
return;
}
- docConsole.setSaved(false);
sfc.setSpdHdrVer(jVersionTextField.getText());
}
});
@@ -283,8 +285,8 @@ public class SpdHeader extends IInternalFrame {
private JTextArea getJLicenseTextArea() {
if (jLicenseTextArea == null) {
jLicenseTextArea = new JTextArea();
- // jLicenseTextArea.setText("");
jLicenseTextArea.setLineWrap(true);
+ jLicenseTextArea.getDocument().addDocumentListener(this);
jLicenseTextArea.addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent e) {
if (jLicenseTextArea.getText().length() == 0) {
@@ -294,7 +296,6 @@ public class SpdHeader extends IInternalFrame {
if (jLicenseTextArea.getText().equals(sfc.getSpdHdrLicense())) {
return;
}
- docConsole.setSaved(false);
sfc.setSpdHdrLicense(jLicenseTextArea.getText());
}
});
@@ -312,6 +313,7 @@ public class SpdHeader extends IInternalFrame {
if (jDescriptionTextArea == null) {
jDescriptionTextArea = new JTextArea();
jDescriptionTextArea.setLineWrap(true);
+ jDescriptionTextArea.getDocument().addDocumentListener(this);
jDescriptionTextArea.addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent e) {
if (jDescriptionTextArea.getText().length() == 0) {
@@ -323,7 +325,6 @@ public class SpdHeader extends IInternalFrame {
if (jDescriptionTextArea.getText().equals(sfc.getSpdHdrDescription())) {
return;
}
- docConsole.setSaved(false);
sfc.setSpdHdrDescription(jDescriptionTextArea.getText());
}
});
@@ -400,6 +401,7 @@ public class SpdHeader extends IInternalFrame {
jAbstractTextField = new JTextField();
jAbstractTextField.setBounds(new java.awt.Rectangle(valueColumn, rowSeven, valueWidth, oneRowHeight));
jAbstractTextField.setPreferredSize(new java.awt.Dimension(valueWidth, oneRowHeight));
+ jAbstractTextField.getDocument().addDocumentListener(this);
jAbstractTextField.addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent e) {
if (!DataValidation.isAbstract(jAbstractTextField.getText())) {
@@ -409,7 +411,6 @@ public class SpdHeader extends IInternalFrame {
if (jAbstractTextField.getText().equals(sfc.getSpdHdrAbs())) {
return;
}
- docConsole.setSaved(false);
sfc.setSpdHdrAbs(jAbstractTextField.getText());
}
});
@@ -438,6 +439,7 @@ public class SpdHeader extends IInternalFrame {
jCopyrightTextArea = new JTextArea();
jCopyrightTextArea.setWrapStyleWord(true);
jCopyrightTextArea.setLineWrap(true);
+ jCopyrightTextArea.getDocument().addDocumentListener(this);
jCopyrightTextArea.addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent e) {
if (!DataValidation.isCopyright(jCopyrightTextArea.getText())) {
@@ -447,7 +449,6 @@ public class SpdHeader extends IInternalFrame {
if (jCopyrightTextArea.getText().equals(sfc.getSpdHdrCopyright())) {
return;
}
- docConsole.setSaved(false);
sfc.setSpdHdrCopyright(jCopyrightTextArea.getText());
}
});
@@ -465,6 +466,7 @@ public class SpdHeader extends IInternalFrame {
jUrlTextField = new JTextField();
jUrlTextField.setBounds(new java.awt.Rectangle(valueColumn, rowSix, valueWidth, oneRowHeight));
jUrlTextField.setPreferredSize(new java.awt.Dimension(valueWidth, oneRowHeight));
+ jUrlTextField.getDocument().addDocumentListener(this);
jUrlTextField.addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent e) {
if (jUrlTextField.getText().length() == 0 && sfc.getSpdHdrUrl() == null) {
@@ -475,7 +477,6 @@ public class SpdHeader extends IInternalFrame {
}
sfc.setSpdHdrLicense(jLicenseTextArea.getText());
sfc.setSpdHdrUrl(jUrlTextField.getText());
- docConsole.setSaved(false);
}
});
}
@@ -731,7 +732,6 @@ public class SpdHeader extends IInternalFrame {
if (arg0.getSource() == jGenerateGuidButton) {
//ToDo: invoke GuidValueEditor
jGuidTextField.setText(Tools.generateUuidString());
- docConsole.setSaved(false);
sfc.setSpdHdrGuidValue(jGuidTextField.getText());
}
}
@@ -785,4 +785,32 @@ public class SpdHeader extends IInternalFrame {
}
return topScrollPane;
}
+
+ /* (non-Javadoc)
+ * @see javax.swing.event.DocumentListener#changedUpdate(javax.swing.event.DocumentEvent)
+ */
+ public void changedUpdate(DocumentEvent arg0) {
+ // TODO Auto-generated method stub
+
+ }
+
+ /* (non-Javadoc)
+ * @see javax.swing.event.DocumentListener#insertUpdate(javax.swing.event.DocumentEvent)
+ */
+ public void insertUpdate(DocumentEvent arg0) {
+ // TODO Auto-generated method stub
+ if (docConsole != null) {
+ docConsole.setSaved(false);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see javax.swing.event.DocumentListener#removeUpdate(javax.swing.event.DocumentEvent)
+ */
+ public void removeUpdate(DocumentEvent arg0) {
+ // TODO Auto-generated method stub
+ if (docConsole != null) {
+ docConsole.setSaved(false);
+ }
+ }
}
diff --git a/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFileContents.java b/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFileContents.java
index a59b2d4f79..82a3ded696 100644
--- a/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFileContents.java
+++ b/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFileContents.java
@@ -389,9 +389,9 @@ public class FpdFileContents {
int pcdCount = getPcdDataCount(seqModuleSa);
String[][] saaModuleSaPcd = new String[pcdCount][7];
getPcdData(seqModuleSa, saaModuleSaPcd);
- String mg = moduleSa.getModuleGuid();
+ String mg = moduleSa.getModuleGuid().toLowerCase();
String mv = moduleSa.getModuleVersion();
- String pg = moduleSa.getPackageGuid();
+ String pg = moduleSa.getPackageGuid().toLowerCase();
String pv = moduleSa.getPackageVersion();
String arch = listToString(moduleSa.getSupArchList());
//
@@ -440,7 +440,7 @@ public class FpdFileContents {
ArrayList<String> al = getDynPcdMapValue(msaPcd.getCName() + " " + msaPcd.getTokenSpaceGuidCName());
if (al != null) {
for (int j = 0; j < al.size(); ++j) {
- if (al.get(j).contains(moduleKey)) {
+ if (al.get(j).startsWith(moduleKey)) {
continue msaPcdIter;
}
}
@@ -462,7 +462,7 @@ public class FpdFileContents {
: msaPcd.getDefaultValue();
genPcdData(msaPcd.getCName(), spdPcd.getToken(), msaPcd.getTokenSpaceGuidCName(),
- msaPcd.getPcdItemType().toString(), spdPcd.getDatumType() + "", defaultVal, moduleSa);
+ msaPcd.getPcdItemType().toString(), spdPcd.getDatumType() + "", defaultVal, moduleSa, spdPcd);
dataModified = true;
}
@@ -607,54 +607,49 @@ public class FpdFileContents {
* @param sa Results: HelpText, Original item type.
* @return
*/
- public boolean getPcdBuildDataInfo(ModuleIdentification mi, String cName, String tsGuid, String[] sa) throws Exception{
- try {
-
- ModuleSurfaceAreaDocument.ModuleSurfaceArea msa = (ModuleSurfaceAreaDocument.ModuleSurfaceArea)WorkspaceProfile.getModuleXmlObject(mi);
- if (msa.getPcdCoded() == null) {
- return false;
+ public boolean getPcdBuildDataInfo(ModuleIdentification mi, String cName, String tsGuid, String[] sa, Vector<String> validPcdTypes) throws Exception{
+
+ ModuleSurfaceAreaDocument.ModuleSurfaceArea msa = (ModuleSurfaceAreaDocument.ModuleSurfaceArea) WorkspaceProfile
+ .getModuleXmlObject(mi);
+ if (msa.getPcdCoded() == null) {
+ return false;
+ }
+
+ PackageIdentification[] depPkgs = SurfaceAreaQuery.getDependencePkg(null, mi);
+ //
+ // First look through MSA pcd entries.
+ //
+ List<PcdCodedDocument.PcdCoded.PcdEntry> l = msa.getPcdCoded().getPcdEntryList();
+ ListIterator li = l.listIterator();
+ while (li.hasNext()) {
+ PcdCodedDocument.PcdCoded.PcdEntry msaPcd = (PcdCodedDocument.PcdCoded.PcdEntry) li.next();
+ if (!msaPcd.getCName().equals(cName)) {
+ continue;
}
-
- Map<String, XmlObject> m = new HashMap<String, XmlObject>();
- m.put("ModuleSurfaceArea", msa);
- SurfaceAreaQuery.setDoc(m);
- PackageIdentification[] depPkgs = SurfaceAreaQuery.getDependencePkg(null, mi);
- //
- // First look through MSA pcd entries.
- //
- List<PcdCodedDocument.PcdCoded.PcdEntry> l = msa.getPcdCoded().getPcdEntryList();
- ListIterator li = l.listIterator();
- while(li.hasNext()) {
- PcdCodedDocument.PcdCoded.PcdEntry msaPcd = (PcdCodedDocument.PcdCoded.PcdEntry)li.next();
- if (!msaPcd.getCName().equals(cName)) {
- continue;
- }
- if (!msaPcd.getTokenSpaceGuidCName().equals(tsGuid)) {
- continue;
- }
- PcdDeclarationsDocument.PcdDeclarations.PcdEntry spdPcd = LookupPcdDeclaration(msaPcd, depPkgs);
- if (spdPcd == null) {
- //
- // ToDo Error
- //
- throw new PcdDeclNotFound(mi.getName() + " " + msaPcd.getCName());
- }
+ if (!msaPcd.getTokenSpaceGuidCName().equals(tsGuid)) {
+ continue;
+ }
+ PcdDeclarationsDocument.PcdDeclarations.PcdEntry spdPcd = LookupPcdDeclaration(msaPcd, depPkgs);
+ if (spdPcd == null || spdPcd.getValidUsage() == null) {
//
- // Get Pcd help text and original item type.
+ // ToDo Error
//
- sa[0] = spdPcd.getHelpText() + msaPcd.getHelpText();
- sa[1] = msaPcd.getPcdItemType()+"";
- sa[2] = msa.getModuleDefinitions().getBinaryModule()+"";
- return true;
+ throw new PcdDeclNotFound(mi.getName() + " " + msaPcd.getCName());
}
-
-
- }
- catch (Exception e){
- e.printStackTrace();
- throw e;
+ //
+ // Get Pcd help text and original item type.
+ //
+ sa[0] = spdPcd.getHelpText() + msaPcd.getHelpText();
+ sa[1] = msaPcd.getPcdItemType() + "";
+ sa[2] = msa.getModuleDefinitions().getBinaryModule() + "";
+ ListIterator iter = spdPcd.getValidUsage().listIterator();
+ while (iter.hasNext()) {
+ String usage = iter.next().toString();
+ validPcdTypes.add(usage);
+ }
+ return true;
}
-
+
return false;
}
@@ -1151,46 +1146,40 @@ public class FpdFileContents {
public void addFrameworkModulesPcdBuildDefs(ModuleIdentification mi, String arch, ModuleSADocument.ModuleSA moduleSa) throws Exception {
//ToDo add Arch filter
- try {
- if (moduleSa == null) {
- moduleSa = genModuleSA(mi, arch);
- }
-
- ModuleSurfaceAreaDocument.ModuleSurfaceArea msa = (ModuleSurfaceAreaDocument.ModuleSurfaceArea)WorkspaceProfile.getModuleXmlObject(mi);
- if (msa.getPcdCoded() == null) {
- return;
- }
-
- Map<String, XmlObject> m = new HashMap<String, XmlObject>();
- m.put("ModuleSurfaceArea", msa);
- SurfaceAreaQuery.setDoc(m);
- PackageIdentification[] depPkgs = SurfaceAreaQuery.getDependencePkg(null, mi);
- //
- // Implementing InitializePlatformPcdBuildDefinitions
- //
- List<PcdCodedDocument.PcdCoded.PcdEntry> l = msa.getPcdCoded().getPcdEntryList();
- ListIterator li = l.listIterator();
- while(li.hasNext()) {
- PcdCodedDocument.PcdCoded.PcdEntry msaPcd = (PcdCodedDocument.PcdCoded.PcdEntry)li.next();
- PcdDeclarationsDocument.PcdDeclarations.PcdEntry spdPcd = LookupPcdDeclaration(msaPcd, depPkgs);
- if (spdPcd == null) {
- //
- // ToDo Error
- //
- throw new PcdDeclNotFound("No Declaration for PCD Entry " + msaPcd.getCName() + " in Module " + mi.getName());
- }
+ if (moduleSa == null) {
+ moduleSa = genModuleSA(mi, arch);
+ }
+
+ ModuleSurfaceAreaDocument.ModuleSurfaceArea msa = (ModuleSurfaceAreaDocument.ModuleSurfaceArea) WorkspaceProfile
+ .getModuleXmlObject(mi);
+ if (msa.getPcdCoded() == null) {
+ return;
+ }
+
+ PackageIdentification[] depPkgs = SurfaceAreaQuery.getDependencePkg(null, mi);
+ //
+ // Implementing InitializePlatformPcdBuildDefinitions
+ //
+ List<PcdCodedDocument.PcdCoded.PcdEntry> l = msa.getPcdCoded().getPcdEntryList();
+ ListIterator li = l.listIterator();
+ while (li.hasNext()) {
+ PcdCodedDocument.PcdCoded.PcdEntry msaPcd = (PcdCodedDocument.PcdCoded.PcdEntry) li.next();
+ PcdDeclarationsDocument.PcdDeclarations.PcdEntry spdPcd = LookupPcdDeclaration(msaPcd, depPkgs);
+ if (spdPcd == null) {
//
- // AddItem to ModuleSA PcdBuildDefinitions
+ // ToDo Error
//
- String defaultVal = msaPcd.getDefaultValue() == null ? spdPcd.getDefaultValue() : msaPcd.getDefaultValue();
-
- genPcdData(msaPcd.getCName(), spdPcd.getToken(), msaPcd.getTokenSpaceGuidCName(), msaPcd.getPcdItemType().toString(), spdPcd.getDatumType()+"", defaultVal, moduleSa);
+ throw new PcdDeclNotFound("No Declaration for PCD Entry " + msaPcd.getCName() + " in Module "
+ + mi.getName());
}
-
- }
- catch (Exception e){
-
- throw e;
+ //
+ // AddItem to ModuleSA PcdBuildDefinitions
+ //
+ String defaultVal = msaPcd.getDefaultValue() == null ? spdPcd.getDefaultValue() : msaPcd.getDefaultValue();
+
+ genPcdData(msaPcd.getCName(), spdPcd.getToken(), msaPcd.getTokenSpaceGuidCName(), msaPcd.getPcdItemType()
+ .toString(),
+ spdPcd.getDatumType() + "", defaultVal, moduleSa, spdPcd);
}
}
@@ -1251,7 +1240,25 @@ public class FpdFileContents {
return msa;
}
- private void genPcdData (String cName, Object token, String tsGuid, String itemType, String dataType, String defaultVal, ModuleSADocument.ModuleSA moduleSa)
+ private String chooseDefaultPcdType (List validPcdTypes) {
+ String choosedType = "";
+ if (validPcdTypes.contains("FIXED_AT_BUILD")) {
+ choosedType = "FIXED_AT_BUILD";
+ }
+ else if (validPcdTypes.contains("DYNAMIC")) {
+ choosedType = "DYNAMIC";
+ }
+ else if (validPcdTypes.contains("PATCHABLE_IN_MODULE")) {
+ choosedType = "PATCHABLE_IN_MODULE";
+ }
+ else if (validPcdTypes.contains("DYNAMIC_EX")) {
+ choosedType = "DYNAMIC_EX";
+ }
+ return choosedType;
+ }
+
+ private void genPcdData (String cName, Object token, String tsGuid, String itemType, String dataType, String defaultVal,
+ ModuleSADocument.ModuleSA moduleSa, PcdDeclarationsDocument.PcdDeclarations.PcdEntry spdPcd)
throws PcdItemTypeConflictException, PcdValueMalFormed{
if (moduleSa.getPcdBuildDefinition() == null){
moduleSa.addNewPcdBuildDefinition();
@@ -1275,12 +1282,43 @@ public class FpdFileContents {
return;
}
}
+ // if pcd type from MSA file is Dynamic
+ // we must choose one default type from SPD file for it.
+ //
+ List validPcdTypes = spdPcd.getValidUsage();
//
// Using existing Pcd type, if this pcd already exists in other ModuleSA
//
if (pcdConsumer.size() > 0) {
+ //
+ // platform should only contain one type for each pcd.
+ //
+ String existingItemType = itemType (pcdConsumer.get(0));
+ for (int i = 1; i < pcdConsumer.size(); ++i) {
+ if (!existingItemType.equals(itemType(pcdConsumer.get(i)))) {
+ throw new PcdItemTypeConflictException (cName, pcdConsumer.get(0), pcdConsumer.get(i));
+ }
+ }
- itemType = itemType (pcdConsumer.get(0));
+ if (itemType.equals("DYNAMIC")) {
+ if (!validPcdTypes.contains(existingItemType)) {
+ throw new PcdItemTypeConflictException(cName, pcdConsumer.get(0));
+ }
+ itemType = existingItemType;
+ }
+ else {
+ if (!itemType.equals(existingItemType)) {
+ throw new PcdItemTypeConflictException(cName, pcdConsumer.get(0));
+ }
+ }
+ }
+ //
+ // if this is the first occurence of this pcd.
+ //
+ else {
+ if (itemType.equals("DYNAMIC")) {
+ itemType = chooseDefaultPcdType (validPcdTypes);
+ }
}
String listValue = moduleInfo + " " + itemType;
pcdConsumer.add(listValue);
@@ -3636,9 +3674,36 @@ class PcdItemTypeConflictException extends Exception {
private static final long serialVersionUID = 1L;
private String details = null;
- PcdItemTypeConflictException(String pcdName, String info){
+ PcdItemTypeConflictException (String pcdName, String info) {
ModuleIdentification mi = WorkspaceProfile.getModuleId(info);
- details = pcdName + " ItemType Conflicts with " + mi.getName() + " in Pkg " + mi.getPackageId().getName();
+ if (mi != null) {
+ details = pcdName + " ItemType Conflicts with " + mi.getName() + " in Pkg " + mi.getPackageId().getName();
+ }
+ else {
+ details = pcdName + " ItemType Conflicts with " + info;
+ }
+ }
+
+ PcdItemTypeConflictException (String pcdName, String info1, String info2) {
+ ModuleIdentification mi1 = WorkspaceProfile.getModuleId(info1);
+ ModuleIdentification mi2 = WorkspaceProfile.getModuleId(info2);
+ String moduleInfo1 = "";
+ String moduleInfo2 = "";
+ if (mi1 != null) {
+ moduleInfo1 = mi1.getName() + " in Pkg " + mi1.getPackageId().getName();
+ }
+ else {
+ moduleInfo1 = info1;
+ }
+
+ if (mi2 != null) {
+ moduleInfo2 = mi2.getName() + " in Pkg " + mi2.getPackageId().getName();
+ }
+ else {
+ moduleInfo2 = info2;
+ }
+
+ details = pcdName + " ItemType Conflicts in " + moduleInfo1 + " and " + moduleInfo2;
}
public String getMessage() {
diff --git a/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFrameworkModules.java b/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFrameworkModules.java
index 78ea7d641a..7c41dd9623 100644
--- a/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFrameworkModules.java
+++ b/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFrameworkModules.java
@@ -665,6 +665,7 @@ public class FpdFrameworkModules extends IInternalFrame {
private void showSettingsDlg (int row) {
try {
if (ffc.adjustPcd(row)) {
+ JOptionPane.showMessageDialog(frame, "Pcd entries sync. with those in MSA files.");
docConsole.setSaved(false);
}
}
diff --git a/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdHeader.java b/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdHeader.java
index bcb0e6f5c9..06a376bfc5 100644
--- a/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdHeader.java
+++ b/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdHeader.java
@@ -30,6 +30,8 @@ import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
@@ -48,7 +50,7 @@ import org.tianocore.frameworkwizard.common.ui.StarLabel;
@since PackageEditor 1.0
**/
-public class FpdHeader extends IInternalFrame {
+public class FpdHeader extends IInternalFrame implements DocumentListener{
private int dialogWidth = 560;
@@ -181,6 +183,7 @@ public class FpdHeader extends IInternalFrame {
jTextFieldBaseName = new JTextField();
jTextFieldBaseName.setBounds(new java.awt.Rectangle(valueColumn, rowOne, valueWidth, oneRowHeight));
jTextFieldBaseName.setPreferredSize(new java.awt.Dimension(valueWidth,oneRowHeight));
+ jTextFieldBaseName.getDocument().addDocumentListener(this);
jTextFieldBaseName.addFocusListener(new FocusAdapter(){
public void focusLost(FocusEvent e) {
if (!DataValidation.isUiNameType(jTextFieldBaseName.getText())) {
@@ -190,7 +193,6 @@ public class FpdHeader extends IInternalFrame {
if (jTextFieldBaseName.getText().equals(ffc.getFpdHdrPlatformName())) {
return;
}
- docConsole.setSaved(false);
ffc.setFpdHdrPlatformName(jTextFieldBaseName.getText());
}
});
@@ -209,6 +211,7 @@ public class FpdHeader extends IInternalFrame {
jTextFieldGuid = new JTextField();
jTextFieldGuid.setBounds(new java.awt.Rectangle(valueColumn, rowTwo, shortValueWidth, oneRowHeight));
jTextFieldGuid.setPreferredSize(new java.awt.Dimension(shortValueWidth,oneRowHeight));
+ jTextFieldGuid.getDocument().addDocumentListener(this);
jTextFieldGuid.addFocusListener(new FocusAdapter(){
public void focusLost(FocusEvent e) {
if (!DataValidation.isGuid(jTextFieldGuid.getText())) {
@@ -218,7 +221,6 @@ public class FpdHeader extends IInternalFrame {
if (jTextFieldGuid.getText().equals(ffc.getFpdHdrGuidValue())) {
return;
}
- docConsole.setSaved(false);
ffc.setFpdHdrGuidValue(jTextFieldGuid.getText());
}
});
@@ -237,6 +239,7 @@ public class FpdHeader extends IInternalFrame {
jTextFieldVersion = new JTextField();
jTextFieldVersion.setBounds(new java.awt.Rectangle(valueColumn, rowThree, valueWidth, oneRowHeight));
jTextFieldVersion.setPreferredSize(new java.awt.Dimension(valueWidth,oneRowHeight));
+ jTextFieldVersion.getDocument().addDocumentListener(this);
jTextFieldVersion.addFocusListener(new FocusAdapter(){
public void focusLost(FocusEvent e) {
if (!DataValidation.isVersion(jTextFieldVersion.getText())) {
@@ -246,7 +249,6 @@ public class FpdHeader extends IInternalFrame {
if (jTextFieldVersion.getText().equals(ffc.getFpdHdrVer())) {
return;
}
- docConsole.setSaved(false);
ffc.setFpdHdrVer(jTextFieldVersion.getText());
}
});
@@ -281,6 +283,7 @@ public class FpdHeader extends IInternalFrame {
jTextAreaLicense = new JTextArea();
jTextAreaLicense.setText("");
jTextAreaLicense.setLineWrap(true);
+ jTextAreaLicense.getDocument().addDocumentListener(this);
jTextAreaLicense.addFocusListener(new FocusAdapter(){
public void focusLost(FocusEvent e) {
if (jTextAreaLicense.getText().length() == 0) {
@@ -290,7 +293,6 @@ public class FpdHeader extends IInternalFrame {
if (jTextAreaLicense.getText().equals(ffc.getFpdHdrLicense())) {
return;
}
- docConsole.setSaved(false);
ffc.setFpdHdrLicense(jTextAreaLicense.getText());
}
});
@@ -308,6 +310,7 @@ public class FpdHeader extends IInternalFrame {
if (jTextAreaDescription == null) {
jTextAreaDescription = new JTextArea();
jTextAreaDescription.setLineWrap(true);
+ jTextAreaDescription.getDocument().addDocumentListener(this);
jTextAreaDescription.addFocusListener(new FocusAdapter(){
public void focusLost(FocusEvent e) {
if (jTextAreaDescription.getText().length() == 0) {
@@ -317,7 +320,6 @@ public class FpdHeader extends IInternalFrame {
if (jTextAreaDescription.getText().equals(ffc.getFpdHdrDescription())) {
return;
}
- docConsole.setSaved(false);
ffc.setFpdHdrDescription(jTextAreaDescription.getText());
}
});
@@ -338,11 +340,11 @@ public class FpdHeader extends IInternalFrame {
jTextFieldSpecification.setEditable(false);
jTextFieldSpecification.setPreferredSize(new java.awt.Dimension(specWidth,oneRowHeight));
jTextFieldSpecification.setBorder(null);
- jTextFieldSpecification.addFocusListener(new FocusAdapter(){
- public void focusLost(FocusEvent e) {
- ffc.setFpdHdrSpec(jTextFieldSpecification.getText());
- }
- });
+// jTextFieldSpecification.addFocusListener(new FocusAdapter(){
+// public void focusLost(FocusEvent e) {
+// ffc.setFpdHdrSpec(jTextFieldSpecification.getText());
+// }
+// });
}
return jTextFieldSpecification;
}
@@ -426,6 +428,7 @@ public class FpdHeader extends IInternalFrame {
jTextFieldAbstract = new JTextField();
jTextFieldAbstract.setBounds(new java.awt.Rectangle(valueColumn,rowSeven,valueWidth,oneRowHeight));
jTextFieldAbstract.setPreferredSize(new java.awt.Dimension(valueWidth, oneRowHeight));
+ jTextFieldAbstract.getDocument().addDocumentListener(this);
jTextFieldAbstract.addFocusListener(new FocusAdapter(){
public void focusLost(FocusEvent e) {
if (!DataValidation.isAbstract(jTextFieldAbstract.getText())) {
@@ -435,7 +438,6 @@ public class FpdHeader extends IInternalFrame {
if (jTextFieldAbstract.getText().equals(ffc.getFpdHdrAbs())) {
return;
}
- docConsole.setSaved(false);
ffc.setFpdHdrAbs(jTextFieldAbstract.getText());
}
});
@@ -464,6 +466,7 @@ public class FpdHeader extends IInternalFrame {
jCopyrightTextArea = new JTextArea();
jCopyrightTextArea.setWrapStyleWord(true);
jCopyrightTextArea.setLineWrap(true);
+ jCopyrightTextArea.getDocument().addDocumentListener(this);
jCopyrightTextArea.addFocusListener(new FocusAdapter(){
public void focusLost(FocusEvent e) {
if (!DataValidation.isCopyright(jCopyrightTextArea.getText())) {
@@ -473,7 +476,6 @@ public class FpdHeader extends IInternalFrame {
if (jCopyrightTextArea.getText().equals(ffc.getFpdHdrCopyright())) {
return;
}
- docConsole.setSaved(false);
ffc.setFpdHdrCopyright(jCopyrightTextArea.getText());
}
});
@@ -491,6 +493,7 @@ public class FpdHeader extends IInternalFrame {
jTextFieldUrl = new JTextField();
jTextFieldUrl.setBounds(new java.awt.Rectangle(valueColumn,rowSix,valueWidth,oneRowHeight));
jTextFieldUrl.setPreferredSize(new Dimension(valueWidth, oneRowHeight));
+ jTextFieldUrl.getDocument().addDocumentListener(this);
jTextFieldUrl.addFocusListener(new FocusAdapter(){
public void focusLost(FocusEvent e){
if (jTextFieldUrl.getText().length() == 0 && ffc.getFpdHdrUrl() == null) {
@@ -501,7 +504,6 @@ public class FpdHeader extends IInternalFrame {
}
ffc.setFpdHdrLicense(jTextAreaLicense.getText());
ffc.setFpdHdrUrl(jTextFieldUrl.getText());
- docConsole.setSaved(false);
}
});
}
@@ -717,7 +719,6 @@ public class FpdHeader extends IInternalFrame {
public void actionPerformed(ActionEvent arg0) {
if (arg0.getSource() == jButtonGenerateGuid) {
- docConsole.setSaved(false);
jTextFieldGuid.setText(Tools.generateUuidString());
ffc.setFpdHdrGuidValue(jTextFieldGuid.getText());
}
@@ -756,4 +757,32 @@ public class FpdHeader extends IInternalFrame {
}
+
+ /* (non-Javadoc)
+ * @see javax.swing.event.DocumentListener#changedUpdate(javax.swing.event.DocumentEvent)
+ */
+ public void changedUpdate(DocumentEvent arg0) {
+ // TODO Auto-generated method stub
+
+ }
+
+ /* (non-Javadoc)
+ * @see javax.swing.event.DocumentListener#insertUpdate(javax.swing.event.DocumentEvent)
+ */
+ public void insertUpdate(DocumentEvent arg0) {
+ // TODO Auto-generated method stub
+ if (docConsole != null) {
+ docConsole.setSaved(false);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see javax.swing.event.DocumentListener#removeUpdate(javax.swing.event.DocumentEvent)
+ */
+ public void removeUpdate(DocumentEvent arg0) {
+ // TODO Auto-generated method stub
+ if (docConsole != null) {
+ docConsole.setSaved(false);
+ }
+ }
}
diff --git a/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdModuleSA.java b/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdModuleSA.java
index 917585908c..8f6d31057f 100644
--- a/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdModuleSA.java
+++ b/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdModuleSA.java
@@ -282,8 +282,9 @@ public class FpdModuleSA extends JDialog implements ActionListener {
return;
}
- for (int j = 0; j < v.size(); ++j) {
- LibraryClassDescriptor libInfo = v.get(j);
+ Iterator<LibraryClassDescriptor> iter = v.iterator();
+ while (iter.hasNext()) {
+ LibraryClassDescriptor libInfo = iter.next();
Vector<String> vSupArchs = libInfo.getVectorFromString(libInfo.supArchs);
@@ -318,7 +319,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
//
// remove this lib definition if it supports no archs module will be built under.
//
- v.iterator().remove();
+ iter.remove();
}
}
@@ -712,9 +713,10 @@ public class FpdModuleSA extends JDialog implements ActionListener {
// array for pcd related information: helpText, itemType, moduleType.
//
String[] pcdInfo = {"", "", ""};
- getPcdInfo(cName, tsGuid, pcdInfo);
+ Vector<String> validPcdTypes = new Vector<String>();
+ getPcdInfo(moduleKey, cName, tsGuid, pcdInfo, validPcdTypes);
jTextAreaPcdHelp.setText(pcdInfo[0]);
- initComboBox(pcdInfo[1], pcdInfo[2]);
+ initComboBox(pcdInfo[1], pcdInfo[2], validPcdTypes);
jComboBoxItemType.setSelectedItem(itemType);
jTextFieldMaxDatumSize.setEnabled(true);
jTextFieldMaxDatumSize.setVisible(true);
@@ -768,15 +770,16 @@ public class FpdModuleSA extends JDialog implements ActionListener {
return jTablePcd;
}
- private void initComboBox(String originalType, String mType) {
+ private void initComboBox(String originalType, String mType, Vector<String> validPcdTypes) {
jComboBoxItemType.removeAllItems();
- jComboBoxItemType.addItem(originalType);
- if (originalType.equals("PATCHABLE_IN_MODULE") && mType.equalsIgnoreCase("false")) {
- jComboBoxItemType.addItem("FIXED_AT_BUILD");
- }
+
if (originalType.equals("DYNAMIC")) {
- jComboBoxItemType.addItem("FIXED_AT_BUILD");
- jComboBoxItemType.addItem("PATCHABLE_IN_MODULE");
+ for (int i = 0; i < validPcdTypes.size(); ++i) {
+ jComboBoxItemType.addItem(validPcdTypes.get(i));
+ }
+ }
+ else {
+ jComboBoxItemType.addItem(originalType);
}
}
@@ -785,17 +788,17 @@ public class FpdModuleSA extends JDialog implements ActionListener {
* @param tsGuid
* @param sa sa[0]: HelpText; sa[1]: itemType in Msa; sa[2]: isBinary;
*/
- private void getPcdInfo(String cName, String tsGuid, String[] sa) {
+ private void getPcdInfo(String moduleKey, String cName, String tsGuid, String[] sa, Vector<String> validPcdTypes) {
String[][] saa = new String[ffc.getLibraryInstancesCount(moduleKey)][5];
ffc.getLibraryInstances(moduleKey, saa);
try{
- if (ffc.getPcdBuildDataInfo(WorkspaceProfile.getModuleId(moduleKey), cName, tsGuid, sa)) {
+ if (ffc.getPcdBuildDataInfo(WorkspaceProfile.getModuleId(moduleKey), cName, tsGuid, sa, validPcdTypes)) {
return;
}
for (int j = 0; j < saa.length; ++j) {
if (ffc.getPcdBuildDataInfo(WorkspaceProfile.getModuleId(saa[j][1] + " " + saa[j][2] + " " + saa[j][3] + " " + saa[j][4]),
- cName, tsGuid, sa)) {
+ cName, tsGuid, sa, validPcdTypes)) {
return;
}
}
@@ -1657,26 +1660,25 @@ private JComboBox getJComboBoxItemType() {
if (jComboBoxItemType == null) {
jComboBoxItemType = new JComboBox();
jComboBoxItemType.setPreferredSize(new java.awt.Dimension(200,20));
- jComboBoxItemType.addItemListener(new java.awt.event.ItemListener() {
- public void itemStateChanged(java.awt.event.ItemEvent e) {
- int row = jTablePcd.getSelectedRow();
- if (row < 0 || model.getValueAt(row, 2).equals(jComboBoxItemType.getSelectedItem())) {
- return;
- }
- if (jComboBoxItemType.getItemCount() == 3) {
- if (!jComboBoxItemType.getSelectedItem().equals("DYNAMIC")) {
-
- if (jComboBoxItemType.getSelectedItem().equals("FIXED_AT_BUILD")) {
- jTextFieldPcdDefault.setText("");
- jTextFieldPcdDefault.setEnabled(true);
- }
- }
- else{
-
- }
- }
- }
- });
+// jComboBoxItemType.addItemListener(new java.awt.event.ItemListener() {
+// public void itemStateChanged(java.awt.event.ItemEvent e) {
+//
+// int row = jTablePcd.getSelectedRow();
+// if (row < 0 || model.getValueAt(row, 2).equals(jComboBoxItemType.getSelectedItem())) {
+// return;
+// }
+// if (!jComboBoxItemType.getSelectedItem().equals("DYNAMIC")) {
+//
+// if (jComboBoxItemType.getSelectedItem().equals("FIXED_AT_BUILD")) {
+// jTextFieldPcdDefault.setText("");
+// jTextFieldPcdDefault.setEnabled(true);
+// }
+// }
+// else{
+//
+// }
+// }
+// });
}
return jComboBoxItemType;
}
@@ -1698,8 +1700,8 @@ private void pcdDynamicToNonDynamic(String cName, String tsGuid) {
for (int i = 0; i < al.size(); ++i) {
String mKey = moduleInfo (al.get(i));
value = null;
- ffc.updatePcdData(mKey, cName, tsGuid, jComboBoxItemType.getSelectedItem()+"", maxSize, value);
String itemType = jComboBoxItemType.getSelectedItem()+"";
+ ffc.updatePcdData(mKey, cName, tsGuid, itemType, maxSize, value);
al.set(i, mKey + " " + itemType);
}
@@ -1710,8 +1712,8 @@ private void pcdNonDynamicToDynamic(String cName, String tsGuid) {
ArrayList<String> al = ffc.getDynPcdMapValue(cName + " " + tsGuid);
for (int i = 0; i < al.size(); ++i) {
String mKey = moduleInfo (al.get(i));
- ffc.updatePcdData(mKey, cName, tsGuid, jComboBoxItemType.getSelectedItem()+"", jTextFieldMaxDatumSize.getText(), jTextFieldPcdDefault.isVisible() ? jTextFieldPcdDefault.getText() : jComboBoxFeatureFlagValue.getSelectedItem()+"");
String itemType = jComboBoxItemType.getSelectedItem()+"";
+ ffc.updatePcdData(mKey, cName, tsGuid, itemType, jTextFieldMaxDatumSize.getText(), jTextFieldPcdDefault.isVisible() ? jTextFieldPcdDefault.getText() : jComboBoxFeatureFlagValue.getSelectedItem()+"");
al.set(i, mKey + " " + itemType);
}
try{
@@ -1722,6 +1724,16 @@ private void pcdNonDynamicToDynamic(String cName, String tsGuid) {
}
}
+private void changePcdTypeWithinSameCategory (String cName, String tsGuid) {
+ ArrayList<String> al = ffc.getDynPcdMapValue(cName + " " + tsGuid);
+ for (int i = 0; i < al.size(); ++i) {
+ String mKey = moduleInfo (al.get(i));
+ String itemType = jComboBoxItemType.getSelectedItem()+"";
+ ffc.updatePcdData(mKey, cName, tsGuid, itemType, null, null);
+ al.set(i, mKey + " " + itemType);
+ }
+}
+
private String moduleInfo (String pcdInfo) {
return pcdInfo.substring(0, pcdInfo.lastIndexOf(" "));
@@ -1767,14 +1779,17 @@ private JButton getJButtonUpdatePcd() {
if (row < 0) {
return;
}
- docConsole.setSaved(false);
+
+ String cName = model.getValueAt(row, 0)+"";
+ String tsGuid = model.getValueAt(row, 1)+"";
String oldItemType = model.getValueAt(row, 2)+"";
String newItemType = jComboBoxItemType.getSelectedItem()+"";
- model.setValueAt(newItemType, row, 2);
+
model.setValueAt(jTextFieldPcdDefault.isVisible()? jTextFieldPcdDefault.getText():jComboBoxFeatureFlagValue.getSelectedItem(), row, 6);
String[] pcdInfo = {"", "", ""};
- getPcdInfo (model.getValueAt(row, 0)+"", model.getValueAt(row, 1)+"", pcdInfo);
+ Vector<String> validPcdTypes = new Vector<String>();
+ getPcdInfo (moduleKey, cName, tsGuid, pcdInfo, validPcdTypes);
if (pcdInfo[1].equals("FIXED_AT_BUILD") && model.getValueAt(row, 5).equals("VOID*")) {
try {
jTextFieldMaxDatumSize.setText(ffc.setMaxSizeForPointer(model.getValueAt(row, 6)+"")+"");
@@ -1786,18 +1801,62 @@ private JButton getJButtonUpdatePcd() {
}
model.setValueAt(jTextFieldMaxDatumSize.getText(), row, 4);
- if (oldItemType.equals("DYNAMIC") && !newItemType.equals("DYNAMIC")) {
- pcdDynamicToNonDynamic(model.getValueAt(row, 0)+"", model.getValueAt(row, 1)+"");
- }
- if (!oldItemType.equals("DYNAMIC") && newItemType.equals("DYNAMIC")) {
- pcdNonDynamicToDynamic(model.getValueAt(row, 0)+"", model.getValueAt(row, 1)+"");
+ if (newItemType != oldItemType) {
+ Vector<ModuleIdentification> moduleInfo = new Vector<ModuleIdentification>();
+ try {
+ boolean changable = itemTypeCouldBeChanged (cName, tsGuid, newItemType, moduleInfo);
+ if (!changable) {
+ JOptionPane.showMessageDialog(frame, "Can NOT Change Pcd Type in: " + moduleInfo.get(0).getName() + " contained in package " + moduleInfo.get(0).getPackageId().getName());
+ return;
+ }
+ }
+ catch (Exception exp) {
+ JOptionPane.showMessageDialog(frame, "Can NOT Change Pcd Type in: " + moduleInfo.get(0).getName() + " contained in package " + moduleInfo.get(0).getPackageId().getName() + " " + exp.getMessage());
+ return;
+ }
+
+ if ((oldItemType.equals("DYNAMIC") || oldItemType.equals("DYNAMIC_EX")) && !newItemType.equals("DYNAMIC") && !newItemType.equals("DYNAMIC_EX")) {
+ pcdDynamicToNonDynamic(cName, tsGuid);
+ }
+ if (!oldItemType.equals("DYNAMIC") && !oldItemType.equals("DYNAMIC_EX") && (newItemType.equals("DYNAMIC") || newItemType.equals("DYNAMIC_EX"))) {
+ pcdNonDynamicToDynamic(cName, tsGuid);
+ }
+ else {
+ changePcdTypeWithinSameCategory (cName, tsGuid);
+ }
+ model.setValueAt(newItemType, row, 2);
}
- ffc.updatePcdData(moduleKey, model.getValueAt(row, 0)+"", model.getValueAt(row, 1)+"", model.getValueAt(row, 2)+"", model.getValueAt(row, 4)+"", model.getValueAt(row, 6)+"");
+
+ ffc.updatePcdData(moduleKey, cName, tsGuid, model.getValueAt(row, 2)+"", model.getValueAt(row, 4)+"", model.getValueAt(row, 6)+"");
+ docConsole.setSaved(false);
}
});
}
return jButtonUpdatePcd;
}
+
+private boolean itemTypeCouldBeChanged (String cName, String tsGuid, String newItemType, Vector<ModuleIdentification> mi) throws Exception{
+ ArrayList<String> pcdConsumers = ffc.getDynPcdMapValue(cName + " " + tsGuid);
+ for (int i = 0; i < pcdConsumers.size(); ++i) {
+ String consumerInfo = moduleInfo (pcdConsumers.get(i));
+ mi.removeAllElements();
+ mi.add(WorkspaceProfile.getModuleId(consumerInfo));
+ String[] sa = {"", "", ""};
+ Vector<String> validPcdTypes = new Vector<String>();
+ getPcdInfo (consumerInfo, cName, tsGuid, sa, validPcdTypes);
+ if (validPcdTypes.size() == 0) {
+ return false;
+ }
+ if (!sa[1].equals("DYNAMIC")) {
+ return false;
+ }
+ if (!validPcdTypes.contains(newItemType)) {
+ return false;
+ }
+ }
+ return true;
+}
+
/**
* This method initializes jComboBoxFeatureFlagValue
*