jTabbedPane.setSelectedIndex(0);\r
initPcdBuildDefinition(i);\r
ModuleIdentification mi = WorkspaceProfile.getModuleId(moduleKey);\r
+ if (mi == null) {\r
+ return;\r
+ }\r
int tabIndex = jTabbedPane.indexOfTab("Libraries");\r
if (mi.isLibrary()) {\r
jTabbedPane.setEnabledAt(tabIndex, false);\r
}\r
\r
public void initLibraries(String key) {\r
+ libClassTableModel.setRowCount(0);\r
+ libInstanceTableModel.setRowCount(0);\r
+ selectedInstancesTableModel.setRowCount(0);\r
+ Vector<String> errorMsg = new Vector<String>();\r
try {\r
//\r
// display library classes that need to be resolved. also potential instances for them.\r
//\r
- resolveLibraryInstances(moduleKey);\r
+ resolveLibraryInstances(moduleKey, errorMsg);\r
} catch (Exception e) {\r
- JOptionPane.showMessageDialog(frame, e.getCause() + " " + e.getMessage());\r
+ String exceptionMsg = e.getCause() + " " + e.getMessage();\r
+ errorMsg.add(exceptionMsg);\r
+ JOptionPane.showMessageDialog(frame, exceptionMsg);\r
}\r
//\r
// display lib instances already selected for key\r
//\r
- selectedInstancesTableModel.setRowCount(0);\r
+ \r
int instanceCount = ffc.getLibraryInstancesCount(key);\r
if (instanceCount != 0) {\r
String[][] saa = new String[instanceCount][5];\r
// re-evaluate lib instance usage when adding a already-selected lib instance.\r
//\r
try {\r
- resolveLibraryInstances(saa[i][1] + " " + saa[i][2] + " " + saa[i][3] + " " + saa[i][4]);\r
+ resolveLibraryInstances(saa[i][1] + " " + saa[i][2] + " " + saa[i][3] + " " + saa[i][4], errorMsg);\r
} catch (Exception e) {\r
- JOptionPane.showMessageDialog(frame, e.getCause() + " " + e.getMessage());\r
+ String exceptionMsg = e.getCause() + " " + e.getMessage();\r
+ if (!errorMsg.contains(exceptionMsg)) {\r
+ JOptionPane.showMessageDialog(frame, e.getCause() + " " + e.getMessage());\r
+ }\r
}\r
selectedInstancesTableModel.addRow(saa[i]);\r
}\r
}\r
}\r
\r
+ if (errorMsg.size() > 0) {\r
+ String errors = "";\r
+ for (int i = 0; i < errorMsg.size(); ++i) {\r
+ errors += " " + errorMsg.get(i) + "\n";\r
+ }\r
+ JOptionPane.showMessageDialog(frame, errors);\r
+ }\r
showClassToResolved();\r
}\r
\r
}\r
}\r
\r
- private void resolveLibraryInstances(String key) throws MultipleInstanceException, NoInstanceException{\r
+ private void resolveLibraryInstances(String key, Vector<String> errorMsg) throws MultipleInstanceException, NoInstanceException{\r
ModuleIdentification mi = WorkspaceProfile.getModuleId(key);\r
PackageIdentification[] depPkgList = null;\r
\r
}\r
ArrayList<String> instances = getInstancesForClass(cls, depPkgList);\r
if (instances.size() == 0) {\r
- throw new NoInstanceException (cls.className);\r
+// throw new NoInstanceException (cls.className);\r
+ String exceptionMsg = new NoInstanceException (cls.className).getMessage();\r
+ if (!errorMsg.contains(exceptionMsg)) {\r
+ errorMsg.add(exceptionMsg); \r
+ }\r
+ \r
}\r
classInstanceMap.put(cls, instances);\r
\r
Iterator<LibraryClassDescriptor> lcdi = this.classConsumed.keySet().iterator();\r
while (lcdi.hasNext()) {\r
LibraryClassDescriptor lcd = lcdi.next();\r
- if (lcd.className.equals(className)) {\r
+ if ((lcd.className != null) && lcd.className.equals(className)) {\r
return this.classConsumed.get(lcd);\r
}\r
}\r
\r
private void showClassToResolved(){\r
libClassTableModel.setRowCount(0);\r
+ libInstanceTableModel.setRowCount(0);\r
if (classConsumed == null || classConsumed.size() == 0) {\r
return;\r
}\r
libClassTableModel.addRow(s);\r
}\r
}\r
- libInstanceTableModel.setRowCount(0);\r
+ \r
}\r
\r
private void addLibInstance (ModuleIdentification libMi) throws Exception{\r
jTextFieldMaxDatumSize.setText(model.getValueAt(selectedRow, 4)+"");\r
jTextFieldPcdDefault.setEnabled(true);\r
jTextFieldPcdDefault.setText(model.getValueAt(selectedRow, 6)+"");\r
- if (model.getValueAt(selectedRow, 5).equals("VOID*")) {\r
+ if ((model.getValueAt(selectedRow, 5) != null) && model.getValueAt(selectedRow, 5).equals("VOID*")) {\r
if (pcdInfo[1].equals("FEATURE_FLAG")) {\r
jTextFieldMaxDatumSize.setVisible(false);\r
}\r
addLibInstance (libMi);\r
}\r
catch (Exception exception) {\r
- JOptionPane.showMessageDialog(frame, "Adding Instance" + libMi.getName() + ": "+ exception.getMessage());\r
+ JOptionPane.showMessageDialog(frame, "Adding Instance " + libMi.getName() + " : \n"+ exception.getMessage());\r
return;\r
}\r
docConsole.setSaved(false);\r
libInstanceTableModel.getValueAt(row, 2), libInstanceTableModel.getValueAt(row, 3),\r
libInstanceTableModel.getValueAt(row, 4)};\r
selectedInstancesTableModel.addRow(s);\r
+ \r
+ Vector<String> errorMsg = new Vector<String>();\r
try {\r
- resolveLibraryInstances(instanceValue);\r
+ resolveLibraryInstances(instanceValue, errorMsg);\r
}\r
catch (Exception exp) {\r
JOptionPane.showMessageDialog(frame, exp.getMessage());\r
}\r
+ \r
+ if (errorMsg.size() > 0) {\r
+ String errors = "";\r
+ for (int i = 0; i < errorMsg.size(); ++i) {\r
+ errors += " " + errorMsg.get(i) + "\n";\r
+ }\r
+ JOptionPane.showMessageDialog(frame, errors);\r
+ }\r
showClassToResolved();\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
-// \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
+ 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
+ \r
+ if (jComboBoxItemType.getSelectedItem() != null && jComboBoxItemType.getSelectedItem().equals("FIXED_AT_BUILD")) {\r
+ jTextFieldPcdDefault.setEnabled(true);\r
+ }\r
+ else {\r
+ jTextFieldPcdDefault.setEnabled(false);\r
+ }\r
+ } \r
+ });\r
}\r
return jComboBoxItemType;\r
}\r
al.set(i, mKey + " " + itemType);\r
}\r
try{\r
- ffc.addDynamicPcdBuildData(cName, jTablePcd.getValueAt(jTablePcd.getSelectedRow(), 3), tsGuid, "DYNAMIC", jTablePcd.getValueAt(jTablePcd.getSelectedRow(), 5)+"", jTextFieldPcdDefault.isVisible() ? jTextFieldPcdDefault.getText() : jComboBoxFeatureFlagValue.getSelectedItem()+"");\r
+ ffc.addDynamicPcdBuildData(cName, model.getValueAt(jTablePcd.getSelectedRow(), 3), tsGuid, "DYNAMIC", model.getValueAt(jTablePcd.getSelectedRow(), 5)+"", jTextFieldPcdDefault.isVisible() ? jTextFieldPcdDefault.getText() : jComboBoxFeatureFlagValue.getSelectedItem()+"");\r
}\r
catch(Exception e){\r
JOptionPane.showMessageDialog(frame, "PCD value format: " + e.getMessage());\r
String cName = model.getValueAt(row, 0)+"";\r
String tsGuid = model.getValueAt(row, 1)+"";\r
String oldItemType = model.getValueAt(row, 2)+"";\r
+ String dataType = model.getValueAt(row, 5)+"";\r
String newItemType = jComboBoxItemType.getSelectedItem()+"";\r
+ String newValue = jTextFieldPcdDefault.isVisible()? jTextFieldPcdDefault.getText():jComboBoxFeatureFlagValue.getSelectedItem()+""; \r
+ if (newValue.length() == 0){\r
\r
- model.setValueAt(jTextFieldPcdDefault.isVisible()? jTextFieldPcdDefault.getText():jComboBoxFeatureFlagValue.getSelectedItem(), row, 6);\r
+ if (dataType.equals("UINT8") || dataType.equals("UINT16") || dataType.equals("UINT32") || dataType.equals("UINT64")) {\r
+ newValue = "0";\r
+ }\r
+ if (dataType.equals("BOOLEAN")){\r
+ newValue = "FALSE";\r
+ }\r
+ if (dataType.equals("VOID*")) {\r
+ newValue = "L\"\"";\r
+ }\r
+ }\r
\r
String[] 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
+ jTextFieldMaxDatumSize.setText(ffc.setMaxSizeForPointer(newValue)+"");\r
}\r
catch (Exception exp) {\r
JOptionPane.showMessageDialog(frame, "PCD Value MalFormed: " + exp.getMessage());\r
return;\r
}\r
}\r
- model.setValueAt(jTextFieldMaxDatumSize.getText(), row, 4);\r
+ String newMaxDatumSize = jTextFieldMaxDatumSize.getText();\r
\r
- if (newItemType != oldItemType) {\r
+ if (!newItemType.equals(oldItemType)) {\r
Vector<ModuleIdentification> moduleInfo = new Vector<ModuleIdentification>();\r
try {\r
boolean changable = itemTypeCouldBeChanged (cName, tsGuid, newItemType, moduleInfo);\r
model.setValueAt(newItemType, row, 2);\r
}\r
\r
- ffc.updatePcdData(moduleKey, cName, tsGuid, model.getValueAt(row, 2)+"", model.getValueAt(row, 4)+"", model.getValueAt(row, 6)+"");\r
+ ffc.updatePcdData(moduleKey, cName, tsGuid, model.getValueAt(row, 2)+"", newMaxDatumSize, newValue);\r
docConsole.setSaved(false);\r
+ model.setValueAt(newValue, row, 6);\r
+ model.setValueAt(newMaxDatumSize, row, 4);\r
+ \r
}\r
});\r
}\r