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