import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
import javax.swing.JCheckBox;\r
+import javax.swing.event.DocumentEvent;\r
+import javax.swing.event.DocumentListener;\r
\r
/**\r
The class is used to create, update spdHeader of Spd file\r
@since PackageEditor 1.0\r
\r
**/\r
-public class SpdHeader extends IInternalFrame {\r
+public class SpdHeader extends IInternalFrame implements DocumentListener{\r
\r
private int dialogWidth = 560;\r
\r
jPackageNameTextField = new JTextField();\r
jPackageNameTextField.setBounds(new java.awt.Rectangle(valueColumn, rowOne, valueWidth, oneRowHeight));\r
jPackageNameTextField.setPreferredSize(new java.awt.Dimension(valueWidth, oneRowHeight));\r
+ jPackageNameTextField.getDocument().addDocumentListener(this);\r
jPackageNameTextField.addFocusListener(new FocusAdapter() {\r
public void focusLost(FocusEvent e) {\r
if (!DataValidation.isUiNameType(jPackageNameTextField.getText())) {\r
if (jPackageNameTextField.getText().equals(sfc.getSpdHdrPkgName())) {\r
return;\r
}\r
- docConsole.setSaved(false);\r
sfc.setSpdHdrPkgName(jPackageNameTextField.getText());\r
}\r
});\r
jGuidTextField = new JTextField();\r
jGuidTextField.setBounds(new java.awt.Rectangle(valueColumn, rowTwo, shortValueWidth, oneRowHeight));\r
jGuidTextField.setPreferredSize(new java.awt.Dimension(shortValueWidth, oneRowHeight));\r
+ jGuidTextField.getDocument().addDocumentListener(this);\r
jGuidTextField.addFocusListener(new FocusAdapter() {\r
public void focusLost(FocusEvent e) {\r
if (!DataValidation.isGuid(jGuidTextField.getText())) {\r
if (jGuidTextField.getText().equals(sfc.getSpdHdrGuidValue())) {\r
return;\r
}\r
- docConsole.setSaved(false);\r
sfc.setSpdHdrGuidValue(jGuidTextField.getText());\r
}\r
});\r
jVersionTextField = new JTextField();\r
jVersionTextField.setBounds(new java.awt.Rectangle(valueColumn, rowThree, valueWidth, oneRowHeight));\r
jVersionTextField.setPreferredSize(new java.awt.Dimension(valueWidth, oneRowHeight));\r
+ jVersionTextField.getDocument().addDocumentListener(this);\r
jVersionTextField.addFocusListener(new FocusAdapter() {\r
public void focusLost(FocusEvent e) {\r
if (!DataValidation.isVersion(jVersionTextField.getText())) {\r
if (jVersionTextField.getText().equals(sfc.getSpdHdrVer())) {\r
return;\r
}\r
- docConsole.setSaved(false);\r
sfc.setSpdHdrVer(jVersionTextField.getText());\r
}\r
});\r
private JTextArea getJLicenseTextArea() {\r
if (jLicenseTextArea == null) {\r
jLicenseTextArea = new JTextArea();\r
- // jLicenseTextArea.setText("");\r
jLicenseTextArea.setLineWrap(true);\r
+ jLicenseTextArea.getDocument().addDocumentListener(this);\r
jLicenseTextArea.addFocusListener(new FocusAdapter() {\r
public void focusLost(FocusEvent e) {\r
if (jLicenseTextArea.getText().length() == 0) {\r
if (jLicenseTextArea.getText().equals(sfc.getSpdHdrLicense())) {\r
return;\r
}\r
- docConsole.setSaved(false);\r
sfc.setSpdHdrLicense(jLicenseTextArea.getText());\r
}\r
});\r
if (jDescriptionTextArea == null) {\r
jDescriptionTextArea = new JTextArea();\r
jDescriptionTextArea.setLineWrap(true);\r
+ jDescriptionTextArea.getDocument().addDocumentListener(this);\r
jDescriptionTextArea.addFocusListener(new FocusAdapter() {\r
public void focusLost(FocusEvent e) {\r
if (jDescriptionTextArea.getText().length() == 0) {\r
if (jDescriptionTextArea.getText().equals(sfc.getSpdHdrDescription())) {\r
return;\r
}\r
- docConsole.setSaved(false);\r
sfc.setSpdHdrDescription(jDescriptionTextArea.getText());\r
}\r
});\r
jAbstractTextField = new JTextField();\r
jAbstractTextField.setBounds(new java.awt.Rectangle(valueColumn, rowSeven, valueWidth, oneRowHeight));\r
jAbstractTextField.setPreferredSize(new java.awt.Dimension(valueWidth, oneRowHeight));\r
+ jAbstractTextField.getDocument().addDocumentListener(this);\r
jAbstractTextField.addFocusListener(new FocusAdapter() {\r
public void focusLost(FocusEvent e) {\r
if (!DataValidation.isAbstract(jAbstractTextField.getText())) {\r
if (jAbstractTextField.getText().equals(sfc.getSpdHdrAbs())) {\r
return;\r
}\r
- docConsole.setSaved(false);\r
sfc.setSpdHdrAbs(jAbstractTextField.getText());\r
}\r
});\r
jCopyrightTextArea = new JTextArea();\r
jCopyrightTextArea.setWrapStyleWord(true);\r
jCopyrightTextArea.setLineWrap(true);\r
+ jCopyrightTextArea.getDocument().addDocumentListener(this);\r
jCopyrightTextArea.addFocusListener(new FocusAdapter() {\r
public void focusLost(FocusEvent e) {\r
if (!DataValidation.isCopyright(jCopyrightTextArea.getText())) {\r
if (jCopyrightTextArea.getText().equals(sfc.getSpdHdrCopyright())) {\r
return;\r
}\r
- docConsole.setSaved(false);\r
sfc.setSpdHdrCopyright(jCopyrightTextArea.getText());\r
}\r
});\r
jUrlTextField = new JTextField();\r
jUrlTextField.setBounds(new java.awt.Rectangle(valueColumn, rowSix, valueWidth, oneRowHeight));\r
jUrlTextField.setPreferredSize(new java.awt.Dimension(valueWidth, oneRowHeight));\r
+ jUrlTextField.getDocument().addDocumentListener(this);\r
jUrlTextField.addFocusListener(new FocusAdapter() {\r
public void focusLost(FocusEvent e) {\r
if (jUrlTextField.getText().length() == 0 && sfc.getSpdHdrUrl() == null) {\r
}\r
sfc.setSpdHdrLicense(jLicenseTextArea.getText());\r
sfc.setSpdHdrUrl(jUrlTextField.getText());\r
- docConsole.setSaved(false);\r
}\r
});\r
}\r
if (arg0.getSource() == jGenerateGuidButton) {\r
//ToDo: invoke GuidValueEditor\r
jGuidTextField.setText(Tools.generateUuidString());\r
- docConsole.setSaved(false);\r
sfc.setSpdHdrGuidValue(jGuidTextField.getText());\r
}\r
}\r
}\r
return topScrollPane;\r
}\r
+\r
+ /* (non-Javadoc)\r
+ * @see javax.swing.event.DocumentListener#changedUpdate(javax.swing.event.DocumentEvent)\r
+ */\r
+ public void changedUpdate(DocumentEvent arg0) {\r
+ // TODO Auto-generated method stub\r
+ \r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see javax.swing.event.DocumentListener#insertUpdate(javax.swing.event.DocumentEvent)\r
+ */\r
+ public void insertUpdate(DocumentEvent arg0) {\r
+ // TODO Auto-generated method stub\r
+ if (docConsole != null) {\r
+ docConsole.setSaved(false);\r
+ }\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see javax.swing.event.DocumentListener#removeUpdate(javax.swing.event.DocumentEvent)\r
+ */\r
+ public void removeUpdate(DocumentEvent arg0) {\r
+ // TODO Auto-generated method stub\r
+ if (docConsole != null) {\r
+ docConsole.setSaved(false); \r
+ }\r
+ }\r
}\r
int pcdCount = getPcdDataCount(seqModuleSa);\r
String[][] saaModuleSaPcd = new String[pcdCount][7];\r
getPcdData(seqModuleSa, saaModuleSaPcd);\r
- String mg = moduleSa.getModuleGuid();\r
+ String mg = moduleSa.getModuleGuid().toLowerCase();\r
String mv = moduleSa.getModuleVersion();\r
- String pg = moduleSa.getPackageGuid();\r
+ String pg = moduleSa.getPackageGuid().toLowerCase();\r
String pv = moduleSa.getPackageVersion();\r
String arch = listToString(moduleSa.getSupArchList());\r
//\r
ArrayList<String> al = getDynPcdMapValue(msaPcd.getCName() + " " + msaPcd.getTokenSpaceGuidCName());\r
if (al != null) {\r
for (int j = 0; j < al.size(); ++j) {\r
- if (al.get(j).contains(moduleKey)) {\r
+ if (al.get(j).startsWith(moduleKey)) {\r
continue msaPcdIter;\r
}\r
}\r
: msaPcd.getDefaultValue();\r
\r
genPcdData(msaPcd.getCName(), spdPcd.getToken(), msaPcd.getTokenSpaceGuidCName(),\r
- msaPcd.getPcdItemType().toString(), spdPcd.getDatumType() + "", defaultVal, moduleSa);\r
+ msaPcd.getPcdItemType().toString(), spdPcd.getDatumType() + "", defaultVal, moduleSa, spdPcd);\r
dataModified = true;\r
}\r
\r
* @param sa Results: HelpText, Original item type.\r
* @return\r
*/\r
- public boolean getPcdBuildDataInfo(ModuleIdentification mi, String cName, String tsGuid, String[] sa) throws Exception{\r
- try {\r
- \r
- ModuleSurfaceAreaDocument.ModuleSurfaceArea msa = (ModuleSurfaceAreaDocument.ModuleSurfaceArea)WorkspaceProfile.getModuleXmlObject(mi);\r
- if (msa.getPcdCoded() == null) {\r
- return false;\r
+ public boolean getPcdBuildDataInfo(ModuleIdentification mi, String cName, String tsGuid, String[] sa, Vector<String> validPcdTypes) throws Exception{\r
+ \r
+ ModuleSurfaceAreaDocument.ModuleSurfaceArea msa = (ModuleSurfaceAreaDocument.ModuleSurfaceArea) WorkspaceProfile\r
+ .getModuleXmlObject(mi);\r
+ if (msa.getPcdCoded() == null) {\r
+ return false;\r
+ }\r
+\r
+ PackageIdentification[] depPkgs = SurfaceAreaQuery.getDependencePkg(null, mi);\r
+ //\r
+ // First look through MSA pcd entries.\r
+ //\r
+ List<PcdCodedDocument.PcdCoded.PcdEntry> l = msa.getPcdCoded().getPcdEntryList();\r
+ ListIterator li = l.listIterator();\r
+ while (li.hasNext()) {\r
+ PcdCodedDocument.PcdCoded.PcdEntry msaPcd = (PcdCodedDocument.PcdCoded.PcdEntry) li.next();\r
+ if (!msaPcd.getCName().equals(cName)) {\r
+ continue;\r
}\r
- \r
- Map<String, XmlObject> m = new HashMap<String, XmlObject>();\r
- m.put("ModuleSurfaceArea", msa);\r
- SurfaceAreaQuery.setDoc(m);\r
- PackageIdentification[] depPkgs = SurfaceAreaQuery.getDependencePkg(null, mi);\r
- //\r
- // First look through MSA pcd entries.\r
- //\r
- List<PcdCodedDocument.PcdCoded.PcdEntry> l = msa.getPcdCoded().getPcdEntryList();\r
- ListIterator li = l.listIterator();\r
- while(li.hasNext()) {\r
- PcdCodedDocument.PcdCoded.PcdEntry msaPcd = (PcdCodedDocument.PcdCoded.PcdEntry)li.next();\r
- if (!msaPcd.getCName().equals(cName)) {\r
- continue;\r
- }\r
- if (!msaPcd.getTokenSpaceGuidCName().equals(tsGuid)) {\r
- continue;\r
- }\r
- PcdDeclarationsDocument.PcdDeclarations.PcdEntry spdPcd = LookupPcdDeclaration(msaPcd, depPkgs);\r
- if (spdPcd == null) {\r
- //\r
- // ToDo Error \r
- //\r
- throw new PcdDeclNotFound(mi.getName() + " " + msaPcd.getCName());\r
- }\r
+ if (!msaPcd.getTokenSpaceGuidCName().equals(tsGuid)) {\r
+ continue;\r
+ }\r
+ PcdDeclarationsDocument.PcdDeclarations.PcdEntry spdPcd = LookupPcdDeclaration(msaPcd, depPkgs);\r
+ if (spdPcd == null || spdPcd.getValidUsage() == null) {\r
//\r
- // Get Pcd help text and original item type.\r
+ // ToDo Error \r
//\r
- sa[0] = spdPcd.getHelpText() + msaPcd.getHelpText();\r
- sa[1] = msaPcd.getPcdItemType()+"";\r
- sa[2] = msa.getModuleDefinitions().getBinaryModule()+"";\r
- return true;\r
+ throw new PcdDeclNotFound(mi.getName() + " " + msaPcd.getCName());\r
}\r
- \r
- \r
- }\r
- catch (Exception e){\r
- e.printStackTrace();\r
- throw e;\r
+ //\r
+ // Get Pcd help text and original item type.\r
+ //\r
+ sa[0] = spdPcd.getHelpText() + msaPcd.getHelpText();\r
+ sa[1] = msaPcd.getPcdItemType() + "";\r
+ sa[2] = msa.getModuleDefinitions().getBinaryModule() + "";\r
+ ListIterator iter = spdPcd.getValidUsage().listIterator();\r
+ while (iter.hasNext()) {\r
+ String usage = iter.next().toString();\r
+ validPcdTypes.add(usage);\r
+ }\r
+ return true;\r
}\r
- \r
+\r
return false;\r
}\r
\r
public void addFrameworkModulesPcdBuildDefs(ModuleIdentification mi, String arch, ModuleSADocument.ModuleSA moduleSa) throws Exception {\r
//ToDo add Arch filter\r
\r
- try {\r
- if (moduleSa == null) {\r
- moduleSa = genModuleSA(mi, arch);\r
- }\r
- \r
- ModuleSurfaceAreaDocument.ModuleSurfaceArea msa = (ModuleSurfaceAreaDocument.ModuleSurfaceArea)WorkspaceProfile.getModuleXmlObject(mi);\r
- if (msa.getPcdCoded() == null) {\r
- return;\r
- }\r
- \r
- Map<String, XmlObject> m = new HashMap<String, XmlObject>();\r
- m.put("ModuleSurfaceArea", msa);\r
- SurfaceAreaQuery.setDoc(m);\r
- PackageIdentification[] depPkgs = SurfaceAreaQuery.getDependencePkg(null, mi);\r
- //\r
- // Implementing InitializePlatformPcdBuildDefinitions\r
- //\r
- List<PcdCodedDocument.PcdCoded.PcdEntry> l = msa.getPcdCoded().getPcdEntryList();\r
- ListIterator li = l.listIterator();\r
- while(li.hasNext()) {\r
- PcdCodedDocument.PcdCoded.PcdEntry msaPcd = (PcdCodedDocument.PcdCoded.PcdEntry)li.next();\r
- PcdDeclarationsDocument.PcdDeclarations.PcdEntry spdPcd = LookupPcdDeclaration(msaPcd, depPkgs);\r
- if (spdPcd == null) {\r
- //\r
- // ToDo Error \r
- //\r
- throw new PcdDeclNotFound("No Declaration for PCD Entry " + msaPcd.getCName() + " in Module " + mi.getName());\r
- }\r
+ if (moduleSa == null) {\r
+ moduleSa = genModuleSA(mi, arch);\r
+ }\r
+\r
+ ModuleSurfaceAreaDocument.ModuleSurfaceArea msa = (ModuleSurfaceAreaDocument.ModuleSurfaceArea) WorkspaceProfile\r
+ .getModuleXmlObject(mi);\r
+ if (msa.getPcdCoded() == null) {\r
+ return;\r
+ }\r
+\r
+ PackageIdentification[] depPkgs = SurfaceAreaQuery.getDependencePkg(null, mi);\r
+ //\r
+ // Implementing InitializePlatformPcdBuildDefinitions\r
+ //\r
+ List<PcdCodedDocument.PcdCoded.PcdEntry> l = msa.getPcdCoded().getPcdEntryList();\r
+ ListIterator li = l.listIterator();\r
+ while (li.hasNext()) {\r
+ PcdCodedDocument.PcdCoded.PcdEntry msaPcd = (PcdCodedDocument.PcdCoded.PcdEntry) li.next();\r
+ PcdDeclarationsDocument.PcdDeclarations.PcdEntry spdPcd = LookupPcdDeclaration(msaPcd, depPkgs);\r
+ if (spdPcd == null) {\r
//\r
- // AddItem to ModuleSA PcdBuildDefinitions\r
+ // ToDo Error \r
//\r
- String defaultVal = msaPcd.getDefaultValue() == null ? spdPcd.getDefaultValue() : msaPcd.getDefaultValue();\r
- \r
- genPcdData(msaPcd.getCName(), spdPcd.getToken(), msaPcd.getTokenSpaceGuidCName(), msaPcd.getPcdItemType().toString(), spdPcd.getDatumType()+"", defaultVal, moduleSa);\r
+ throw new PcdDeclNotFound("No Declaration for PCD Entry " + msaPcd.getCName() + " in Module "\r
+ + mi.getName());\r
}\r
- \r
- }\r
- catch (Exception e){\r
- \r
- throw e; \r
+ //\r
+ // AddItem to ModuleSA PcdBuildDefinitions\r
+ //\r
+ String defaultVal = msaPcd.getDefaultValue() == null ? spdPcd.getDefaultValue() : msaPcd.getDefaultValue();\r
+\r
+ genPcdData(msaPcd.getCName(), spdPcd.getToken(), msaPcd.getTokenSpaceGuidCName(), msaPcd.getPcdItemType()\r
+ .toString(),\r
+ spdPcd.getDatumType() + "", defaultVal, moduleSa, spdPcd);\r
}\r
\r
}\r
return msa;\r
}\r
\r
- private void genPcdData (String cName, Object token, String tsGuid, String itemType, String dataType, String defaultVal, ModuleSADocument.ModuleSA moduleSa) \r
+ private String chooseDefaultPcdType (List validPcdTypes) {\r
+ String choosedType = "";\r
+ if (validPcdTypes.contains("FIXED_AT_BUILD")) {\r
+ choosedType = "FIXED_AT_BUILD";\r
+ }\r
+ else if (validPcdTypes.contains("DYNAMIC")) {\r
+ choosedType = "DYNAMIC";\r
+ }\r
+ else if (validPcdTypes.contains("PATCHABLE_IN_MODULE")) {\r
+ choosedType = "PATCHABLE_IN_MODULE";\r
+ }\r
+ else if (validPcdTypes.contains("DYNAMIC_EX")) {\r
+ choosedType = "DYNAMIC_EX";\r
+ }\r
+ return choosedType;\r
+ }\r
+ \r
+ private void genPcdData (String cName, Object token, String tsGuid, String itemType, String dataType, String defaultVal, \r
+ ModuleSADocument.ModuleSA moduleSa, PcdDeclarationsDocument.PcdDeclarations.PcdEntry spdPcd) \r
throws PcdItemTypeConflictException, PcdValueMalFormed{\r
if (moduleSa.getPcdBuildDefinition() == null){\r
moduleSa.addNewPcdBuildDefinition();\r
return;\r
}\r
}\r
+ // if pcd type from MSA file is Dynamic\r
+ // we must choose one default type from SPD file for it.\r
+ //\r
+ List validPcdTypes = spdPcd.getValidUsage();\r
//\r
// Using existing Pcd type, if this pcd already exists in other ModuleSA\r
//\r
if (pcdConsumer.size() > 0) {\r
+ //\r
+ // platform should only contain one type for each pcd.\r
+ //\r
+ String existingItemType = itemType (pcdConsumer.get(0));\r
+ for (int i = 1; i < pcdConsumer.size(); ++i) {\r
+ if (!existingItemType.equals(itemType(pcdConsumer.get(i)))) {\r
+ throw new PcdItemTypeConflictException (cName, pcdConsumer.get(0), pcdConsumer.get(i));\r
+ }\r
+ }\r
\r
- itemType = itemType (pcdConsumer.get(0));\r
+ if (itemType.equals("DYNAMIC")) {\r
+ if (!validPcdTypes.contains(existingItemType)) {\r
+ throw new PcdItemTypeConflictException(cName, pcdConsumer.get(0));\r
+ }\r
+ itemType = existingItemType;\r
+ }\r
+ else {\r
+ if (!itemType.equals(existingItemType)) {\r
+ throw new PcdItemTypeConflictException(cName, pcdConsumer.get(0));\r
+ }\r
+ }\r
+ }\r
+ //\r
+ // if this is the first occurence of this pcd. \r
+ //\r
+ else {\r
+ if (itemType.equals("DYNAMIC")) {\r
+ itemType = chooseDefaultPcdType (validPcdTypes);\r
+ }\r
}\r
String listValue = moduleInfo + " " + itemType;\r
pcdConsumer.add(listValue);\r
private static final long serialVersionUID = 1L;\r
private String details = null;\r
\r
- PcdItemTypeConflictException(String pcdName, String info){\r
+ PcdItemTypeConflictException (String pcdName, String info) {\r
ModuleIdentification mi = WorkspaceProfile.getModuleId(info);\r
- details = pcdName + " ItemType Conflicts with " + mi.getName() + " in Pkg " + mi.getPackageId().getName();\r
+ if (mi != null) {\r
+ details = pcdName + " ItemType Conflicts with " + mi.getName() + " in Pkg " + mi.getPackageId().getName(); \r
+ }\r
+ else {\r
+ details = pcdName + " ItemType Conflicts with " + info;\r
+ }\r
+ }\r
+ \r
+ PcdItemTypeConflictException (String pcdName, String info1, String info2) {\r
+ ModuleIdentification mi1 = WorkspaceProfile.getModuleId(info1);\r
+ ModuleIdentification mi2 = WorkspaceProfile.getModuleId(info2);\r
+ String moduleInfo1 = "";\r
+ String moduleInfo2 = "";\r
+ if (mi1 != null) {\r
+ moduleInfo1 = mi1.getName() + " in Pkg " + mi1.getPackageId().getName();\r
+ }\r
+ else {\r
+ moduleInfo1 = info1;\r
+ }\r
+ \r
+ if (mi2 != null) {\r
+ moduleInfo2 = mi2.getName() + " in Pkg " + mi2.getPackageId().getName();\r
+ }\r
+ else {\r
+ moduleInfo2 = info2;\r
+ }\r
+ \r
+ details = pcdName + " ItemType Conflicts in " + moduleInfo1 + " and " + moduleInfo2;\r
}\r
\r
public String getMessage() {\r
private void showSettingsDlg (int row) {\r
try {\r
if (ffc.adjustPcd(row)) {\r
+ JOptionPane.showMessageDialog(frame, "Pcd entries sync. with those in MSA files.");\r
docConsole.setSaved(false);\r
}\r
}\r
import javax.swing.JScrollPane;\r
import javax.swing.JTextArea;\r
import javax.swing.JTextField;\r
+import javax.swing.event.DocumentEvent;\r
+import javax.swing.event.DocumentListener;\r
\r
\r
\r
@since PackageEditor 1.0\r
\r
**/\r
-public class FpdHeader extends IInternalFrame {\r
+public class FpdHeader extends IInternalFrame implements DocumentListener{\r
\r
private int dialogWidth = 560;\r
\r
jTextFieldBaseName = new JTextField();\r
jTextFieldBaseName.setBounds(new java.awt.Rectangle(valueColumn, rowOne, valueWidth, oneRowHeight));\r
jTextFieldBaseName.setPreferredSize(new java.awt.Dimension(valueWidth,oneRowHeight));\r
+ jTextFieldBaseName.getDocument().addDocumentListener(this);\r
jTextFieldBaseName.addFocusListener(new FocusAdapter(){\r
public void focusLost(FocusEvent e) {\r
if (!DataValidation.isUiNameType(jTextFieldBaseName.getText())) {\r
if (jTextFieldBaseName.getText().equals(ffc.getFpdHdrPlatformName())) {\r
return;\r
}\r
- docConsole.setSaved(false);\r
ffc.setFpdHdrPlatformName(jTextFieldBaseName.getText());\r
} \r
});\r
jTextFieldGuid = new JTextField();\r
jTextFieldGuid.setBounds(new java.awt.Rectangle(valueColumn, rowTwo, shortValueWidth, oneRowHeight));\r
jTextFieldGuid.setPreferredSize(new java.awt.Dimension(shortValueWidth,oneRowHeight));\r
+ jTextFieldGuid.getDocument().addDocumentListener(this);\r
jTextFieldGuid.addFocusListener(new FocusAdapter(){\r
public void focusLost(FocusEvent e) {\r
if (!DataValidation.isGuid(jTextFieldGuid.getText())) {\r
if (jTextFieldGuid.getText().equals(ffc.getFpdHdrGuidValue())) {\r
return;\r
}\r
- docConsole.setSaved(false);\r
ffc.setFpdHdrGuidValue(jTextFieldGuid.getText());\r
} \r
});\r
jTextFieldVersion = new JTextField();\r
jTextFieldVersion.setBounds(new java.awt.Rectangle(valueColumn, rowThree, valueWidth, oneRowHeight));\r
jTextFieldVersion.setPreferredSize(new java.awt.Dimension(valueWidth,oneRowHeight));\r
+ jTextFieldVersion.getDocument().addDocumentListener(this);\r
jTextFieldVersion.addFocusListener(new FocusAdapter(){\r
public void focusLost(FocusEvent e) {\r
if (!DataValidation.isVersion(jTextFieldVersion.getText())) {\r
if (jTextFieldVersion.getText().equals(ffc.getFpdHdrVer())) {\r
return;\r
}\r
- docConsole.setSaved(false);\r
ffc.setFpdHdrVer(jTextFieldVersion.getText());\r
} \r
});\r
jTextAreaLicense = new JTextArea();\r
jTextAreaLicense.setText("");\r
jTextAreaLicense.setLineWrap(true);\r
+ jTextAreaLicense.getDocument().addDocumentListener(this);\r
jTextAreaLicense.addFocusListener(new FocusAdapter(){\r
public void focusLost(FocusEvent e) {\r
if (jTextAreaLicense.getText().length() == 0) {\r
if (jTextAreaLicense.getText().equals(ffc.getFpdHdrLicense())) {\r
return;\r
}\r
- docConsole.setSaved(false);\r
ffc.setFpdHdrLicense(jTextAreaLicense.getText());\r
} \r
});\r
if (jTextAreaDescription == null) {\r
jTextAreaDescription = new JTextArea();\r
jTextAreaDescription.setLineWrap(true);\r
+ jTextAreaDescription.getDocument().addDocumentListener(this);\r
jTextAreaDescription.addFocusListener(new FocusAdapter(){\r
public void focusLost(FocusEvent e) {\r
if (jTextAreaDescription.getText().length() == 0) {\r
if (jTextAreaDescription.getText().equals(ffc.getFpdHdrDescription())) {\r
return;\r
}\r
- docConsole.setSaved(false);\r
ffc.setFpdHdrDescription(jTextAreaDescription.getText());\r
} \r
});\r
jTextFieldSpecification.setEditable(false);\r
jTextFieldSpecification.setPreferredSize(new java.awt.Dimension(specWidth,oneRowHeight));\r
jTextFieldSpecification.setBorder(null);\r
- jTextFieldSpecification.addFocusListener(new FocusAdapter(){\r
- public void focusLost(FocusEvent e) {\r
- ffc.setFpdHdrSpec(jTextFieldSpecification.getText());\r
- } \r
- });\r
+// jTextFieldSpecification.addFocusListener(new FocusAdapter(){\r
+// public void focusLost(FocusEvent e) {\r
+// ffc.setFpdHdrSpec(jTextFieldSpecification.getText());\r
+// } \r
+// });\r
}\r
return jTextFieldSpecification;\r
}\r
jTextFieldAbstract = new JTextField();\r
jTextFieldAbstract.setBounds(new java.awt.Rectangle(valueColumn,rowSeven,valueWidth,oneRowHeight));\r
jTextFieldAbstract.setPreferredSize(new java.awt.Dimension(valueWidth, oneRowHeight));\r
+ jTextFieldAbstract.getDocument().addDocumentListener(this);\r
jTextFieldAbstract.addFocusListener(new FocusAdapter(){\r
public void focusLost(FocusEvent e) {\r
if (!DataValidation.isAbstract(jTextFieldAbstract.getText())) {\r
if (jTextFieldAbstract.getText().equals(ffc.getFpdHdrAbs())) {\r
return;\r
}\r
- docConsole.setSaved(false);\r
ffc.setFpdHdrAbs(jTextFieldAbstract.getText());\r
} \r
});\r
jCopyrightTextArea = new JTextArea();\r
jCopyrightTextArea.setWrapStyleWord(true);\r
jCopyrightTextArea.setLineWrap(true);\r
+ jCopyrightTextArea.getDocument().addDocumentListener(this);\r
jCopyrightTextArea.addFocusListener(new FocusAdapter(){\r
public void focusLost(FocusEvent e) {\r
if (!DataValidation.isCopyright(jCopyrightTextArea.getText())) {\r
if (jCopyrightTextArea.getText().equals(ffc.getFpdHdrCopyright())) {\r
return;\r
}\r
- docConsole.setSaved(false);\r
ffc.setFpdHdrCopyright(jCopyrightTextArea.getText());\r
} \r
});\r
jTextFieldUrl = new JTextField();\r
jTextFieldUrl.setBounds(new java.awt.Rectangle(valueColumn,rowSix,valueWidth,oneRowHeight));\r
jTextFieldUrl.setPreferredSize(new Dimension(valueWidth, oneRowHeight));\r
+ jTextFieldUrl.getDocument().addDocumentListener(this);\r
jTextFieldUrl.addFocusListener(new FocusAdapter(){\r
public void focusLost(FocusEvent e){\r
if (jTextFieldUrl.getText().length() == 0 && ffc.getFpdHdrUrl() == null) {\r
}\r
ffc.setFpdHdrLicense(jTextAreaLicense.getText());\r
ffc.setFpdHdrUrl(jTextFieldUrl.getText());\r
- docConsole.setSaved(false);\r
} \r
});\r
}\r
public void actionPerformed(ActionEvent arg0) {\r
\r
if (arg0.getSource() == jButtonGenerateGuid) {\r
- docConsole.setSaved(false);\r
jTextFieldGuid.setText(Tools.generateUuidString());\r
ffc.setFpdHdrGuidValue(jTextFieldGuid.getText());\r
}\r
\r
\r
}\r
+ \r
+ /* (non-Javadoc)\r
+ * @see javax.swing.event.DocumentListener#changedUpdate(javax.swing.event.DocumentEvent)\r
+ */\r
+ public void changedUpdate(DocumentEvent arg0) {\r
+ // TODO Auto-generated method stub\r
+ \r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see javax.swing.event.DocumentListener#insertUpdate(javax.swing.event.DocumentEvent)\r
+ */\r
+ public void insertUpdate(DocumentEvent arg0) {\r
+ // TODO Auto-generated method stub\r
+ if (docConsole != null) {\r
+ docConsole.setSaved(false);\r
+ }\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see javax.swing.event.DocumentListener#removeUpdate(javax.swing.event.DocumentEvent)\r
+ */\r
+ public void removeUpdate(DocumentEvent arg0) {\r
+ // TODO Auto-generated method stub\r
+ if (docConsole != null) {\r
+ docConsole.setSaved(false); \r
+ }\r
+ }\r
}\r
return;\r
}\r
\r
- for (int j = 0; j < v.size(); ++j) {\r
- LibraryClassDescriptor libInfo = v.get(j);\r
+ Iterator<LibraryClassDescriptor> iter = v.iterator();\r
+ while (iter.hasNext()) {\r
+ LibraryClassDescriptor libInfo = iter.next();\r
\r
Vector<String> vSupArchs = libInfo.getVectorFromString(libInfo.supArchs);\r
\r
//\r
// remove this lib definition if it supports no archs module will be built under.\r
//\r
- v.iterator().remove();\r
+ iter.remove();\r
}\r
}\r
\r
// array for pcd related information: helpText, itemType, moduleType.\r
//\r
String[] pcdInfo = {"", "", ""};\r
- getPcdInfo(cName, tsGuid, pcdInfo);\r
+ Vector<String> validPcdTypes = new Vector<String>();\r
+ getPcdInfo(moduleKey, cName, tsGuid, pcdInfo, validPcdTypes);\r
jTextAreaPcdHelp.setText(pcdInfo[0]);\r
- initComboBox(pcdInfo[1], pcdInfo[2]);\r
+ initComboBox(pcdInfo[1], pcdInfo[2], validPcdTypes);\r
jComboBoxItemType.setSelectedItem(itemType);\r
jTextFieldMaxDatumSize.setEnabled(true);\r
jTextFieldMaxDatumSize.setVisible(true);\r
return jTablePcd;\r
}\r
\r
- private void initComboBox(String originalType, String mType) {\r
+ private void initComboBox(String originalType, String mType, Vector<String> validPcdTypes) {\r
jComboBoxItemType.removeAllItems();\r
- jComboBoxItemType.addItem(originalType);\r
- if (originalType.equals("PATCHABLE_IN_MODULE") && mType.equalsIgnoreCase("false")) {\r
- jComboBoxItemType.addItem("FIXED_AT_BUILD");\r
- }\r
+\r
if (originalType.equals("DYNAMIC")) {\r
- jComboBoxItemType.addItem("FIXED_AT_BUILD");\r
- jComboBoxItemType.addItem("PATCHABLE_IN_MODULE");\r
+ for (int i = 0; i < validPcdTypes.size(); ++i) {\r
+ jComboBoxItemType.addItem(validPcdTypes.get(i));\r
+ }\r
+ }\r
+ else {\r
+ jComboBoxItemType.addItem(originalType);\r
}\r
}\r
\r
* @param tsGuid\r
* @param sa sa[0]: HelpText; sa[1]: itemType in Msa; sa[2]: isBinary;\r
*/\r
- private void getPcdInfo(String cName, String tsGuid, String[] sa) {\r
+ private void getPcdInfo(String moduleKey, String cName, String tsGuid, String[] sa, Vector<String> validPcdTypes) {\r
String[][] saa = new String[ffc.getLibraryInstancesCount(moduleKey)][5];\r
ffc.getLibraryInstances(moduleKey, saa);\r
\r
try{\r
- if (ffc.getPcdBuildDataInfo(WorkspaceProfile.getModuleId(moduleKey), cName, tsGuid, sa)) {\r
+ if (ffc.getPcdBuildDataInfo(WorkspaceProfile.getModuleId(moduleKey), cName, tsGuid, sa, validPcdTypes)) {\r
return;\r
}\r
for (int j = 0; j < saa.length; ++j) {\r
if (ffc.getPcdBuildDataInfo(WorkspaceProfile.getModuleId(saa[j][1] + " " + saa[j][2] + " " + saa[j][3] + " " + saa[j][4]),\r
- cName, tsGuid, sa)) {\r
+ cName, tsGuid, sa, validPcdTypes)) {\r
return;\r
}\r
}\r
if (jComboBoxItemType == null) {\r
jComboBoxItemType = new JComboBox();\r
jComboBoxItemType.setPreferredSize(new java.awt.Dimension(200,20));\r
- jComboBoxItemType.addItemListener(new java.awt.event.ItemListener() {\r
- public void itemStateChanged(java.awt.event.ItemEvent e) {\r
- int row = jTablePcd.getSelectedRow();\r
- if (row < 0 || model.getValueAt(row, 2).equals(jComboBoxItemType.getSelectedItem())) {\r
- return;\r
- }\r
- if (jComboBoxItemType.getItemCount() == 3) {\r
- if (!jComboBoxItemType.getSelectedItem().equals("DYNAMIC")) {\r
- \r
- if (jComboBoxItemType.getSelectedItem().equals("FIXED_AT_BUILD")) {\r
- jTextFieldPcdDefault.setText("");\r
- jTextFieldPcdDefault.setEnabled(true);\r
- }\r
- }\r
- else{\r
- \r
- }\r
- }\r
- }\r
- });\r
+// jComboBoxItemType.addItemListener(new java.awt.event.ItemListener() {\r
+// public void itemStateChanged(java.awt.event.ItemEvent e) {\r
+// \r
+// int row = jTablePcd.getSelectedRow();\r
+// if (row < 0 || model.getValueAt(row, 2).equals(jComboBoxItemType.getSelectedItem())) {\r
+// return;\r
+// }\r
+// if (!jComboBoxItemType.getSelectedItem().equals("DYNAMIC")) {\r
+// \r
+// if (jComboBoxItemType.getSelectedItem().equals("FIXED_AT_BUILD")) {\r
+// jTextFieldPcdDefault.setText("");\r
+// jTextFieldPcdDefault.setEnabled(true);\r
+// }\r
+// }\r
+// else{\r
+// \r
+// }\r
+// }\r
+// });\r
}\r
return jComboBoxItemType;\r
}\r
for (int i = 0; i < al.size(); ++i) {\r
String mKey = moduleInfo (al.get(i));\r
value = null;\r
- ffc.updatePcdData(mKey, cName, tsGuid, jComboBoxItemType.getSelectedItem()+"", maxSize, value);\r
String itemType = jComboBoxItemType.getSelectedItem()+"";\r
+ ffc.updatePcdData(mKey, cName, tsGuid, itemType, maxSize, value);\r
al.set(i, mKey + " " + itemType);\r
}\r
\r
ArrayList<String> al = ffc.getDynPcdMapValue(cName + " " + tsGuid);\r
for (int i = 0; i < al.size(); ++i) {\r
String mKey = moduleInfo (al.get(i));\r
- ffc.updatePcdData(mKey, cName, tsGuid, jComboBoxItemType.getSelectedItem()+"", jTextFieldMaxDatumSize.getText(), jTextFieldPcdDefault.isVisible() ? jTextFieldPcdDefault.getText() : jComboBoxFeatureFlagValue.getSelectedItem()+"");\r
String itemType = jComboBoxItemType.getSelectedItem()+"";\r
+ ffc.updatePcdData(mKey, cName, tsGuid, itemType, jTextFieldMaxDatumSize.getText(), jTextFieldPcdDefault.isVisible() ? jTextFieldPcdDefault.getText() : jComboBoxFeatureFlagValue.getSelectedItem()+"");\r
al.set(i, mKey + " " + itemType);\r
}\r
try{\r
}\r
}\r
\r
+private void changePcdTypeWithinSameCategory (String cName, String tsGuid) {\r
+ ArrayList<String> al = ffc.getDynPcdMapValue(cName + " " + tsGuid);\r
+ for (int i = 0; i < al.size(); ++i) {\r
+ String mKey = moduleInfo (al.get(i));\r
+ String itemType = jComboBoxItemType.getSelectedItem()+"";\r
+ ffc.updatePcdData(mKey, cName, tsGuid, itemType, null, null);\r
+ al.set(i, mKey + " " + itemType);\r
+ }\r
+}\r
+\r
private String moduleInfo (String pcdInfo) {\r
\r
return pcdInfo.substring(0, pcdInfo.lastIndexOf(" "));\r
if (row < 0) {\r
return;\r
}\r
- docConsole.setSaved(false);\r
+ \r
+ String cName = model.getValueAt(row, 0)+"";\r
+ String tsGuid = model.getValueAt(row, 1)+"";\r
String oldItemType = model.getValueAt(row, 2)+"";\r
String newItemType = jComboBoxItemType.getSelectedItem()+"";\r
- model.setValueAt(newItemType, row, 2);\r
+ \r
model.setValueAt(jTextFieldPcdDefault.isVisible()? jTextFieldPcdDefault.getText():jComboBoxFeatureFlagValue.getSelectedItem(), row, 6);\r
\r
String[] pcdInfo = {"", "", ""};\r
- getPcdInfo (model.getValueAt(row, 0)+"", model.getValueAt(row, 1)+"", pcdInfo);\r
+ Vector<String> validPcdTypes = new Vector<String>();\r
+ getPcdInfo (moduleKey, cName, tsGuid, pcdInfo, validPcdTypes);\r
if (pcdInfo[1].equals("FIXED_AT_BUILD") && model.getValueAt(row, 5).equals("VOID*")) {\r
try {\r
jTextFieldMaxDatumSize.setText(ffc.setMaxSizeForPointer(model.getValueAt(row, 6)+"")+"");\r
}\r
model.setValueAt(jTextFieldMaxDatumSize.getText(), row, 4);\r
\r
- if (oldItemType.equals("DYNAMIC") && !newItemType.equals("DYNAMIC")) {\r
- pcdDynamicToNonDynamic(model.getValueAt(row, 0)+"", model.getValueAt(row, 1)+"");\r
- }\r
- if (!oldItemType.equals("DYNAMIC") && newItemType.equals("DYNAMIC")) {\r
- pcdNonDynamicToDynamic(model.getValueAt(row, 0)+"", model.getValueAt(row, 1)+"");\r
+ if (newItemType != oldItemType) {\r
+ Vector<ModuleIdentification> moduleInfo = new Vector<ModuleIdentification>();\r
+ try {\r
+ boolean changable = itemTypeCouldBeChanged (cName, tsGuid, newItemType, moduleInfo);\r
+ if (!changable) {\r
+ JOptionPane.showMessageDialog(frame, "Can NOT Change Pcd Type in: " + moduleInfo.get(0).getName() + " contained in package " + moduleInfo.get(0).getPackageId().getName());\r
+ return;\r
+ }\r
+ }\r
+ catch (Exception exp) {\r
+ JOptionPane.showMessageDialog(frame, "Can NOT Change Pcd Type in: " + moduleInfo.get(0).getName() + " contained in package " + moduleInfo.get(0).getPackageId().getName() + " " + exp.getMessage());\r
+ return;\r
+ }\r
+ \r
+ if ((oldItemType.equals("DYNAMIC") || oldItemType.equals("DYNAMIC_EX")) && !newItemType.equals("DYNAMIC") && !newItemType.equals("DYNAMIC_EX")) {\r
+ pcdDynamicToNonDynamic(cName, tsGuid);\r
+ }\r
+ if (!oldItemType.equals("DYNAMIC") && !oldItemType.equals("DYNAMIC_EX") && (newItemType.equals("DYNAMIC") || newItemType.equals("DYNAMIC_EX"))) {\r
+ pcdNonDynamicToDynamic(cName, tsGuid);\r
+ }\r
+ else {\r
+ changePcdTypeWithinSameCategory (cName, tsGuid);\r
+ }\r
+ model.setValueAt(newItemType, row, 2);\r
}\r
- ffc.updatePcdData(moduleKey, model.getValueAt(row, 0)+"", model.getValueAt(row, 1)+"", model.getValueAt(row, 2)+"", model.getValueAt(row, 4)+"", model.getValueAt(row, 6)+"");\r
+ \r
+ ffc.updatePcdData(moduleKey, cName, tsGuid, model.getValueAt(row, 2)+"", model.getValueAt(row, 4)+"", model.getValueAt(row, 6)+"");\r
+ docConsole.setSaved(false);\r
}\r
});\r
}\r
return jButtonUpdatePcd;\r
}\r
+\r
+private boolean itemTypeCouldBeChanged (String cName, String tsGuid, String newItemType, Vector<ModuleIdentification> mi) throws Exception{\r
+ ArrayList<String> pcdConsumers = ffc.getDynPcdMapValue(cName + " " + tsGuid);\r
+ for (int i = 0; i < pcdConsumers.size(); ++i) {\r
+ String consumerInfo = moduleInfo (pcdConsumers.get(i));\r
+ mi.removeAllElements();\r
+ mi.add(WorkspaceProfile.getModuleId(consumerInfo));\r
+ String[] sa = {"", "", ""};\r
+ Vector<String> validPcdTypes = new Vector<String>();\r
+ getPcdInfo (consumerInfo, cName, tsGuid, sa, validPcdTypes);\r
+ if (validPcdTypes.size() == 0) {\r
+ return false;\r
+ }\r
+ if (!sa[1].equals("DYNAMIC")) {\r
+ return false;\r
+ }\r
+ if (!validPcdTypes.contains(newItemType)) {\r
+ return false;\r
+ }\r
+ }\r
+ return true;\r
+}\r
+\r
/**\r
* This method initializes jComboBoxFeatureFlagValue\r
* \r