]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdModuleSA.java
Modify error message contents when an improper library instance was selected for...
[mirror_edk2.git] / Tools / Java / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / platform / ui / FpdModuleSA.java
CommitLineData
a13899c5 1package org.tianocore.frameworkwizard.platform.ui;\r
2\r
3import java.awt.BorderLayout;\r
f3b0ed9a 4import java.awt.Dimension;\r
5import java.awt.Toolkit;\r
a13899c5 6\r
a13899c5 7import javax.swing.JOptionPane;\r
8import javax.swing.JPanel;\r
9import javax.swing.JDialog;\r
10import javax.swing.JTabbedPane;\r
11import javax.swing.JLabel;\r
12import javax.swing.JScrollPane;\r
13import javax.swing.JTable;\r
a13899c5 14import javax.swing.JTextArea;\r
15import javax.swing.JSplitPane;\r
16import javax.swing.JButton;\r
17import javax.swing.ListSelectionModel;\r
18import javax.swing.event.ListSelectionEvent;\r
19import javax.swing.event.ListSelectionListener;\r
20import javax.swing.event.TableModelEvent;\r
21import javax.swing.event.TableModelListener;\r
22import javax.swing.table.DefaultTableModel;\r
50d4c727 23import javax.swing.table.TableColumn;\r
a13899c5 24import javax.swing.table.TableModel;\r
25\r
82484861 26import org.tianocore.frameworkwizard.FrameworkWizardUI;\r
8f55ea73 27import org.tianocore.frameworkwizard.common.DataValidation;\r
3658f95e 28import org.tianocore.frameworkwizard.common.GlobalData;\r
ed850fbf 29import org.tianocore.frameworkwizard.common.IDefaultTableModel;\r
8f55ea73 30import org.tianocore.frameworkwizard.common.Identifications.OpeningPlatformType;\r
50d4c727 31import org.tianocore.frameworkwizard.platform.ui.global.LibraryClassDescriptor;\r
1bf9fa5a 32import org.tianocore.frameworkwizard.platform.ui.global.WorkspaceProfile;\r
a13899c5 33import org.tianocore.frameworkwizard.platform.ui.global.SurfaceAreaQuery;\r
3658f95e 34import org.tianocore.frameworkwizard.module.Identifications.ModuleIdentification;\r
35import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
a13899c5 36\r
37import java.awt.FlowLayout;\r
38import java.awt.event.ActionEvent;\r
39import java.awt.event.ActionListener;\r
40import java.util.ArrayList;\r
41import java.util.HashMap;\r
42import java.util.Iterator;\r
43import java.util.ListIterator;\r
1800d80f 44import java.util.Vector;\r
45\r
6a09eb19 46import javax.swing.JTextField;\r
908b1c05 47import java.awt.GridLayout;\r
48import javax.swing.JComboBox;\r
a13899c5 49\r
50public class FpdModuleSA extends JDialog implements ActionListener {\r
51\r
44053733 52 /**\r
53 * \r
54 */\r
55 private static final long serialVersionUID = 1L;\r
a13899c5 56 private JPanel jContentPane = null;\r
57 private JTabbedPane jTabbedPane = null;\r
57d0e52a 58 private JPanel jPanelPcd = null;\r
59 private JPanel jPanelLibrary = null;\r
60 private JLabel jLabelPcdData = null;\r
61 private JScrollPane jScrollPaneTablePcd = null;\r
62 private JTable jTablePcd = null;\r
63 private JPanel jPanelPcdSouth = null;\r
64 private JScrollPane jScrollPanePcdHelp = null;\r
65 private JTextArea jTextAreaPcdHelp = null;\r
66 private JPanel jPanelContentPaneSouth = null;\r
a13899c5 67 private JSplitPane jSplitPane = null;\r
57d0e52a 68 private JPanel jPanelLibraryLeft = null;\r
69 private JPanel jPanelLibraryRight = null;\r
70 private JLabel jLabelLibClass = null;\r
71 private JLabel jLabelQualifiedInstance = null;\r
72 private JScrollPane jScrollPaneSelectedInstances = null;\r
73 private JTable jTableSelectedInstances = null;\r
74 private JScrollPane jScrollPaneLibClass = null;\r
75 private JTable jTableLibClass = null;\r
76 private JScrollPane jScrollPaneQualifiedInstance = null;\r
77 private JTable jTableLibInstances = null;\r
78 private JPanel jPanelLibrarySouth = null;\r
79 private JPanel jPanelLibraryCenter = null;\r
80 private JScrollPane jScrollPaneInstanceHelp = null;\r
81 private JTextArea jTextAreaInstanceHelp = null;\r
82 private JLabel jLabelSelectedInstances = null;\r
83 private JLabel jLabelInstanceHelp = null;\r
84 private JButton jButtonAdd = null;\r
85 private JButton jButtonDeleteInstance = null;\r
86 private JLabel jLabelPcdHelp = null;\r
87 private JButton jButtonOk = null;\r
88 private JButton jButtonCancel = null;\r
ed850fbf 89 private IDefaultTableModel model = null;\r
90 private IDefaultTableModel selectedInstancesTableModel = null;\r
91 private IDefaultTableModel libClassTableModel = null;\r
92 private IDefaultTableModel libInstanceTableModel = null;\r
1800d80f 93 private DefaultTableModel optionsTableModel = null;\r
a13899c5 94 private FpdFileContents ffc = null;\r
95 private String moduleKey = null;\r
0202572b 96 private ModuleIdentification moduleId = null;\r
802e0055 97 private int moduleSaNum = -1;\r
50d4c727 98 private HashMap<LibraryClassDescriptor, ArrayList<String>> classInstanceMap = null;\r
99 //\r
100 // map of <{libName, supArch, supMod}, list of Module information>\r
101 //\r
102 private HashMap<LibraryClassDescriptor, ArrayList<String>> classConsumed = null;\r
103 private HashMap<LibraryClassDescriptor, ArrayList<String>> classProduced = null;\r
104 \r
57d0e52a 105 private JPanel jPanelModuleSaOpts = null;\r
106 private JLabel jLabelFvBinding = null;\r
8f55ea73 107 private JTextField jTextFieldFvBinding = null;\r
57d0e52a 108 private JLabel jLabelFfsFileGuid = null;\r
8f55ea73 109 private JTextField jTextFieldFileGuid = null;\r
57d0e52a 110 private JLabel jLabelFfsFormatKey = null;\r
8f55ea73 111 private JTextField jTextFieldFfsKey = null;\r
57d0e52a 112 private JScrollPane jScrollPaneModuleSaOptions = null;\r
113 private JTable jTableModuleSaOptions = null;\r
114 private JButton jButtonNew = null;\r
115 private JButton jButtonDeleteOption = null;\r
116 private JPanel jPanelPcdFields = null;\r
117 private JPanel jPanelPcdFieldsSecondRow = null;\r
118 private JPanel jPanelPcdFieldsThirdRow = null;\r
119 private JPanel jPanelPcdFieldsFirstRow = null;\r
120 private JLabel jLabelItemType = null;\r
121 private JComboBox jComboBoxItemType = null;\r
122 private JLabel jLabelMaxDatumSize = null;\r
123 private JTextField jTextFieldMaxDatumSize = null;\r
124 private JLabel jLabelPcdDefaultValue = null;\r
125 private JTextField jTextFieldPcdDefault = null;\r
126 private JButton jButtonUpdatePcd = null;\r
127 private JComboBox jComboBoxFeatureFlagValue = null;\r
8f55ea73 128 private OpeningPlatformType docConsole = null;\r
c1dbe93d 129 private JPanel jPanelCustomToolChain = null;\r
130 private JPanel jPanelToolchainS = null;\r
1b69863a 131 private JPanel jPanelLibraryCenterN = null;\r
132 private JPanel jPanelLibraryCenterC = null; // @jve:decl-index=0:visual-constraint="20,224"\r
9d6f6d70 133 \r
134 private final int buildTargetWidth = 150;\r
135 private final int toolChainFamilyWidth = 150;\r
136 private final int supportArchWidth = 150;\r
137 private final int toolCmdCodeWidth = 200;\r
138 private final int tagNameWidth = 150;\r
139 private final int argWidth = 400;\r
140 \r
a13899c5 141 /**\r
142 * This is the default constructor\r
143 */\r
144 public FpdModuleSA() {\r
82484861 145 super(FrameworkWizardUI.getInstance());\r
a13899c5 146 initialize();\r
147 }\r
148 public FpdModuleSA(FpdFileContents ffc) {\r
149 this();\r
150 this.ffc = ffc;\r
151 }\r
152 \r
8f55ea73 153 public void setKey(String k, int i, OpeningPlatformType dc){\r
a13899c5 154 this.moduleKey = k;\r
802e0055 155 moduleSaNum = i;\r
8f55ea73 156 this.docConsole = dc;\r
50d4c727 157 classInstanceMap = null;\r
57d0e52a 158 classProduced = null;\r
159 classConsumed = null;\r
908b1c05 160 jTabbedPane.setSelectedIndex(0);\r
055e7ae6 161 initPcdBuildDefinition(i);\r
c0459227 162 moduleId = WorkspaceProfile.getModuleId(moduleKey);\r
163 if (moduleId == null) {\r
d73991a1 164 return;\r
165 }\r
50d4c727 166 int tabIndex = jTabbedPane.indexOfTab("Libraries");\r
c0459227 167 if (moduleId.isLibrary()) {\r
50d4c727 168 jTabbedPane.setEnabledAt(tabIndex, false);\r
169 }\r
170 else {\r
171 jTabbedPane.setEnabledAt(tabIndex, true);\r
172 }\r
a13899c5 173 }\r
174\r
175 /**\r
176 init will be called each time FpdModuleSA object is to be shown.\r
177 @param key Module information.\r
178 **/\r
055e7ae6 179 public void initPcdBuildDefinition(int i) {\r
a13899c5 180 //\r
181 // display pcd for key.\r
182 //\r
183 model.setRowCount(0);\r
1bf9fa5a 184 jTextAreaPcdHelp.setText("");\r
185 jComboBoxItemType.setSelectedIndex(-1);\r
186 jTextFieldMaxDatumSize.setText("");\r
187 jTextFieldPcdDefault.setText("");\r
055e7ae6 188 int pcdCount = ffc.getPcdDataCount(i);\r
a13899c5 189 if (pcdCount != 0) {\r
82961247 190 String[][] saa = new String[pcdCount][7];\r
055e7ae6 191 ffc.getPcdData(i, saa);\r
192 for (int j = 0; j < saa.length; ++j) {\r
193 model.addRow(saa[j]);\r
a13899c5 194 }\r
195 }\r
908b1c05 196 }\r
197 \r
198 public void initLibraries(String key) {\r
a883d8c9 199 libClassTableModel.setRowCount(0);\r
200 libInstanceTableModel.setRowCount(0);\r
201 selectedInstancesTableModel.setRowCount(0);\r
202 Vector<String> errorMsg = new Vector<String>();\r
50d4c727 203 try {\r
204 //\r
205 // display library classes that need to be resolved. also potential instances for them.\r
206 //\r
a883d8c9 207 resolveLibraryInstances(moduleKey, errorMsg);\r
50d4c727 208 } catch (Exception e) {\r
a883d8c9 209 String exceptionMsg = e.getCause() + " " + e.getMessage();\r
210 errorMsg.add(exceptionMsg);\r
82484861 211 JOptionPane.showMessageDialog(FrameworkWizardUI.getInstance(), exceptionMsg);\r
50d4c727 212 }\r
a13899c5 213 //\r
214 // display lib instances already selected for key\r
215 //\r
a883d8c9 216 \r
a13899c5 217 int instanceCount = ffc.getLibraryInstancesCount(key);\r
218 if (instanceCount != 0) {\r
219 String[][] saa = new String[instanceCount][5];\r
220 ffc.getLibraryInstances(key, saa);\r
221 for (int i = 0; i < saa.length; ++i) {\r
50d4c727 222 ModuleIdentification mi = WorkspaceProfile.getModuleId(saa[i][1] + " " + saa[i][2] + " " + saa[i][3]\r
223 + " " + saa[i][4]);\r
71baa24b 224 if (mi != null) {\r
31095724 225 //\r
226 // ToDo: verify this instance first.\r
227 //\r
71baa24b 228 saa[i][0] = mi.getName();\r
229 saa[i][2] = mi.getVersion();\r
3658f95e 230 saa[i][4] = mi.getPackageId().getVersion();\r
71baa24b 231 //\r
232 // re-evaluate lib instance usage when adding a already-selected lib instance.\r
233 //\r
50d4c727 234 try {\r
a883d8c9 235 resolveLibraryInstances(saa[i][1] + " " + saa[i][2] + " " + saa[i][3] + " " + saa[i][4], errorMsg);\r
50d4c727 236 } catch (Exception e) {\r
a883d8c9 237 String exceptionMsg = e.getCause() + " " + e.getMessage();\r
238 if (!errorMsg.contains(exceptionMsg)) {\r
82484861 239 JOptionPane.showMessageDialog(FrameworkWizardUI.getInstance(), e.getCause() + " " + e.getMessage());\r
a883d8c9 240 }\r
50d4c727 241 }\r
57d0e52a 242 selectedInstancesTableModel.addRow(saa[i]);\r
a13899c5 243 }\r
a13899c5 244 }\r
245 }\r
50d4c727 246\r
a883d8c9 247 if (errorMsg.size() > 0) {\r
248 String errors = "";\r
249 for (int i = 0; i < errorMsg.size(); ++i) {\r
250 errors += " " + errorMsg.get(i) + "\n";\r
251 }\r
82484861 252 JOptionPane.showMessageDialog(FrameworkWizardUI.getInstance(), errors);\r
a883d8c9 253 }\r
a094728f 254 showClassToResolved();\r
908b1c05 255 }\r
256 \r
c1dbe93d 257 public void initFvInfo (String key) {\r
1800d80f 258 //\r
259 // display module SA options\r
260 //\r
802e0055 261 jTextFieldFvBinding.setText("");\r
1800d80f 262 String fvBinding = ffc.getFvBinding(key);\r
263 if (fvBinding != null) {\r
8f55ea73 264 jTextFieldFvBinding.setText(fvBinding);\r
1800d80f 265 }\r
802e0055 266 jTextFieldFileGuid.setText("");\r
1800d80f 267 String fileGuid = ffc.getFfsFileNameGuid(key);\r
268 if (fileGuid != null) {\r
8f55ea73 269 jTextFieldFileGuid.setText(fileGuid);\r
1800d80f 270 }\r
802e0055 271 jTextFieldFfsKey.setText("");\r
1800d80f 272 String ffsKey = ffc.getFfsFormatKey(key);\r
273 if (ffsKey != null) {\r
8f55ea73 274 jTextFieldFfsKey.setText(ffsKey);\r
1800d80f 275 }\r
c1dbe93d 276 }\r
277 \r
278 public void initToolChainOptions(String key) {\r
bf5abaff 279 \r
280 optionsTableModel.setRowCount(0);\r
281 String[][] saa = new String[ffc.getModuleSAOptionsCount(key)][6];\r
282 ffc.getModuleSAOptions(key, saa);\r
283 for (int i = 0; i < saa.length; ++i) {\r
284 optionsTableModel.addRow(saa[i]);\r
285 }\r
a13899c5 286 }\r
287 \r
50d4c727 288 private void filterClassConsumedByArch (Vector<LibraryClassDescriptor> v) {\r
289 String[] moduleInfo = moduleKey.split(" ");\r
290 Vector<String> vModuleArchs = new Vector<String>();\r
291 //\r
292 // Skip guid, version information, get archs to check.\r
293 //\r
294 for (int i = 4; i < moduleInfo.length; ++i) {\r
295 vModuleArchs.add(moduleInfo[i]);\r
296 }\r
297 //\r
298 // if module will be built on all platforms, no filter needed for lib classes.\r
299 //\r
300 if (vModuleArchs.size() == 0) {\r
301 return;\r
302 }\r
303 \r
e4f1ff6c 304 Iterator<LibraryClassDescriptor> iter = v.iterator();\r
305 while (iter.hasNext()) {\r
306 LibraryClassDescriptor libInfo = iter.next();\r
50d4c727 307\r
308 Vector<String> vSupArchs = libInfo.getVectorFromString(libInfo.supArchs);\r
309 \r
310 if (vSupArchs.size() == 0 || (vSupArchs.size() == 1 && vSupArchs.get(0).equalsIgnoreCase(""))) {\r
311 //\r
312 // update lib info to module archs only.\r
313 //\r
314 libInfo.supArchs = "";\r
315 for (int i = 0; i < vModuleArchs.size(); ++i) {\r
316 libInfo.supArchs += vModuleArchs.get(i);\r
317 libInfo.supArchs += " ";\r
318 }\r
319 libInfo.supArchs.trim();\r
320 continue;\r
321 }\r
a13899c5 322 //\r
50d4c727 323 // only retain those lib class used by module archs.\r
a13899c5 324 //\r
50d4c727 325 vSupArchs.retainAll(vModuleArchs);\r
326 if (vSupArchs.size() > 0) {\r
327 //\r
328 // update lib info to reflect which kind of arch need to select instance.\r
329 //\r
330 libInfo.supArchs = "";\r
331 for (int i = 0; i < vSupArchs.size(); ++i) {\r
332 libInfo.supArchs += vSupArchs.get(i);\r
333 libInfo.supArchs += " ";\r
334 }\r
335 libInfo.supArchs.trim();\r
336 continue;\r
337 }\r
a13899c5 338 //\r
50d4c727 339 // remove this lib definition if it supports no archs module will be built under.\r
a13899c5 340 //\r
e4f1ff6c 341 iter.remove();\r
50d4c727 342 }\r
343 }\r
344 \r
a883d8c9 345 private void resolveLibraryInstances(String key, Vector<String> errorMsg) throws MultipleInstanceException, NoInstanceException{\r
50d4c727 346 ModuleIdentification mi = WorkspaceProfile.getModuleId(key);\r
347 PackageIdentification[] depPkgList = null;\r
348 \r
349 //\r
350 // Get dependency pkg list into which we will search lib instances.\r
351 //\r
c0459227 352 //depPkgList = SurfaceAreaQuery.getDependencePkg(null, mi);\r
50d4c727 353 //\r
354 // Get the lib class consumed, produced by this module itself.\r
355 //\r
356 Vector<LibraryClassDescriptor> vClassConsumed = SurfaceAreaQuery.getLibraryClasses("ALWAYS_CONSUMED", mi);\r
0202572b 357 for (int i = 0; i < vClassConsumed.size(); ++i) {\r
358 vClassConsumed.get(i).supModTypes = WorkspaceProfile.getModuleType(moduleId);\r
359 }\r
50d4c727 360 filterClassConsumedByArch(vClassConsumed);\r
361 if (this.classConsumed == null) {\r
362 this.classConsumed = new HashMap<LibraryClassDescriptor, ArrayList<String>>();\r
363 }\r
364\r
365 for (int i = 0; i < vClassConsumed.size(); ++i) {\r
366 ArrayList<String> consumedBy = this.classConsumed.get(vClassConsumed.get(i));\r
367 if (consumedBy == null) {\r
368 consumedBy = new ArrayList<String>();\r
a13899c5 369 }\r
50d4c727 370 consumedBy.add(key);\r
371 this.classConsumed.put(vClassConsumed.get(i), consumedBy);\r
372 }\r
373\r
374 Vector<LibraryClassDescriptor> vClassProduced = SurfaceAreaQuery.getLibraryClasses("ALWAYS_PRODUCED", mi);\r
375 if (this.classProduced == null) {\r
376 this.classProduced = new HashMap<LibraryClassDescriptor, ArrayList<String>>();\r
377 }\r
378 for (int i = 0; i < vClassProduced.size(); ++i) {\r
379 ArrayList<String> producedBy = this.classProduced.get(vClassProduced.get(i));\r
380 if (producedBy == null) {\r
381 producedBy = new ArrayList<String>();\r
a13899c5 382 }\r
50d4c727 383 //\r
384 // class already produced by previous module (lib instance).\r
385 /*\r
386 if (producedBy.size() == 1) {\r
387 String instanceKey = producedBy.get(0);\r
388 ModuleIdentification libMi = WorkspaceProfile.getModuleId(instanceKey);\r
389 throw new MultipleInstanceException (vClassProduced.get(i).className, libMi.getName(), mi.getName());\r
a13899c5 390 }\r
50d4c727 391 Iterator<LibraryClassDescriptor> lcdi = this.classProduced.keySet().iterator();\r
392 while (lcdi.hasNext()) {\r
393 LibraryClassDescriptor lcd = lcdi.next();\r
394 if (vClassProduced.get(i).hasInterSectionWith(lcd)) {\r
395 ArrayList<String> alreadyProducedBy = this.classProduced.get(lcd);\r
396 String instanceKey = alreadyProducedBy.get(0);\r
397 ModuleIdentification libMi = WorkspaceProfile.getModuleId(instanceKey);\r
398 throw new MultipleInstanceException (vClassProduced.get(i).className, libMi.getName(), mi.getName());\r
a13899c5 399 }\r
400 }\r
50d4c727 401 */\r
402 // normal case.\r
a13899c5 403 //\r
50d4c727 404 producedBy.add(key);\r
405 this.classProduced.put(vClassProduced.get(i), producedBy);\r
406 \r
407 }\r
408\r
409 //\r
410 // find potential instances in all pkgs for classes still in classConsumed.\r
411 //\r
412 if (classInstanceMap == null) {\r
413 classInstanceMap = new HashMap<LibraryClassDescriptor, ArrayList<String>>();\r
414 }\r
415 Iterator<LibraryClassDescriptor> lic = this.classConsumed.keySet().iterator();\r
416 while (lic.hasNext()) {\r
417 LibraryClassDescriptor cls = lic.next();\r
c0459227 418 if (isBoundedClass(cls, errorMsg)) {\r
50d4c727 419 continue;\r
a13899c5 420 }\r
50d4c727 421 ArrayList<String> instances = getInstancesForClass(cls, depPkgList);\r
422 if (instances.size() == 0) {\r
a883d8c9 423// throw new NoInstanceException (cls.className);\r
424 String exceptionMsg = new NoInstanceException (cls.className).getMessage();\r
425 if (!errorMsg.contains(exceptionMsg)) {\r
426 errorMsg.add(exceptionMsg); \r
427 }\r
428 \r
a13899c5 429 }\r
50d4c727 430 classInstanceMap.put(cls, instances);\r
431\r
432 }\r
a094728f 433// showClassToResolved();\r
50d4c727 434 }\r
435\r
436 /**Search classProduced map to see if this class has been produced by some instance (module).\r
437 * @param cls\r
438 * @return\r
439 */\r
c0459227 440 private boolean isBoundedClass (LibraryClassDescriptor cls, Vector<String> errorMsg) {\r
441// if (this.classProduced.containsKey(cls)) {\r
442// return true;\r
443// }\r
50d4c727 444 Iterator<LibraryClassDescriptor> lcdi = this.classProduced.keySet().iterator();\r
445 while (lcdi.hasNext()) {\r
446 LibraryClassDescriptor lcd = lcdi.next();\r
c0459227 447 if (cls.className.equals(lcd.className)) {\r
448 if (cls.isSubSetByArchs(lcd) && cls.isSubSetByModTypes(lcd)) {\r
449 return true;\r
450 }\r
451 else {\r
452 ArrayList<String> producedBy = this.classProduced.get(lcd);\r
453 String instancesName = "";\r
454 for (int i = 0; i < producedBy.size(); ++i) {\r
455 ModuleIdentification mi = WorkspaceProfile.getModuleId(producedBy.get(i));\r
456 instancesName += mi.getName();\r
457 instancesName += " ";\r
458 }\r
459 String msg = new ImproperInstanceException(lcd.className, instancesName, lcd.supArchs, lcd.supModTypes).getMessage();\r
460 errorMsg.add(msg);\r
461 }\r
50d4c727 462 }\r
a13899c5 463 }\r
50d4c727 464 \r
465 return false;\r
a13899c5 466 }\r
467 \r
50d4c727 468 private ArrayList<String> getInstancesForClass(LibraryClassDescriptor cls, PackageIdentification[] depPkgList){\r
a13899c5 469 ArrayList<String> al = new ArrayList<String>();\r
470 \r
73d9b1c4 471// for (int i = 0; i < depPkgList.length; ++i) {\r
3658f95e 472 Iterator ismi = GlobalData.vModuleList.iterator();\r
a13899c5 473 while(ismi.hasNext()) {\r
474 ModuleIdentification mi = (ModuleIdentification)ismi.next();\r
73d9b1c4 475// if (!mi.getPackageId().getGuid().equalsIgnoreCase(depPkgList[i].getGuid())) {\r
476// continue;\r
477// }\r
50d4c727 478 Vector<LibraryClassDescriptor> clsProduced = SurfaceAreaQuery.getLibraryClasses("ALWAYS_PRODUCED", mi);\r
a13899c5 479 \r
480 boolean isPotential = false;\r
50d4c727 481 Iterator<LibraryClassDescriptor> lcdi = clsProduced.iterator();\r
482 while (lcdi.hasNext()) {\r
483 LibraryClassDescriptor lcd = lcdi.next();\r
484 if (cls.isSubSetByArchs(lcd) && cls.isSubSetByModTypes(lcd)){\r
a13899c5 485 isPotential = true;\r
486 }\r
50d4c727 487 \r
c0459227 488 if (isPotential && hasBeenProduced(lcd)) {\r
a13899c5 489 isPotential = false;\r
490 break;\r
491 }\r
492 }\r
493 if (isPotential) {\r
494 al.add(mi.getGuid() + " " + mi.getVersion() + " " + \r
73d9b1c4 495 mi.getPackageId().getGuid() + " " + mi.getPackageId().getVersion());\r
a13899c5 496 }\r
497 }\r
73d9b1c4 498// }\r
a13899c5 499 \r
500 return al;\r
501 }\r
502 \r
50d4c727 503 private boolean hasBeenProduced (LibraryClassDescriptor cls) {\r
504 Iterator<LibraryClassDescriptor> lcdi = this.classProduced.keySet().iterator();\r
505 while (lcdi.hasNext()) {\r
506 LibraryClassDescriptor lcd = lcdi.next();\r
c0459227 507 if (cls.isSubSetByArchs(lcd) && cls.isSubSetByModTypes(lcd)) {\r
50d4c727 508 return true;\r
509 }\r
510 }\r
511 return false;\r
512 }\r
513 \r
514 private ArrayList<String> getConsumedBy (String className) {\r
515 Iterator<LibraryClassDescriptor> lcdi = this.classConsumed.keySet().iterator();\r
516 while (lcdi.hasNext()) {\r
517 LibraryClassDescriptor lcd = lcdi.next();\r
9ccee2a0 518 if ((lcd.className != null) && lcd.className.equals(className)) {\r
50d4c727 519 return this.classConsumed.get(lcd);\r
520 }\r
521 }\r
522 return null;\r
523 }\r
524 \r
a13899c5 525 private void removeInstance(String key) {\r
1bf9fa5a 526 ModuleIdentification mi = WorkspaceProfile.getModuleId(key); \r
a13899c5 527 //\r
528 // remove pcd information of instance from current ModuleSA\r
529 //\r
82dcbb45 530 ffc.removePcdData(moduleKey, mi);\r
a13899c5 531 //\r
532 // remove class produced by this instance and add back these produced class to be bound.\r
533 //\r
50d4c727 534 Vector<LibraryClassDescriptor> clsProduced = getClassProduced(mi);\r
535 for (int i = 0; i < clsProduced.size(); ++i) {\r
a13899c5 536 \r
50d4c727 537 classProduced.remove(clsProduced.get(i));\r
a13899c5 538 }\r
539 //\r
540 // remove class consumed by this instance. we do not need to bound it now.\r
541 //\r
542 String[] clsConsumed = getClassConsumed(mi);\r
543 for (int i = 0; i < clsConsumed.length; ++i) {\r
50d4c727 544 ArrayList<String> al = getConsumedBy (clsConsumed[i]);\r
a13899c5 545 \r
546 if (al == null ) {\r
a13899c5 547 continue;\r
548 }\r
549 al.remove(key);\r
50d4c727 550 \r
a13899c5 551 }\r
50d4c727 552 \r
a13899c5 553 showClassToResolved();\r
554 \r
555 }\r
556 \r
a13899c5 557 \r
50d4c727 558 private Vector<LibraryClassDescriptor> getClassProduced(ModuleIdentification mi){\r
a13899c5 559 \r
50d4c727 560 Vector<LibraryClassDescriptor> clsProduced = SurfaceAreaQuery.getLibraryClasses("ALWAYS_PRODUCED", mi);\r
561 return clsProduced;\r
562// String[] sClassProduced = new String[clsProduced.size()];\r
563// for (int i = 0; i < clsProduced.size(); ++i) {\r
564// sClassProduced[i] = clsProduced.get(i).className;\r
565// }\r
566// return sClassProduced;\r
a13899c5 567 }\r
568 \r
569 private String[] getClassConsumed(ModuleIdentification mi){\r
570 \r
50d4c727 571 Vector<LibraryClassDescriptor> clsConsumed = SurfaceAreaQuery.getLibraryClasses("ALWAYS_CONSUMED", mi);\r
572 String[] sClassConsumed = new String[clsConsumed.size()];\r
573 for (int i = 0; i < clsConsumed.size(); ++i) {\r
574 sClassConsumed[i] = clsConsumed.get(i).className;\r
a13899c5 575 }\r
50d4c727 576 return sClassConsumed;\r
a13899c5 577 }\r
578 \r
579 private void showClassToResolved(){\r
c0459227 580 Vector<String> errorMsg = new Vector<String>();\r
8cc71525 581 libClassTableModel.setRowCount(0);\r
582 libInstanceTableModel.setRowCount(0);\r
50d4c727 583 if (classConsumed == null || classConsumed.size() == 0) {\r
a13899c5 584 return;\r
585 }\r
50d4c727 586 Iterator<LibraryClassDescriptor> li = classConsumed.keySet().iterator();\r
a13899c5 587 while(li.hasNext()){\r
50d4c727 588 LibraryClassDescriptor lcd = li.next();\r
589 String[] s = {lcd.className, lcd.supArchs, lcd.supModTypes};\r
590 if (classConsumed.get(lcd) == null || classConsumed.get(lcd).size() == 0) {\r
591 continue;\r
592 }\r
a13899c5 593 \r
c0459227 594 if (!isBoundedClass(lcd, errorMsg)){\r
57d0e52a 595 libClassTableModel.addRow(s);\r
a13899c5 596 }\r
597 }\r
a883d8c9 598 \r
c0459227 599 if (errorMsg.size() > 0) {\r
600 String errors = "";\r
601 for (int i = 0; i < errorMsg.size(); ++i) {\r
602 errors += " " + errorMsg.get(i) + "\n";\r
603 }\r
604 JOptionPane.showMessageDialog(FrameworkWizardUI.getInstance(), errors);\r
605 }\r
a13899c5 606 }\r
a094728f 607 \r
11c5f071 608 private String getModuleArch () {\r
609 String arch = "";\r
610 String[] moduleInfo = moduleKey.split(" ");\r
611 for (int i = 4; i < moduleInfo.length; ++i) {\r
612 arch += moduleInfo[i];\r
613 arch += " ";\r
614 }\r
615 return arch.trim();\r
616 }\r
1b69863a 617 private void addLibInstance (ModuleIdentification libMi) throws Exception{\r
a094728f 618 \r
a094728f 619 //\r
620 // Add pcd information of selected instance to current moduleSA\r
621 //\r
11c5f071 622 ffc.addFrameworkModulesPcdBuildDefs(libMi, getModuleArch(), ffc.getModuleSA(moduleKey));\r
a094728f 623 \r
1b69863a 624 ffc.genLibraryInstance(libMi, moduleKey);\r
a094728f 625 }\r
a13899c5 626 /**\r
627 * This method initializes this\r
628 * \r
629 * @return void\r
630 */\r
631 private void initialize() {\r
1b69863a 632 this.setSize(877, 555);\r
b411fc1f 633 this.setResizable(false);\r
f3b0ed9a 634 this.centerWindow();\r
a13899c5 635 this.setModal(true);\r
636 this.setTitle("Module Settings");\r
637 this.setContentPane(getJContentPane());\r
638 }\r
639\r
640 /**\r
641 * This method initializes jContentPane\r
642 * \r
643 * @return javax.swing.JPanel\r
644 */\r
645 private JPanel getJContentPane() {\r
646 if (jContentPane == null) {\r
647 jContentPane = new JPanel();\r
648 jContentPane.setLayout(new BorderLayout());\r
649 jContentPane.add(getJTabbedPane(), java.awt.BorderLayout.CENTER);\r
57d0e52a 650 jContentPane.add(getJPanelContentPaneSouth(), java.awt.BorderLayout.SOUTH);\r
a13899c5 651 }\r
652 return jContentPane;\r
653 }\r
654\r
655 /**\r
656 * This method initializes jTabbedPane \r
657 * \r
658 * @return javax.swing.JTabbedPane \r
659 */\r
660 private JTabbedPane getJTabbedPane() {\r
661 if (jTabbedPane == null) {\r
662 jTabbedPane = new JTabbedPane();\r
57d0e52a 663 jTabbedPane.addTab("PCD Build Definition", null, getJPanelPcd(), null);\r
57d0e52a 664 jTabbedPane.addTab("Libraries", null, getJPanelLibrary(), null);\r
c1dbe93d 665 jTabbedPane.addTab("FV Info", null, getJPanelModuleSaOpts(), null);\r
666 jTabbedPane.addTab("Custom Toolchain", null, getJPanelCustomToolChain(), null);\r
667 \r
a13899c5 668 }\r
669 return jTabbedPane;\r
670 }\r
671\r
672 /**\r
57d0e52a 673 * This method initializes jPanelPcd\r
a13899c5 674 * \r
675 * @return javax.swing.JPanel \r
676 */\r
57d0e52a 677 private JPanel getJPanelPcd() {\r
678 if (jPanelPcd == null) {\r
679 jLabelPcdData = new JLabel();\r
1b69863a 680 jLabelPcdData.setText(" PCD Data");\r
57d0e52a 681 jPanelPcd = new JPanel();\r
682 jPanelPcd.setLayout(new BorderLayout());\r
683 jPanelPcd.add(jLabelPcdData, java.awt.BorderLayout.NORTH);\r
684 jPanelPcd.add(getJScrollPaneTablePcd(), java.awt.BorderLayout.CENTER);\r
685 jPanelPcd.add(getJPanelPcdSouth(), java.awt.BorderLayout.SOUTH);\r
686 jPanelPcd.addComponentListener(new java.awt.event.ComponentAdapter() {\r
a13899c5 687 public void componentShown(java.awt.event.ComponentEvent e) {\r
802e0055 688 initPcdBuildDefinition(moduleSaNum);\r
a13899c5 689 }\r
690 });\r
691 \r
692 }\r
57d0e52a 693 return jPanelPcd;\r
a13899c5 694 }\r
695\r
696 /**\r
57d0e52a 697 * This method initializes jPanelLibrary\r
a13899c5 698 * \r
699 * @return javax.swing.JPanel \r
700 */\r
57d0e52a 701 private JPanel getJPanelLibrary() {\r
702 if (jPanelLibrary == null) {\r
703 jPanelLibrary = new JPanel();\r
704 jPanelLibrary.setLayout(new BorderLayout());\r
705 jPanelLibrary.add(getJSplitPane(), java.awt.BorderLayout.NORTH);\r
706 jPanelLibrary.add(getJPanelLibrarySouth(), java.awt.BorderLayout.SOUTH);\r
707 jPanelLibrary.add(getJPanelLibraryCenter(), java.awt.BorderLayout.CENTER);\r
708 jPanelLibrary.addComponentListener(new java.awt.event.ComponentAdapter() {\r
a13899c5 709 public void componentShown(java.awt.event.ComponentEvent e) {\r
908b1c05 710 initLibraries(moduleKey);\r
a13899c5 711 }\r
712 });\r
713 }\r
57d0e52a 714 return jPanelLibrary;\r
a13899c5 715 }\r
716\r
717 /**\r
57d0e52a 718 * This method initializes jScrollPaneTablePcd\r
a13899c5 719 * \r
720 * @return javax.swing.JScrollPane \r
721 */\r
57d0e52a 722 private JScrollPane getJScrollPaneTablePcd() {\r
723 if (jScrollPaneTablePcd == null) {\r
724 jScrollPaneTablePcd = new JScrollPane();\r
725 jScrollPaneTablePcd.setViewportView(getJTablePcd());\r
a13899c5 726 }\r
57d0e52a 727 return jScrollPaneTablePcd;\r
a13899c5 728 }\r
729\r
730 /**\r
731 * This method initializes jTable \r
732 * \r
733 * @return javax.swing.JTable \r
734 */\r
57d0e52a 735 private JTable getJTablePcd() {\r
736 if (jTablePcd == null) {\r
ed850fbf 737 model = new IDefaultTableModel();\r
57d0e52a 738 jTablePcd = new JTable(model);\r
739 jTablePcd.setRowHeight(20);\r
1b69863a 740 jTablePcd.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_ALL_COLUMNS);\r
a13899c5 741 model.addColumn("CName");\r
742 model.addColumn("TokenSpaceGUID");\r
743 model.addColumn("ItemType");\r
744 model.addColumn("Token");\r
82961247 745 model.addColumn("MaxDatumSize");\r
a13899c5 746 model.addColumn("DataType");\r
747 model.addColumn("DefaultValue");\r
5a502bd4 748 \r
749 jTablePcd.getColumnModel().getColumn(0).setMinWidth(250);\r
2cd33eaf 750 \r
751 TableColumn tokenColumn = jTablePcd.getColumnModel().getColumn(3);\r
752 jTablePcd.removeColumn(tokenColumn);\r
a13899c5 753 \r
57d0e52a 754 jTablePcd.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
755 jTablePcd.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
a13899c5 756 public void valueChanged(ListSelectionEvent e) {\r
44053733 757 \r
a13899c5 758 if (e.getValueIsAdjusting()){\r
759 return;\r
760 }\r
761 ListSelectionModel lsm = (ListSelectionModel)e.getSource();\r
762 if (lsm.isSelectionEmpty()) {\r
763 return;\r
764 }\r
765 else{\r
908b1c05 766 int selectedRow = lsm.getMinSelectionIndex();\r
73d9b1c4 767 String cName = model.getValueAt(selectedRow, 0)+"";\r
768 String tsGuid = model.getValueAt(selectedRow, 1)+"";\r
769 String itemType = model.getValueAt(selectedRow, 2)+"";\r
ce32083f 770 //\r
771 // array for pcd related information: helpText, itemType, moduleType.\r
772 //\r
773 String[] pcdInfo = {"", "", ""};\r
e4f1ff6c 774 Vector<String> validPcdTypes = new Vector<String>();\r
775 getPcdInfo(moduleKey, cName, tsGuid, pcdInfo, validPcdTypes);\r
57d0e52a 776 jTextAreaPcdHelp.setText(pcdInfo[0]);\r
e4f1ff6c 777 initComboBox(pcdInfo[1], pcdInfo[2], validPcdTypes);\r
73d9b1c4 778 jComboBoxItemType.setSelectedItem(itemType);\r
57d0e52a 779 jTextFieldMaxDatumSize.setEnabled(true);\r
780 jTextFieldMaxDatumSize.setVisible(true);\r
98aee6e9 781 jTextFieldMaxDatumSize.setText(model.getValueAt(selectedRow, 4)+"");\r
57d0e52a 782 jTextFieldPcdDefault.setEnabled(true);\r
98aee6e9 783 jTextFieldPcdDefault.setText(model.getValueAt(selectedRow, 6)+"");\r
9ccee2a0 784 if ((model.getValueAt(selectedRow, 5) != null) && model.getValueAt(selectedRow, 5).equals("VOID*")) {\r
908b1c05 785 if (pcdInfo[1].equals("FEATURE_FLAG")) {\r
57d0e52a 786 jTextFieldMaxDatumSize.setVisible(false);\r
908b1c05 787 }\r
788 else if (pcdInfo[1].equals("FIXED_AT_BUILD")) {\r
789 try{\r
57d0e52a 790 jTextFieldMaxDatumSize.setEnabled(false);\r
98aee6e9 791 jTextFieldMaxDatumSize.setText(ffc.setMaxSizeForPointer(model.getValueAt(selectedRow, 6)+"")+"");\r
908b1c05 792 }\r
793 catch(Exception except){\r
82484861 794 JOptionPane.showMessageDialog(FpdModuleSA.this, "Unacceptable PCD Value: " + except.getMessage());\r
908b1c05 795 }\r
796 }\r
797 else{\r
98aee6e9 798 jTextFieldMaxDatumSize.setText(model.getValueAt(selectedRow, 4)+"");\r
908b1c05 799 }\r
800 }\r
801 else {\r
57d0e52a 802 jTextFieldMaxDatumSize.setEnabled(false);\r
908b1c05 803 }\r
a13899c5 804 \r
73d9b1c4 805 if (!model.getValueAt(selectedRow, 2).equals("DYNAMIC") && !model.getValueAt(selectedRow, 2).equals("DYNAMIC_EX")) {\r
806 jTextFieldPcdDefault.setText(model.getValueAt(selectedRow, 6)+"");\r
807 if (model.getValueAt(selectedRow, 2).equals("FEATURE_FLAG")){\r
57d0e52a 808 jTextFieldPcdDefault.setVisible(false);\r
809 jComboBoxFeatureFlagValue.setVisible(true);\r
ce32083f 810 jComboBoxFeatureFlagValue.setSelectedItem(model.getValueAt(selectedRow, 6)+"");\r
908b1c05 811 }\r
812 else{\r
57d0e52a 813 jTextFieldPcdDefault.setVisible(true);\r
814 jTextFieldPcdDefault.setEnabled(true);\r
815 jComboBoxFeatureFlagValue.setVisible(false);\r
908b1c05 816 }\r
817 }\r
818 else{\r
57d0e52a 819 jTextFieldPcdDefault.setEnabled(false);\r
908b1c05 820 }\r
a13899c5 821 }\r
908b1c05 822 \r
823 \r
a13899c5 824 }\r
825 });\r
826 \r
a13899c5 827 }\r
57d0e52a 828 return jTablePcd;\r
a13899c5 829 }\r
908b1c05 830 \r
e4f1ff6c 831 private void initComboBox(String originalType, String mType, Vector<String> validPcdTypes) {\r
57d0e52a 832 jComboBoxItemType.removeAllItems();\r
e4f1ff6c 833\r
908b1c05 834 if (originalType.equals("DYNAMIC")) {\r
e4f1ff6c 835 for (int i = 0; i < validPcdTypes.size(); ++i) {\r
836 jComboBoxItemType.addItem(validPcdTypes.get(i));\r
837 }\r
838 }\r
839 else {\r
840 jComboBoxItemType.addItem(originalType);\r
908b1c05 841 }\r
842 }\r
843 \r
98aee6e9 844 /**\r
845 * @param cName\r
846 * @param tsGuid\r
847 * @param sa sa[0]: HelpText; sa[1]: itemType in Msa; sa[2]: isBinary;\r
848 */\r
e4f1ff6c 849 private void getPcdInfo(String moduleKey, String cName, String tsGuid, String[] sa, Vector<String> validPcdTypes) {\r
908b1c05 850 String[][] saa = new String[ffc.getLibraryInstancesCount(moduleKey)][5];\r
851 ffc.getLibraryInstances(moduleKey, saa);\r
852 \r
853 try{\r
e4f1ff6c 854 if (ffc.getPcdBuildDataInfo(WorkspaceProfile.getModuleId(moduleKey), cName, tsGuid, sa, validPcdTypes)) {\r
908b1c05 855 return;\r
856 }\r
857 for (int j = 0; j < saa.length; ++j) {\r
1bf9fa5a 858 if (ffc.getPcdBuildDataInfo(WorkspaceProfile.getModuleId(saa[j][1] + " " + saa[j][2] + " " + saa[j][3] + " " + saa[j][4]),\r
e4f1ff6c 859 cName, tsGuid, sa, validPcdTypes)) {\r
908b1c05 860 return;\r
861 }\r
862 }\r
863 }\r
864 catch(Exception e) {\r
865 JOptionPane.showMessageDialog(this, "Get PCD details fail: " + e.getMessage());\r
866 }\r
867 }\r
a13899c5 868\r
869 /**\r
57d0e52a 870 * This method initializes jPanelPcdSouth\r
a13899c5 871 * \r
872 * @return javax.swing.JPanel \r
873 */\r
57d0e52a 874 private JPanel getJPanelPcdSouth() {\r
875 if (jPanelPcdSouth == null) {\r
876 jLabelPcdHelp = new JLabel();\r
877 jLabelPcdHelp.setText("PCD Description");\r
878 jPanelPcdSouth = new JPanel();\r
879 jPanelPcdSouth.setPreferredSize(new java.awt.Dimension(607,200));\r
880 jPanelPcdSouth.add(jLabelPcdHelp, null);\r
881 jPanelPcdSouth.add(getJScrollPanePcdHelp(), null);\r
882 jPanelPcdSouth.add(getJPanelPcdFields(), null);\r
a13899c5 883 }\r
57d0e52a 884 return jPanelPcdSouth;\r
a13899c5 885 }\r
886\r
887 /**\r
57d0e52a 888 * This method initializes jScrollPanePcdHelp\r
a13899c5 889 * \r
890 * @return javax.swing.JScrollPane \r
891 */\r
57d0e52a 892 private JScrollPane getJScrollPanePcdHelp() {\r
893 if (jScrollPanePcdHelp == null) {\r
894 jScrollPanePcdHelp = new JScrollPane();\r
895 jScrollPanePcdHelp.setPreferredSize(new java.awt.Dimension(500,100));\r
896 jScrollPanePcdHelp.setViewportView(getJTextAreaPcdHelp());\r
a13899c5 897 }\r
57d0e52a 898 return jScrollPanePcdHelp;\r
a13899c5 899 }\r
900\r
901 /**\r
57d0e52a 902 * This method initializes jTextAreaPcdHelp\r
a13899c5 903 * \r
904 * @return javax.swing.JTextArea \r
905 */\r
57d0e52a 906 private JTextArea getJTextAreaPcdHelp() {\r
907 if (jTextAreaPcdHelp == null) {\r
908 jTextAreaPcdHelp = new JTextArea();\r
909 jTextAreaPcdHelp.setEditable(false);\r
a13899c5 910 }\r
57d0e52a 911 return jTextAreaPcdHelp;\r
a13899c5 912 }\r
913\r
914 /**\r
57d0e52a 915 * This method initializes jPanelContentPaneSouth\r
a13899c5 916 * \r
917 * @return javax.swing.JPanel \r
918 */\r
57d0e52a 919 private JPanel getJPanelContentPaneSouth() {\r
920 if (jPanelContentPaneSouth == null) {\r
a13899c5 921 FlowLayout flowLayout = new FlowLayout();\r
922 flowLayout.setAlignment(java.awt.FlowLayout.RIGHT);\r
57d0e52a 923 jPanelContentPaneSouth = new JPanel();\r
924 jPanelContentPaneSouth.setLayout(flowLayout);\r
925 jPanelContentPaneSouth.add(getJButtonOk(), null);\r
926 jPanelContentPaneSouth.add(getJButtonCancel(), null);\r
a13899c5 927 }\r
57d0e52a 928 return jPanelContentPaneSouth;\r
a13899c5 929 }\r
930\r
931 /**\r
932 * This method initializes jSplitPane \r
933 * \r
934 * @return javax.swing.JSplitPane \r
935 */\r
936 private JSplitPane getJSplitPane() {\r
937 if (jSplitPane == null) {\r
938 jSplitPane = new JSplitPane();\r
939 jSplitPane.setDividerLocation(200);\r
57d0e52a 940 jSplitPane.setLeftComponent(getJPanelLibraryLeft());\r
941 jSplitPane.setRightComponent(getJPanelLibraryRight());\r
a13899c5 942 jSplitPane.setPreferredSize(new java.awt.Dimension(202,200));\r
943 }\r
944 return jSplitPane;\r
945 }\r
946\r
947 /**\r
57d0e52a 948 * This method initializes jPanelLibraryLeft\r
a13899c5 949 * \r
950 * @return javax.swing.JPanel \r
951 */\r
57d0e52a 952 private JPanel getJPanelLibraryLeft() {\r
953 if (jPanelLibraryLeft == null) {\r
954 jLabelLibClass = new JLabel();\r
955 jLabelLibClass.setText("Library Classes Uninstantiated");\r
956 jPanelLibraryLeft = new JPanel();\r
957 jPanelLibraryLeft.add(jLabelLibClass, null);\r
958 jPanelLibraryLeft.add(getJScrollPaneLibClass(), null);\r
a13899c5 959 }\r
57d0e52a 960 return jPanelLibraryLeft;\r
a13899c5 961 }\r
962\r
963 /**\r
57d0e52a 964 * This method initializes jPanelLibraryRight\r
a13899c5 965 * \r
966 * @return javax.swing.JPanel \r
967 */\r
57d0e52a 968 private JPanel getJPanelLibraryRight() {\r
969 if (jPanelLibraryRight == null) {\r
970 jLabelQualifiedInstance = new JLabel();\r
971 jLabelQualifiedInstance.setText("Instances Available");\r
972 jPanelLibraryRight = new JPanel();\r
973 jPanelLibraryRight.add(jLabelQualifiedInstance, null);\r
974 jPanelLibraryRight.add(getJScrollPaneQualifiedInstance(), null);\r
a13899c5 975 }\r
57d0e52a 976 return jPanelLibraryRight;\r
a13899c5 977 }\r
978\r
979 /**\r
57d0e52a 980 * This method initializes jScrollPaneSelectedInstances\r
a13899c5 981 * \r
982 * @return javax.swing.JScrollPane \r
983 */\r
57d0e52a 984 private JScrollPane getJScrollPaneSelectedInstances() {\r
985 if (jScrollPaneSelectedInstances == null) {\r
986 jScrollPaneSelectedInstances = new JScrollPane();\r
1b69863a 987 jScrollPaneSelectedInstances.setPreferredSize(new java.awt.Dimension(600,150));\r
57d0e52a 988 jScrollPaneSelectedInstances.setViewportView(getJTableSelectedInstances());\r
a13899c5 989 }\r
57d0e52a 990 return jScrollPaneSelectedInstances;\r
a13899c5 991 }\r
992\r
993 /**\r
57d0e52a 994 * This method initializes jTableSelectedInstances\r
a13899c5 995 * \r
996 * @return javax.swing.JTable \r
997 */\r
57d0e52a 998 private JTable getJTableSelectedInstances() {\r
999 if (jTableSelectedInstances == null) {\r
ed850fbf 1000 selectedInstancesTableModel = new IDefaultTableModel();\r
57d0e52a 1001 selectedInstancesTableModel.addColumn("Name");\r
1002 selectedInstancesTableModel.addColumn("ModuleGUID");\r
1003 selectedInstancesTableModel.addColumn("ModuleVersion");\r
1004 selectedInstancesTableModel.addColumn("PackageGUID");\r
1005 selectedInstancesTableModel.addColumn("PackageVersion");\r
1006 jTableSelectedInstances = new JTable(selectedInstancesTableModel);\r
1007 jTableSelectedInstances.setRowHeight(20);\r
5a502bd4 1008 \r
1009 jTableSelectedInstances.getColumnModel().getColumn(0).setMinWidth(250);\r
1010 \r
2a23019d 1011 jTableSelectedInstances.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);\r
57d0e52a 1012 jTableSelectedInstances.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
a13899c5 1013 \r
1014 }\r
57d0e52a 1015 return jTableSelectedInstances;\r
a13899c5 1016 }\r
1017\r
1018 /**\r
57d0e52a 1019 * This method initializes jScrollPaneLibClass\r
a13899c5 1020 * \r
1021 * @return javax.swing.JScrollPane \r
1022 */\r
57d0e52a 1023 private JScrollPane getJScrollPaneLibClass() {\r
1024 if (jScrollPaneLibClass == null) {\r
1025 jScrollPaneLibClass = new JScrollPane();\r
1026 jScrollPaneLibClass.setPreferredSize(new java.awt.Dimension(200,170));\r
1027 jScrollPaneLibClass.setViewportView(getJTableLibClass());\r
a13899c5 1028 }\r
57d0e52a 1029 return jScrollPaneLibClass;\r
a13899c5 1030 }\r
1031\r
1032 /**\r
57d0e52a 1033 * This method initializes jTableLibClass\r
a13899c5 1034 * \r
1035 * @return javax.swing.JTable \r
1036 */\r
57d0e52a 1037 private JTable getJTableLibClass() {\r
1038 if (jTableLibClass == null) {\r
ed850fbf 1039 libClassTableModel = new IDefaultTableModel();\r
57d0e52a 1040 libClassTableModel.addColumn("LibraryClass");\r
50d4c727 1041 libClassTableModel.addColumn("Arch");\r
1042 libClassTableModel.addColumn("ModType");\r
57d0e52a 1043 jTableLibClass = new JTable(libClassTableModel);\r
1044 jTableLibClass.setRowHeight(20);\r
1045 jTableLibClass.setShowGrid(false);\r
1046 jTableLibClass.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
50d4c727 1047 \r
1048 TableColumn column = jTableLibClass.getColumnModel().getColumn(1);\r
1049 jTableLibClass.getColumnModel().removeColumn(column);\r
1050 column = jTableLibClass.getColumnModel().getColumn(1);\r
1051 jTableLibClass.getColumnModel().removeColumn(column);\r
1052 \r
57d0e52a 1053 jTableLibClass.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
a13899c5 1054 public void valueChanged(ListSelectionEvent e) {\r
1055 if (e.getValueIsAdjusting()){\r
1056 return;\r
1057 }\r
1058 ListSelectionModel lsm = (ListSelectionModel)e.getSource();\r
1059 if (lsm.isSelectionEmpty()) {\r
1060 return;\r
1061 }\r
1062 else{\r
1063 int selectedRow2 = lsm.getMinSelectionIndex();\r
1064 if (selectedRow2 < 0) {\r
1065 return;\r
1066 }\r
1067 //\r
1068 // display potential lib instances according to class selection\r
1069 //\r
57d0e52a 1070 libInstanceTableModel.setRowCount(0);\r
1071 String cls = libClassTableModel.getValueAt(selectedRow2, 0).toString();\r
50d4c727 1072 String arch = libClassTableModel.getValueAt(selectedRow2, 1).toString();\r
1073 String modType = libClassTableModel.getValueAt(selectedRow2, 2).toString();\r
1074 ArrayList<String> al = classInstanceMap.get(new LibraryClassDescriptor(cls, arch, modType));\r
1075 if (al == null) {\r
1076 return;\r
1077 }\r
a13899c5 1078 ListIterator<String> li = al.listIterator();\r
1079 while(li.hasNext()) {\r
1080 String instance = li.next();\r
1081 String[] s = {"", "", "", "", ""};\r
1bf9fa5a 1082 if (WorkspaceProfile.getModuleId(instance) != null) {\r
1083 s[0] = WorkspaceProfile.getModuleId(instance).getName();\r
a13899c5 1084 }\r
1085 \r
1086 String[] instancePart = instance.split(" ");\r
1087 for (int i = 0; i < instancePart.length; ++i){\r
1088 s[i+1] = instancePart[i];\r
1089 }\r
57d0e52a 1090 libInstanceTableModel.addRow(s);\r
a13899c5 1091 }\r
1092 \r
1093 }\r
1094 }\r
1095 });\r
1096 }\r
57d0e52a 1097 return jTableLibClass;\r
a13899c5 1098 }\r
1099\r
1100 /**\r
57d0e52a 1101 * This method initializes jScrollPaneQualifiedInstance\r
a13899c5 1102 * \r
1103 * @return javax.swing.JScrollPane \r
1104 */\r
57d0e52a 1105 private JScrollPane getJScrollPaneQualifiedInstance() {\r
1106 if (jScrollPaneQualifiedInstance == null) {\r
1107 jScrollPaneQualifiedInstance = new JScrollPane();\r
1b69863a 1108 jScrollPaneQualifiedInstance.setPreferredSize(new java.awt.Dimension(600,170));\r
57d0e52a 1109 jScrollPaneQualifiedInstance.setViewportView(getJTableLibInstances());\r
a13899c5 1110 }\r
57d0e52a 1111 return jScrollPaneQualifiedInstance;\r
a13899c5 1112 }\r
1113\r
1114 /**\r
57d0e52a 1115 * This method initializes jTableLibInstances\r
a13899c5 1116 * \r
1117 * @return javax.swing.JTable \r
1118 */\r
57d0e52a 1119 private JTable getJTableLibInstances() {\r
1120 if (jTableLibInstances == null) {\r
ed850fbf 1121 libInstanceTableModel = new IDefaultTableModel();\r
57d0e52a 1122 libInstanceTableModel.addColumn("Name");\r
1123 libInstanceTableModel.addColumn("ModuleGUID");\r
1124 libInstanceTableModel.addColumn("ModuleVersion");\r
1125 libInstanceTableModel.addColumn("PackageGUID");\r
1126 libInstanceTableModel.addColumn("PackageVersion");\r
1127 jTableLibInstances = new JTable(libInstanceTableModel);\r
1128 jTableLibInstances.setRowHeight(20);\r
5a502bd4 1129 \r
1130 jTableLibInstances.getColumnModel().getColumn(0).setMinWidth(250);\r
1131 \r
2a23019d 1132 jTableLibInstances.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);\r
57d0e52a 1133 jTableLibInstances.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
908b1c05 1134 \r
a13899c5 1135 }\r
57d0e52a 1136 return jTableLibInstances;\r
a13899c5 1137 }\r
1138\r
1139 /**\r
57d0e52a 1140 * This method initializes jPanelLibrarySouth\r
a13899c5 1141 * \r
1142 * @return javax.swing.JPanel \r
1143 */\r
57d0e52a 1144 private JPanel getJPanelLibrarySouth() {\r
1145 if (jPanelLibrarySouth == null) {\r
1146 jPanelLibrarySouth = new JPanel();\r
a13899c5 1147 }\r
57d0e52a 1148 return jPanelLibrarySouth;\r
a13899c5 1149 }\r
1150\r
1151 /**\r
57d0e52a 1152 * This method initializes jPanelLibraryCenter\r
a13899c5 1153 * \r
1154 * @return javax.swing.JPanel \r
1155 */\r
57d0e52a 1156 private JPanel getJPanelLibraryCenter() {\r
1157 if (jPanelLibraryCenter == null) {\r
1158 jLabelInstanceHelp = new JLabel();\r
1159 jLabelInstanceHelp.setText("Instance Description");\r
1160 jLabelSelectedInstances = new JLabel();\r
1161 jLabelSelectedInstances.setText("Selected Instances");\r
1162 jPanelLibraryCenter = new JPanel();\r
1b69863a 1163 jPanelLibraryCenter.setLayout(new BorderLayout());\r
1164\r
1165 jPanelLibraryCenter.add(getJPanelLibraryCenterC(), java.awt.BorderLayout.CENTER);\r
1166 jPanelLibraryCenter.add(getJPanelLibraryCenterN(), java.awt.BorderLayout.NORTH);\r
1167\r
a13899c5 1168 }\r
57d0e52a 1169 return jPanelLibraryCenter;\r
a13899c5 1170 }\r
1171\r
1172 /**\r
57d0e52a 1173 * This method initializes jScrollPaneInstanceHelp\r
a13899c5 1174 * \r
1175 * @return javax.swing.JScrollPane \r
1176 */\r
57d0e52a 1177 private JScrollPane getJScrollPaneInstanceHelp() {\r
1178 if (jScrollPaneInstanceHelp == null) {\r
1179 jScrollPaneInstanceHelp = new JScrollPane();\r
1b69863a 1180 jScrollPaneInstanceHelp.setPreferredSize(new java.awt.Dimension(400,50));\r
57d0e52a 1181 jScrollPaneInstanceHelp.setViewportView(getJTextAreaInstanceHelp());\r
a13899c5 1182 }\r
57d0e52a 1183 return jScrollPaneInstanceHelp;\r
a13899c5 1184 }\r
1185\r
1186 /**\r
57d0e52a 1187 * This method initializes jTextAreaInstanceHelp\r
a13899c5 1188 * \r
1189 * @return javax.swing.JTextArea \r
1190 */\r
57d0e52a 1191 private JTextArea getJTextAreaInstanceHelp() {\r
1192 if (jTextAreaInstanceHelp == null) {\r
1193 jTextAreaInstanceHelp = new JTextArea();\r
1194 jTextAreaInstanceHelp.setEditable(false);\r
a13899c5 1195 }\r
57d0e52a 1196 return jTextAreaInstanceHelp;\r
a13899c5 1197 }\r
1198\r
1199 /**\r
57d0e52a 1200 * This method initializes jButtonAdd\r
a13899c5 1201 * \r
1202 * @return javax.swing.JButton \r
1203 */\r
57d0e52a 1204 private JButton getJButtonAdd() {\r
1205 if (jButtonAdd == null) {\r
1206 jButtonAdd = new JButton();\r
1207 jButtonAdd.setPreferredSize(new java.awt.Dimension(80,20));\r
1208 jButtonAdd.setText("Add");\r
1209 jButtonAdd.addActionListener(new java.awt.event.ActionListener() {\r
a13899c5 1210 public void actionPerformed(java.awt.event.ActionEvent e) {\r
57d0e52a 1211 int row = jTableLibInstances.getSelectedRow();\r
a13899c5 1212 if (row < 0) {\r
1213 return;\r
1214 }\r
1b69863a 1215 \r
57d0e52a 1216 String instanceValue = libInstanceTableModel.getValueAt(row, 1) + " " +\r
1217 libInstanceTableModel.getValueAt(row, 2) + " " +\r
1218 libInstanceTableModel.getValueAt(row, 3) + " " +\r
1219 libInstanceTableModel.getValueAt(row, 4);\r
1bf9fa5a 1220 ModuleIdentification libMi = WorkspaceProfile.getModuleId(instanceValue);\r
1b69863a 1221 try {\r
1222 addLibInstance (libMi);\r
1223 }\r
1224 catch (Exception exception) {\r
82484861 1225 JOptionPane.showMessageDialog(FpdModuleSA.this, "Adding Instance " + libMi.getName() + " : \n"+ exception.getMessage());\r
1b69863a 1226 return;\r
1227 }\r
1228 docConsole.setSaved(false);\r
1229 Object[] s = {libInstanceTableModel.getValueAt(row, 0), libInstanceTableModel.getValueAt(row, 1),\r
1230 libInstanceTableModel.getValueAt(row, 2), libInstanceTableModel.getValueAt(row, 3),\r
1231 libInstanceTableModel.getValueAt(row, 4)};\r
1232 selectedInstancesTableModel.addRow(s);\r
a883d8c9 1233 \r
1234 Vector<String> errorMsg = new Vector<String>();\r
50d4c727 1235 try {\r
a883d8c9 1236 resolveLibraryInstances(instanceValue, errorMsg);\r
50d4c727 1237 }\r
1238 catch (Exception exp) {\r
82484861 1239 JOptionPane.showMessageDialog(FpdModuleSA.this, exp.getMessage());\r
50d4c727 1240 }\r
a883d8c9 1241 \r
1242 if (errorMsg.size() > 0) {\r
1243 String errors = "";\r
1244 for (int i = 0; i < errorMsg.size(); ++i) {\r
1245 errors += " " + errorMsg.get(i) + "\n";\r
1246 }\r
82484861 1247 JOptionPane.showMessageDialog(FpdModuleSA.this, errors);\r
a883d8c9 1248 }\r
a094728f 1249 showClassToResolved();\r
a13899c5 1250 }\r
1251 });\r
1252 }\r
57d0e52a 1253 return jButtonAdd;\r
a13899c5 1254 }\r
1255\r
1256 /**\r
57d0e52a 1257 * This method initializes jButton1\r
a13899c5 1258 * \r
1259 * @return javax.swing.JButton \r
1260 */\r
57d0e52a 1261 private JButton getJButtonDeleteInstance() {\r
1262 if (jButtonDeleteInstance == null) {\r
1263 jButtonDeleteInstance = new JButton();\r
1264 jButtonDeleteInstance.setPreferredSize(new java.awt.Dimension(80,20));\r
1265 jButtonDeleteInstance.setText("Delete");\r
1266 jButtonDeleteInstance.addActionListener(new java.awt.event.ActionListener() {\r
a13899c5 1267 public void actionPerformed(java.awt.event.ActionEvent e) {\r
57d0e52a 1268 int row = jTableSelectedInstances.getSelectedRow();\r
a13899c5 1269 if (row < 0) {\r
1270 return;\r
1271 }\r
8f55ea73 1272 docConsole.setSaved(false);\r
57d0e52a 1273 removeInstance(selectedInstancesTableModel.getValueAt(row, 1) + " " +\r
1274 selectedInstancesTableModel.getValueAt(row, 2) + " " +\r
1275 selectedInstancesTableModel.getValueAt(row, 3) + " " +\r
1276 selectedInstancesTableModel.getValueAt(row, 4));\r
908b1c05 1277 ffc.removeLibraryInstance(moduleKey, row);\r
57d0e52a 1278 selectedInstancesTableModel.removeRow(row);\r
a13899c5 1279 \r
1280 }\r
1281 });\r
1282 }\r
57d0e52a 1283 return jButtonDeleteInstance;\r
a13899c5 1284 }\r
1285\r
1286 /**\r
1287 * This method initializes jButton2 \r
1288 * \r
1289 * @return javax.swing.JButton \r
1290 */\r
57d0e52a 1291 private JButton getJButtonOk() {\r
1292 if (jButtonOk == null) {\r
1293 jButtonOk = new JButton();\r
1294 jButtonOk.setPreferredSize(new java.awt.Dimension(80,20));\r
50d4c727 1295 jButtonOk.setText("Close");\r
57d0e52a 1296 jButtonOk.addActionListener(this);\r
a13899c5 1297 }\r
57d0e52a 1298 return jButtonOk;\r
a13899c5 1299 }\r
1300\r
1301 /**\r
1302 * This method initializes jButton3 \r
1303 * \r
1304 * @return javax.swing.JButton \r
1305 */\r
57d0e52a 1306 private JButton getJButtonCancel() {\r
1307 if (jButtonCancel == null) {\r
1308 jButtonCancel = new JButton();\r
1309 jButtonCancel.setPreferredSize(new java.awt.Dimension(80,20));\r
1310 jButtonCancel.setText("Cancel");\r
1311 jButtonCancel.setVisible(false);\r
a13899c5 1312 }\r
57d0e52a 1313 return jButtonCancel;\r
a13899c5 1314 }\r
1315 public void actionPerformed(ActionEvent arg0) {\r
1316\r
57d0e52a 1317 if (arg0.getSource() == jButtonOk) {\r
1318 if (jTableModuleSaOptions.isEditing()) {\r
1319 jTableModuleSaOptions.getCellEditor().stopCellEditing();\r
bf5abaff 1320 }\r
a13899c5 1321 this.setVisible(false);\r
1322 }\r
1323 }\r
6a09eb19 1324 /**\r
57d0e52a 1325 * This method initializes jPanelModuleSaOpts\r
6a09eb19 1326 * \r
1327 * @return javax.swing.JPanel \r
1328 */\r
57d0e52a 1329 private JPanel getJPanelModuleSaOpts() {\r
1330 if (jPanelModuleSaOpts == null) {\r
8f55ea73 1331 FlowLayout flowLayout4 = new FlowLayout();\r
1332 flowLayout4.setAlignment(java.awt.FlowLayout.LEFT);\r
57d0e52a 1333 jLabelFfsFormatKey = new JLabel();\r
1334 jLabelFfsFormatKey.setText("FFS Format Key");\r
1335 jLabelFfsFormatKey.setPreferredSize(new java.awt.Dimension(90,16));\r
1336 jLabelFfsFileGuid = new JLabel();\r
1337 jLabelFfsFileGuid.setText("FFS File GUID");\r
1338 jLabelFfsFileGuid.setPreferredSize(new java.awt.Dimension(90,16));\r
d96d701f 1339 jLabelFfsFileGuid.setVisible(false);\r
57d0e52a 1340 jLabelFvBinding = new JLabel();\r
1341 jLabelFvBinding.setText("FV Binding");\r
1342 jLabelFvBinding.setPreferredSize(new java.awt.Dimension(90,16));\r
1343 jPanelModuleSaOpts = new JPanel();\r
1344 jPanelModuleSaOpts.setLayout(flowLayout4);\r
1345 jPanelModuleSaOpts.add(jLabelFvBinding, null);\r
1346 jPanelModuleSaOpts.add(getJTextFieldFvBinding(), null);\r
1347 jPanelModuleSaOpts.add(jLabelFfsFileGuid, null);\r
1348 jPanelModuleSaOpts.add(getJTextFieldFileGuid(), null);\r
1349 jPanelModuleSaOpts.add(jLabelFfsFormatKey, null);\r
1350 jPanelModuleSaOpts.add(getJTextFieldFfsKey(), null);\r
57d0e52a 1351 jPanelModuleSaOpts.addComponentListener(new java.awt.event.ComponentAdapter() {\r
71baa24b 1352 public void componentShown(java.awt.event.ComponentEvent e) {\r
c1dbe93d 1353 initFvInfo(moduleKey);\r
71baa24b 1354 }\r
1355 });\r
6a09eb19 1356 }\r
57d0e52a 1357 return jPanelModuleSaOpts;\r
6a09eb19 1358 }\r
91621725 1359 \r
1360 private Vector<String> getVectorFromString (String s) {\r
1361 if (s == null || s.equals("null")) {\r
1362 s = "";\r
1363 }\r
1364 String[] sa1 = s.split(" ");\r
1365 Vector<String> v = new Vector<String>();\r
1366 for (int i = 0; i < sa1.length; ++i) {\r
1367 v.add(sa1[i]);\r
1368 }\r
1369 return v;\r
1370 }\r
1371 \r
6a09eb19 1372 /**\r
1373 * This method initializes jTextField \r
1374 * \r
1375 * @return javax.swing.JTextField \r
1376 */\r
8f55ea73 1377 private JTextField getJTextFieldFvBinding() {\r
1378 if (jTextFieldFvBinding == null) {\r
1379 jTextFieldFvBinding = new JTextField();\r
a0783edc 1380 jTextFieldFvBinding.setPreferredSize(new java.awt.Dimension(400,20));\r
9babb67e 1381 jTextFieldFvBinding.setEditable(true);\r
8f55ea73 1382 jTextFieldFvBinding.addFocusListener(new java.awt.event.FocusAdapter() {\r
1383 public void focusLost(java.awt.event.FocusEvent e) {\r
1384 String originalFvBinding = ffc.getFvBinding(moduleKey);\r
1385 String newFvBinding = jTextFieldFvBinding.getText();\r
1386 if (newFvBinding.equals(originalFvBinding)) {\r
1387 return;\r
1388 }\r
1389 if (newFvBinding.length() == 0 && originalFvBinding == null) {\r
1390 return;\r
1391 }\r
9d6f6d70 1392 \r
91621725 1393 Vector<String> oldFvList = getVectorFromString (originalFvBinding);\r
1394 Vector<String> newFvList = getVectorFromString (newFvBinding);\r
9d6f6d70 1395 String moduleInfo[] = moduleKey.split(" ");\r
91621725 1396 ffc.setFvBinding(moduleKey, newFvBinding);\r
1397 //\r
1398 // remove module from Fvs that not in newFvList now.\r
1399 //\r
1400 oldFvList.removeAll(newFvList);\r
1401 for (int j = 0; j < oldFvList.size(); ++j) {\r
99125b46 1402 ffc.removeModuleInBuildOptionsUserExtensions(oldFvList.get(j), "IMAGES", 1, moduleInfo[0], moduleInfo[1], moduleInfo[2], moduleInfo[3], moduleInfo[4]); \r
91621725 1403 }\r
1404 //\r
1405 // add module to Fvs that were not in oldFvList.\r
1406 //\r
1407 oldFvList = getVectorFromString (originalFvBinding);\r
1408 newFvList.removeAll(oldFvList);\r
1409 for (int i = 0; i < newFvList.size(); ++i) {\r
99125b46 1410 ffc.addModuleIntoBuildOptionsUserExtensions(newFvList.get(i), "IMAGES", 1, moduleInfo[0], moduleInfo[1], moduleInfo[2], moduleInfo[3], moduleInfo[4]);\r
9d6f6d70 1411 }\r
1412 docConsole.setSaved(false);\r
8f55ea73 1413 }\r
1414 });\r
bf5abaff 1415 \r
6a09eb19 1416 }\r
8f55ea73 1417 return jTextFieldFvBinding;\r
6a09eb19 1418 }\r
1419 /**\r
1420 * This method initializes jTextField1 \r
1421 * \r
1422 * @return javax.swing.JTextField \r
1423 */\r
8f55ea73 1424 private JTextField getJTextFieldFileGuid() {\r
1425 if (jTextFieldFileGuid == null) {\r
1426 jTextFieldFileGuid = new JTextField();\r
1427 jTextFieldFileGuid.setPreferredSize(new java.awt.Dimension(300,20));\r
d96d701f 1428 jTextFieldFileGuid.setVisible(false);\r
8f55ea73 1429 jTextFieldFileGuid.addFocusListener(new java.awt.event.FocusAdapter() {\r
1430 public void focusLost(java.awt.event.FocusEvent e) {\r
1431 String originalFileGuid = ffc.getFfsFileNameGuid(moduleKey);\r
1432 String newFileGuid = jTextFieldFileGuid.getText();\r
1433 if (newFileGuid.equals(originalFileGuid)) {\r
1434 return;\r
1435 }\r
1436 if (newFileGuid.length() == 0 && originalFileGuid == null) {\r
1437 return;\r
1438 }\r
1439 if (newFileGuid.length() > 0) {\r
1440 if (!DataValidation.isGuid(newFileGuid)) {\r
82484861 1441 JOptionPane.showMessageDialog(FpdModuleSA.this, "FFS File Guid is NOT GUID Type.");\r
8f55ea73 1442 return;\r
1443 }\r
1444 }\r
1445 \r
1446 docConsole.setSaved(false);\r
1447 if (newFileGuid.length() == 0) {\r
1448 newFileGuid = null;\r
1449 }\r
1450 ffc.setFfsFileNameGuid(moduleKey, newFileGuid);\r
1451 }\r
1452 });\r
bf5abaff 1453 \r
6a09eb19 1454 }\r
8f55ea73 1455 return jTextFieldFileGuid;\r
6a09eb19 1456 }\r
1457 /**\r
8f55ea73 1458 * This method initializes jTextFieldFfsKey \r
6a09eb19 1459 * \r
1460 * @return javax.swing.JTextField \r
1461 */\r
8f55ea73 1462 private JTextField getJTextFieldFfsKey() {\r
1463 if (jTextFieldFfsKey == null) {\r
1464 jTextFieldFfsKey = new JTextField();\r
802e0055 1465 jTextFieldFfsKey.setPreferredSize(new java.awt.Dimension(250,20));\r
8f55ea73 1466 jTextFieldFfsKey.addFocusListener(new java.awt.event.FocusAdapter() {\r
1467 public void focusLost(java.awt.event.FocusEvent e) {\r
1468 String originalFfsKey = ffc.getFfsFormatKey(moduleKey);\r
1469 String newFfsKey = jTextFieldFfsKey.getText();\r
1470 if (newFfsKey.equals(originalFfsKey)) {\r
1471 return;\r
1472 }\r
1473 if (newFfsKey.length() == 0 && originalFfsKey == null) {\r
1474 return;\r
1475 }\r
1476 docConsole.setSaved(false);\r
1477 ffc.setFfsFormatKey(moduleKey, newFfsKey);\r
1478 }\r
1479 });\r
bf5abaff 1480 \r
6a09eb19 1481 }\r
8f55ea73 1482 return jTextFieldFfsKey;\r
6a09eb19 1483 }\r
1484 /**\r
57d0e52a 1485 * This method initializes jScrollPaneModuleSaOptions\r
6a09eb19 1486 * \r
1487 * @return javax.swing.JScrollPane \r
1488 */\r
57d0e52a 1489 private JScrollPane getJScrollPaneModuleSaOptions() {\r
1490 if (jScrollPaneModuleSaOptions == null) {\r
1491 jScrollPaneModuleSaOptions = new JScrollPane();\r
c1dbe93d 1492 jScrollPaneModuleSaOptions.setPreferredSize(new java.awt.Dimension(600,350));\r
57d0e52a 1493 jScrollPaneModuleSaOptions.setViewportView(getJTableModuleSaOptions());\r
6a09eb19 1494 }\r
57d0e52a 1495 return jScrollPaneModuleSaOptions;\r
6a09eb19 1496 }\r
1497 /**\r
57d0e52a 1498 * This method initializes jTableModuleSaOptions\r
6a09eb19 1499 * \r
1500 * @return javax.swing.JTable \r
1501 */\r
57d0e52a 1502 private JTable getJTableModuleSaOptions() {\r
1503 if (jTableModuleSaOptions == null) {\r
1800d80f 1504 optionsTableModel = new DefaultTableModel();\r
1505 optionsTableModel.addColumn("BuildTargets");\r
1506 optionsTableModel.addColumn("ToolChainFamily");\r
1507 optionsTableModel.addColumn("TagName");\r
1508 optionsTableModel.addColumn("ToolCode");\r
1509 optionsTableModel.addColumn("SupportedArchs");\r
1510 optionsTableModel.addColumn("Contents");\r
57d0e52a 1511 jTableModuleSaOptions = new JTable(optionsTableModel);\r
1512 jTableModuleSaOptions.setRowHeight(20);\r
98c20797 1513 \r
9d6f6d70 1514 jTableModuleSaOptions.getColumnModel().getColumn(0).setMinWidth(buildTargetWidth);\r
1515 jTableModuleSaOptions.getColumnModel().getColumn(1).setMinWidth(toolChainFamilyWidth);\r
1516 jTableModuleSaOptions.getColumnModel().getColumn(2).setMinWidth(tagNameWidth);\r
1517 jTableModuleSaOptions.getColumnModel().getColumn(3).setMinWidth(toolCmdCodeWidth);\r
1518 jTableModuleSaOptions.getColumnModel().getColumn(4).setMinWidth(supportArchWidth);\r
1519 jTableModuleSaOptions.getColumnModel().getColumn(5).setMinWidth(argWidth);\r
5d7a9b83 1520// javax.swing.table.TableColumn toolFamilyCol = jTableModuleSaOptions.getColumnModel().getColumn(1);\r
1521// JComboBox cb = new JComboBox();\r
1522// cb.addItem("MSFT");\r
1523// cb.addItem("GCC");\r
1524// cb.addItem("CYGWIN");\r
1525// cb.addItem("INTEL");\r
1526// cb.addItem("USER_DEFINED");\r
1527// toolFamilyCol.setCellEditor(new DefaultCellEditor(cb));\r
98c20797 1528 \r
f3b0ed9a 1529 Vector<String> vArch = new Vector<String>();\r
1530 vArch.add("IA32");\r
1531 vArch.add("X64");\r
1532 vArch.add("IPF");\r
1533 vArch.add("EBC");\r
1534 vArch.add("ARM");\r
1535 vArch.add("PPC");\r
82484861 1536 jTableModuleSaOptions.getColumnModel().getColumn(4).setCellEditor(new ListEditor(vArch, FrameworkWizardUI.getInstance()));\r
98c20797 1537 \r
82484861 1538 jTableModuleSaOptions.getColumnModel().getColumn(5).setCellEditor(new LongTextEditor(FrameworkWizardUI.getInstance()));\r
98c20797 1539 \r
57d0e52a 1540 jTableModuleSaOptions.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
1541 jTableModuleSaOptions.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
1542 jTableModuleSaOptions.getModel().addTableModelListener(new TableModelListener() {\r
1800d80f 1543 public void tableChanged(TableModelEvent arg0) {\r
1544 // TODO Auto-generated method stub\r
1545 int row = arg0.getFirstRow();\r
1546 TableModel m = (TableModel)arg0.getSource();\r
1547 \r
1548 if (arg0.getType() == TableModelEvent.UPDATE){\r
1549 //ToDo Data Validition check.\r
1550 String targets = m.getValueAt(row, 0) + "";\r
f3b0ed9a 1551 Vector<Object> targetName = null;\r
1552 if (targets.length() > 0) {\r
1553 targetName = new Vector<Object>();\r
1554 String[] sArray = targets.split(" ");\r
1555 for (int i = 0; i < sArray.length; ++i) {\r
1556 targetName.add(sArray[i]);\r
1557 }\r
1800d80f 1558 }\r
f3b0ed9a 1559 \r
1800d80f 1560 String toolChain = m.getValueAt(row, 1) + "";\r
1561 String tagName = m.getValueAt(row, 2) + "";\r
1562 String toolCode = m.getValueAt(row, 3) + "";\r
1563 String archs = m.getValueAt(row, 4) + "";\r
f3b0ed9a 1564 Vector<Object> supArch = null;\r
1565 if (archs.length() > 0) {\r
1566 supArch = new Vector<Object>();\r
1567 String[] sArray1 = archs.split(" ");\r
1568 for (int i = 0; i < sArray1.length; ++i) {\r
1569 supArch.add(sArray1[i]);\r
1570 }\r
1800d80f 1571 }\r
f3b0ed9a 1572 \r
1800d80f 1573 String contents = m.getValueAt(row, 5) + "";\r
8f55ea73 1574 docConsole.setSaved(false);\r
1800d80f 1575 ffc.updateModuleSAOptionsOpt(moduleKey, row, targetName, toolChain, tagName, toolCode, supArch, contents);\r
1576 }\r
1577 }\r
1578 });\r
6a09eb19 1579 }\r
57d0e52a 1580 return jTableModuleSaOptions;\r
6a09eb19 1581 }\r
1800d80f 1582 /**\r
57d0e52a 1583 * This method initializes jButtonNew\r
1800d80f 1584 * \r
1585 * @return javax.swing.JButton \r
1586 */\r
57d0e52a 1587 private JButton getJButtonNew() {\r
1588 if (jButtonNew == null) {\r
1589 jButtonNew = new JButton();\r
1590 jButtonNew.setPreferredSize(new java.awt.Dimension(80,20));\r
1591 jButtonNew.setText("New");\r
1592 jButtonNew.addActionListener(new java.awt.event.ActionListener() {\r
1800d80f 1593 public void actionPerformed(java.awt.event.ActionEvent e) {\r
bf5abaff 1594 String[] row = {"", "", "", "", "", ""};\r
1800d80f 1595 optionsTableModel.addRow(row);\r
50d4c727 1596 Vector<Object> v = null;\r
bf5abaff 1597 Vector<Object> v1 = null;\r
8f55ea73 1598 docConsole.setSaved(false);\r
1800d80f 1599 ffc.genModuleSAOptionsOpt(moduleKey, v, "", "", "", v1, "");\r
1600 }\r
1601 });\r
1602 }\r
57d0e52a 1603 return jButtonNew;\r
1800d80f 1604 }\r
1605 /**\r
57d0e52a 1606 * This method initializes jButtonDelete\r
1800d80f 1607 * \r
1608 * @return javax.swing.JButton \r
1609 */\r
57d0e52a 1610 private JButton getJButtonDeleteOption() {\r
1611 if (jButtonDeleteOption == null) {\r
1612 jButtonDeleteOption = new JButton();\r
1613 jButtonDeleteOption.setPreferredSize(new java.awt.Dimension(80,20));\r
1614 jButtonDeleteOption.setText("Delete");\r
1615 jButtonDeleteOption.addActionListener(new java.awt.event.ActionListener() {\r
1800d80f 1616 public void actionPerformed(java.awt.event.ActionEvent e) {\r
57d0e52a 1617 if (jTableModuleSaOptions.getSelectedRow() < 0) {\r
1800d80f 1618 return;\r
1619 }\r
8f55ea73 1620 docConsole.setSaved(false);\r
57d0e52a 1621 ffc.removeModuleSAOptionsOpt(moduleKey, jTableModuleSaOptions.getSelectedRow());\r
1622 optionsTableModel.removeRow(jTableModuleSaOptions.getSelectedRow());\r
1800d80f 1623 }\r
1624 });\r
1625 }\r
57d0e52a 1626 return jButtonDeleteOption;\r
1800d80f 1627 }\r
f3b0ed9a 1628 \r
1629 /**\r
1630 Start the window at the center of screen\r
1631 \r
1632 **/\r
1633 protected void centerWindow(int intWidth, int intHeight) {\r
1634 Dimension d = Toolkit.getDefaultToolkit().getScreenSize();\r
1635 this.setLocation((d.width - intWidth) / 2, (d.height - intHeight) / 2);\r
1636 }\r
1637\r
1638 /**\r
1639 Start the window at the center of screen\r
1640 \r
1641 **/\r
1642 protected void centerWindow() {\r
1643 centerWindow(this.getSize().width, this.getSize().height);\r
1644 }\r
908b1c05 1645/**\r
57d0e52a 1646 * This method initializes jPanelPcdFields\r
908b1c05 1647 * \r
1648 * @return javax.swing.JPanel \r
1649 */\r
57d0e52a 1650private JPanel getJPanelPcdFields() {\r
1651 if (jPanelPcdFields == null) {\r
908b1c05 1652 GridLayout gridLayout = new GridLayout();\r
1653 gridLayout.setRows(3);\r
1654 gridLayout.setColumns(2);\r
57d0e52a 1655 jPanelPcdFields = new JPanel();\r
1656 jPanelPcdFields.setLayout(gridLayout);\r
1657 jPanelPcdFields.setPreferredSize(new java.awt.Dimension(600,90));\r
1658 jPanelPcdFields.add(getJPanelPcdFieldsFirstRow(), null);\r
1659 jPanelPcdFields.add(getJPanelPcdFieldsSecondRow(), null);\r
1660 jPanelPcdFields.add(getJPanelPcdFieldsThirdRow(), null);\r
1661 }\r
1662 return jPanelPcdFields;\r
908b1c05 1663}\r
1664/**\r
57d0e52a 1665 * This method initializes jPanelPcdFieldsSecondRow\r
908b1c05 1666 * \r
1667 * @return javax.swing.JPanel \r
1668 */\r
57d0e52a 1669private JPanel getJPanelPcdFieldsSecondRow() {\r
1670 if (jPanelPcdFieldsSecondRow == null) {\r
908b1c05 1671 FlowLayout flowLayout2 = new FlowLayout();\r
1672 flowLayout2.setAlignment(java.awt.FlowLayout.LEFT);\r
57d0e52a 1673 jLabelMaxDatumSize = new JLabel();\r
1674 jLabelMaxDatumSize.setText("Max Datum Size");\r
1675 jPanelPcdFieldsSecondRow = new JPanel();\r
1676 jPanelPcdFieldsSecondRow.setLayout(flowLayout2);\r
1677 jPanelPcdFieldsSecondRow.add(jLabelMaxDatumSize, null);\r
1678 jPanelPcdFieldsSecondRow.add(getJTextFieldMaxDatumSize(), null);\r
1679 }\r
1680 return jPanelPcdFieldsSecondRow;\r
908b1c05 1681}\r
1682/**\r
57d0e52a 1683 * This method initializes jPanelPcdFieldsThirdRow\r
908b1c05 1684 * \r
1685 * @return javax.swing.JPanel \r
1686 */\r
57d0e52a 1687private JPanel getJPanelPcdFieldsThirdRow() {\r
1688 if (jPanelPcdFieldsThirdRow == null) {\r
908b1c05 1689 FlowLayout flowLayout3 = new FlowLayout();\r
1690 flowLayout3.setAlignment(java.awt.FlowLayout.LEFT);\r
57d0e52a 1691 jLabelPcdDefaultValue = new JLabel();\r
1692 jLabelPcdDefaultValue.setText("Default Value");\r
1693 jLabelPcdDefaultValue.setPreferredSize(new java.awt.Dimension(91,16));\r
1694 jPanelPcdFieldsThirdRow = new JPanel();\r
1695 jPanelPcdFieldsThirdRow.setLayout(flowLayout3);\r
1696 jPanelPcdFieldsThirdRow.add(jLabelPcdDefaultValue, null);\r
1697 jPanelPcdFieldsThirdRow.add(getJTextFieldPcdDefault(), null);\r
1698 jPanelPcdFieldsThirdRow.add(getJComboBoxFeatureFlagValue(), null);\r
73d9b1c4 1699 jPanelPcdFieldsThirdRow.add(getJButtonUpdatePcd(), null);\r
57d0e52a 1700 }\r
1701 return jPanelPcdFieldsThirdRow;\r
908b1c05 1702}\r
1703/**\r
57d0e52a 1704 * This method initializes jPanelPcdFieldsFirstRow\r
908b1c05 1705 * \r
1706 * @return javax.swing.JPanel \r
1707 */\r
57d0e52a 1708private JPanel getJPanelPcdFieldsFirstRow() {\r
1709 if (jPanelPcdFieldsFirstRow == null) {\r
908b1c05 1710 FlowLayout flowLayout1 = new FlowLayout();\r
1711 flowLayout1.setAlignment(java.awt.FlowLayout.LEFT);\r
57d0e52a 1712 jLabelItemType = new JLabel();\r
1713 jLabelItemType.setText("Item Type");\r
1714 jLabelItemType.setPreferredSize(new java.awt.Dimension(91,16));\r
1715 jPanelPcdFieldsFirstRow = new JPanel();\r
1716 jPanelPcdFieldsFirstRow.setLayout(flowLayout1);\r
1717 jPanelPcdFieldsFirstRow.add(jLabelItemType, null);\r
1718 jPanelPcdFieldsFirstRow.add(getJComboBoxItemType(), null);\r
57d0e52a 1719 }\r
1720 return jPanelPcdFieldsFirstRow;\r
908b1c05 1721}\r
1722/**\r
57d0e52a 1723 * This method initializes jComboBoxItemType\r
908b1c05 1724 * \r
1725 * @return javax.swing.JComboBox \r
1726 */\r
57d0e52a 1727private JComboBox getJComboBoxItemType() {\r
1728 if (jComboBoxItemType == null) {\r
1729 jComboBoxItemType = new JComboBox();\r
1730 jComboBoxItemType.setPreferredSize(new java.awt.Dimension(200,20));\r
85d9e5b1 1731 jComboBoxItemType.addItemListener(new java.awt.event.ItemListener() {\r
1732 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
1733 \r
1734 int row = jTablePcd.getSelectedRow();\r
5d074084 1735 if (row < 0) {\r
85d9e5b1 1736 return;\r
1737 }\r
1738 \r
9ccee2a0 1739 if (jComboBoxItemType.getSelectedItem() != null && jComboBoxItemType.getSelectedItem().equals("FIXED_AT_BUILD")) {\r
85d9e5b1 1740 jTextFieldPcdDefault.setEnabled(true);\r
1741 }\r
1742 else {\r
1743 jTextFieldPcdDefault.setEnabled(false);\r
1744 }\r
1745 } \r
1746 });\r
908b1c05 1747 }\r
57d0e52a 1748 return jComboBoxItemType;\r
908b1c05 1749}\r
1750\r
1751private void pcdDynamicToNonDynamic(String cName, String tsGuid) {\r
1752 String[][] saa = new String[ffc.getDynamicPcdBuildDataCount()][5];\r
1753 ffc.getDynamicPcdBuildData(saa);\r
1754 String maxSize = "";\r
1755 String value = "";\r
1756 for (int i = 0; i < saa.length; ++i) {\r
1757 if (saa[i][0].equals(cName) && saa[i][2].equals(tsGuid)) {\r
1758 maxSize = saa[i][3];\r
1759 value = ffc.getDynamicPcdBuildDataValue(i);\r
1760 break;\r
1761 }\r
1762 }\r
1763 \r
1764 ArrayList<String> al = ffc.getDynPcdMapValue(cName + " " + tsGuid);\r
1765 for (int i = 0; i < al.size(); ++i) {\r
73d9b1c4 1766 String mKey = moduleInfo (al.get(i));\r
50d4c727 1767 value = null;\r
73d9b1c4 1768 String itemType = jComboBoxItemType.getSelectedItem()+"";\r
e4f1ff6c 1769 ffc.updatePcdData(mKey, cName, tsGuid, itemType, maxSize, value);\r
73d9b1c4 1770 al.set(i, mKey + " " + itemType);\r
908b1c05 1771 }\r
1772 \r
1773 ffc.removeDynamicPcdBuildData(cName, tsGuid);\r
1774}\r
1775\r
1776private void pcdNonDynamicToDynamic(String cName, String tsGuid) {\r
1777 ArrayList<String> al = ffc.getDynPcdMapValue(cName + " " + tsGuid);\r
1778 for (int i = 0; i < al.size(); ++i) {\r
73d9b1c4 1779 String mKey = moduleInfo (al.get(i));\r
73d9b1c4 1780 String itemType = jComboBoxItemType.getSelectedItem()+"";\r
e4f1ff6c 1781 ffc.updatePcdData(mKey, cName, tsGuid, itemType, jTextFieldMaxDatumSize.getText(), jTextFieldPcdDefault.isVisible() ? jTextFieldPcdDefault.getText() : jComboBoxFeatureFlagValue.getSelectedItem()+"");\r
73d9b1c4 1782 al.set(i, mKey + " " + itemType);\r
908b1c05 1783 }\r
1784 try{\r
85d9e5b1 1785 ffc.addDynamicPcdBuildData(cName, model.getValueAt(jTablePcd.getSelectedRow(), 3), tsGuid, "DYNAMIC", model.getValueAt(jTablePcd.getSelectedRow(), 5)+"", jTextFieldPcdDefault.isVisible() ? jTextFieldPcdDefault.getText() : jComboBoxFeatureFlagValue.getSelectedItem()+"");\r
908b1c05 1786 }\r
1787 catch(Exception e){\r
82484861 1788 JOptionPane.showMessageDialog(FpdModuleSA.this, "PCD value format: " + e.getMessage());\r
908b1c05 1789 }\r
1790}\r
73d9b1c4 1791\r
e4f1ff6c 1792private void changePcdTypeWithinSameCategory (String cName, String tsGuid) {\r
1793 ArrayList<String> al = ffc.getDynPcdMapValue(cName + " " + tsGuid);\r
1794 for (int i = 0; i < al.size(); ++i) {\r
1795 String mKey = moduleInfo (al.get(i));\r
1796 String itemType = jComboBoxItemType.getSelectedItem()+"";\r
1797 ffc.updatePcdData(mKey, cName, tsGuid, itemType, null, null);\r
1798 al.set(i, mKey + " " + itemType);\r
1799 }\r
1800}\r
1801\r
73d9b1c4 1802private String moduleInfo (String pcdInfo) {\r
1803 \r
1804 return pcdInfo.substring(0, pcdInfo.lastIndexOf(" "));\r
1805}\r
1806\r
908b1c05 1807/**\r
57d0e52a 1808 * This method initializes jTextFieldMaxDatumSize\r
908b1c05 1809 * \r
1810 * @return javax.swing.JTextField \r
1811 */\r
57d0e52a 1812private JTextField getJTextFieldMaxDatumSize() {\r
1813 if (jTextFieldMaxDatumSize == null) {\r
1814 jTextFieldMaxDatumSize = new JTextField();\r
1815 jTextFieldMaxDatumSize.setPreferredSize(new java.awt.Dimension(200,20));\r
908b1c05 1816 }\r
57d0e52a 1817 return jTextFieldMaxDatumSize;\r
908b1c05 1818}\r
1819/**\r
1820 * This method initializes jTextField4 \r
1821 * \r
1822 * @return javax.swing.JTextField \r
1823 */\r
57d0e52a 1824private JTextField getJTextFieldPcdDefault() {\r
1825 if (jTextFieldPcdDefault == null) {\r
1826 jTextFieldPcdDefault = new JTextField();\r
1827 jTextFieldPcdDefault.setPreferredSize(new java.awt.Dimension(200,20));\r
908b1c05 1828 }\r
57d0e52a 1829 return jTextFieldPcdDefault;\r
908b1c05 1830}\r
1831/**\r
1832 * This method initializes jButton6 \r
1833 * \r
1834 * @return javax.swing.JButton \r
1835 */\r
57d0e52a 1836private JButton getJButtonUpdatePcd() {\r
1837 if (jButtonUpdatePcd == null) {\r
1838 jButtonUpdatePcd = new JButton();\r
1839 jButtonUpdatePcd.setPreferredSize(new java.awt.Dimension(150,20));\r
1840 jButtonUpdatePcd.setText("Update PCD Data");\r
1841 jButtonUpdatePcd.addActionListener(new java.awt.event.ActionListener() {\r
908b1c05 1842 public void actionPerformed(java.awt.event.ActionEvent e) {\r
57d0e52a 1843 int row = jTablePcd.getSelectedRow();\r
908b1c05 1844 if (row < 0) {\r
1845 return;\r
1846 }\r
e4f1ff6c 1847 \r
1848 String cName = model.getValueAt(row, 0)+"";\r
1849 String tsGuid = model.getValueAt(row, 1)+"";\r
ce32083f 1850 String oldItemType = model.getValueAt(row, 2)+"";\r
adf6ff60 1851 String dataType = model.getValueAt(row, 5)+"";\r
ce32083f 1852 String newItemType = jComboBoxItemType.getSelectedItem()+"";\r
f893f756 1853 String newValue = jTextFieldPcdDefault.isVisible()? jTextFieldPcdDefault.getText():jComboBoxFeatureFlagValue.getSelectedItem()+""; \r
adf6ff60 1854 if (newValue.length() == 0){\r
1855 \r
1856 if (dataType.equals("UINT8") || dataType.equals("UINT16") || dataType.equals("UINT32") || dataType.equals("UINT64")) {\r
1857 newValue = "0";\r
1858 }\r
1859 if (dataType.equals("BOOLEAN")){\r
1860 newValue = "FALSE";\r
1861 }\r
1862 if (dataType.equals("VOID*")) {\r
1863 newValue = "L\"\"";\r
1864 }\r
1865 }\r
98aee6e9 1866 \r
1867 String[] pcdInfo = {"", "", ""};\r
e4f1ff6c 1868 Vector<String> validPcdTypes = new Vector<String>();\r
1869 getPcdInfo (moduleKey, cName, tsGuid, pcdInfo, validPcdTypes);\r
98aee6e9 1870 if (pcdInfo[1].equals("FIXED_AT_BUILD") && model.getValueAt(row, 5).equals("VOID*")) {\r
1871 try {\r
f893f756 1872 jTextFieldMaxDatumSize.setText(ffc.setMaxSizeForPointer(newValue)+"");\r
98aee6e9 1873 }\r
1874 catch (Exception exp) {\r
82484861 1875 JOptionPane.showMessageDialog(FpdModuleSA.this, "PCD Value MalFormed: " + exp.getMessage());\r
98aee6e9 1876 return;\r
1877 }\r
1878 }\r
f893f756 1879 String newMaxDatumSize = jTextFieldMaxDatumSize.getText();\r
98aee6e9 1880 \r
f893f756 1881 if (!newItemType.equals(oldItemType)) {\r
e4f1ff6c 1882 Vector<ModuleIdentification> moduleInfo = new Vector<ModuleIdentification>();\r
1883 try {\r
1884 boolean changable = itemTypeCouldBeChanged (cName, tsGuid, newItemType, moduleInfo);\r
1885 if (!changable) {\r
82484861 1886 JOptionPane.showMessageDialog(FpdModuleSA.this, "Can NOT Change Pcd Type in: " + moduleInfo.get(0).getName() + " contained in package " + moduleInfo.get(0).getPackageId().getName());\r
e4f1ff6c 1887 return;\r
1888 }\r
1889 }\r
1890 catch (Exception exp) {\r
82484861 1891 JOptionPane.showMessageDialog(FpdModuleSA.this, "Can NOT Change Pcd Type in: " + moduleInfo.get(0).getName() + " contained in package " + moduleInfo.get(0).getPackageId().getName() + " " + exp.getMessage());\r
e4f1ff6c 1892 return;\r
1893 }\r
1894 \r
1895 if ((oldItemType.equals("DYNAMIC") || oldItemType.equals("DYNAMIC_EX")) && !newItemType.equals("DYNAMIC") && !newItemType.equals("DYNAMIC_EX")) {\r
1896 pcdDynamicToNonDynamic(cName, tsGuid);\r
1897 }\r
1898 if (!oldItemType.equals("DYNAMIC") && !oldItemType.equals("DYNAMIC_EX") && (newItemType.equals("DYNAMIC") || newItemType.equals("DYNAMIC_EX"))) {\r
1899 pcdNonDynamicToDynamic(cName, tsGuid);\r
1900 }\r
1901 else {\r
1902 changePcdTypeWithinSameCategory (cName, tsGuid);\r
1903 }\r
1904 model.setValueAt(newItemType, row, 2);\r
ce32083f 1905 }\r
e4f1ff6c 1906 \r
f893f756 1907 ffc.updatePcdData(moduleKey, cName, tsGuid, model.getValueAt(row, 2)+"", newMaxDatumSize, newValue);\r
e4f1ff6c 1908 docConsole.setSaved(false);\r
f893f756 1909 model.setValueAt(newValue, row, 6);\r
1910 model.setValueAt(newMaxDatumSize, row, 4);\r
1911 \r
908b1c05 1912 }\r
1913 });\r
1914 }\r
57d0e52a 1915 return jButtonUpdatePcd;\r
908b1c05 1916}\r
e4f1ff6c 1917\r
1918private boolean itemTypeCouldBeChanged (String cName, String tsGuid, String newItemType, Vector<ModuleIdentification> mi) throws Exception{\r
1919 ArrayList<String> pcdConsumers = ffc.getDynPcdMapValue(cName + " " + tsGuid);\r
1920 for (int i = 0; i < pcdConsumers.size(); ++i) {\r
1921 String consumerInfo = moduleInfo (pcdConsumers.get(i));\r
1922 mi.removeAllElements();\r
1923 mi.add(WorkspaceProfile.getModuleId(consumerInfo));\r
1924 String[] sa = {"", "", ""};\r
1925 Vector<String> validPcdTypes = new Vector<String>();\r
1926 getPcdInfo (consumerInfo, cName, tsGuid, sa, validPcdTypes);\r
1927 if (validPcdTypes.size() == 0) {\r
1928 return false;\r
1929 }\r
1930 if (!sa[1].equals("DYNAMIC")) {\r
1931 return false;\r
1932 }\r
1933 if (!validPcdTypes.contains(newItemType)) {\r
1934 return false;\r
1935 }\r
1936 }\r
1937 return true;\r
1938}\r
1939\r
908b1c05 1940/**\r
57d0e52a 1941 * This method initializes jComboBoxFeatureFlagValue\r
908b1c05 1942 * \r
1943 * @return javax.swing.JComboBox \r
1944 */\r
57d0e52a 1945private JComboBox getJComboBoxFeatureFlagValue() {\r
1946 if (jComboBoxFeatureFlagValue == null) {\r
1947 jComboBoxFeatureFlagValue = new JComboBox();\r
1948 jComboBoxFeatureFlagValue.setPreferredSize(new java.awt.Dimension(100,20));\r
1949 jComboBoxFeatureFlagValue.setVisible(false);\r
b3151273 1950 jComboBoxFeatureFlagValue.addItem("TRUE");\r
1951 jComboBoxFeatureFlagValue.addItem("FALSE");\r
57d0e52a 1952 }\r
1953 return jComboBoxFeatureFlagValue;\r
908b1c05 1954}\r
c1dbe93d 1955/**\r
1956 * This method initializes jPanelCustomToolChain \r
1957 * \r
1958 * @return javax.swing.JPanel \r
1959 */\r
1960private JPanel getJPanelCustomToolChain() {\r
1961 if (jPanelCustomToolChain == null) {\r
1962 jPanelCustomToolChain = new JPanel();\r
1963 jPanelCustomToolChain.setLayout(new BorderLayout());\r
1964 jPanelCustomToolChain.add(getJPanelToolchainS(), java.awt.BorderLayout.SOUTH);\r
a0783edc 1965 jPanelCustomToolChain.add(getJScrollPaneModuleSaOptions(), java.awt.BorderLayout.CENTER);\r
c1dbe93d 1966 jPanelCustomToolChain.addComponentListener(new java.awt.event.ComponentAdapter() {\r
1967 public void componentShown(java.awt.event.ComponentEvent e) {\r
1968 initToolChainOptions(moduleKey);\r
1969 }\r
1970 });\r
1971 }\r
1972 return jPanelCustomToolChain;\r
1973}\r
1974/**\r
1975 * This method initializes jPanelToolchainS \r
1976 * \r
1977 * @return javax.swing.JPanel \r
1978 */\r
1979private JPanel getJPanelToolchainS() {\r
1980 if (jPanelToolchainS == null) {\r
1981 jPanelToolchainS = new JPanel();\r
1982 jPanelToolchainS.add(getJButtonNew(), null);\r
1983 jPanelToolchainS.add(getJButtonDeleteOption(), null);\r
1984 }\r
1985 return jPanelToolchainS;\r
1986}\r
a0783edc 1987\r
1b69863a 1988/**\r
1989 * This method initializes jPanelLibraryCenterN \r
1990 * \r
1991 * @return javax.swing.JPanel \r
1992 */\r
1993private JPanel getJPanelLibraryCenterN() {\r
1994 if (jPanelLibraryCenterN == null) {\r
1995 FlowLayout flowLayout5 = new FlowLayout();\r
1996 flowLayout5.setAlignment(java.awt.FlowLayout.CENTER);\r
1997 flowLayout5.setHgap(10);\r
1998 jPanelLibraryCenterN = new JPanel();\r
1999 jPanelLibraryCenterN.setLayout(flowLayout5);\r
2000 jPanelLibraryCenterN.add(jLabelInstanceHelp, null);\r
2001 jPanelLibraryCenterN.add(getJScrollPaneInstanceHelp(), null);\r
2002 jPanelLibraryCenterN.add(getJButtonAdd(), null);\r
2003 jPanelLibraryCenterN.add(getJButtonDeleteInstance(), null);\r
2004 }\r
2005 return jPanelLibraryCenterN;\r
2006}\r
2007/**\r
2008 * This method initializes jPanelLibraryCenterC \r
2009 * \r
2010 * @return javax.swing.JPanel \r
2011 */\r
2012private JPanel getJPanelLibraryCenterC() {\r
2013 if (jPanelLibraryCenterC == null) {\r
2014 jPanelLibraryCenterC = new JPanel();\r
2015 jPanelLibraryCenterC.add(jLabelSelectedInstances, null);\r
2016 jPanelLibraryCenterC.add(getJScrollPaneSelectedInstances(), null);\r
2017 }\r
2018 return jPanelLibraryCenterC;\r
2019}\r
f3b0ed9a 2020\r
a13899c5 2021\r
2022} // @jve:decl-index=0:visual-constraint="10,10"\r
50d4c727 2023\r
2024class MultipleInstanceException extends Exception {\r
2025\r
2026 /**\r
2027 * \r
2028 */\r
2029 private static final long serialVersionUID = -9148463005930920297L;\r
2030 private String className = null;\r
2031 private String libInstance1 = null;\r
2032 private String libInstance2 = null;\r
2033 \r
2034 MultipleInstanceException (String libClass, String instance1, String instance2) {\r
2035 super();\r
2036 className = libClass;\r
2037 libInstance1 = instance1;\r
2038 libInstance2 = instance2;\r
2039 }\r
2040\r
2041 /* (non-Javadoc)\r
2042 * @see java.lang.Throwable#getMessage()\r
2043 */\r
2044 @Override\r
2045 public String getMessage() {\r
2046 // TODO Auto-generated method stub\r
c777d1d4 2047 return " Library Class " + className + "is Produced by Two Instances: " \r
50d4c727 2048 + libInstance1 + " and " + libInstance2 + ". Platform Build will Fail.";\r
2049 }\r
2050 \r
2051}\r
2052\r
c0459227 2053class ImproperInstanceException extends Exception {\r
2054\r
2055 /**\r
2056 * \r
2057 */\r
2058 private static final long serialVersionUID = -5279700566993277033L;\r
2059 private String className = null;\r
2060 private String libInstance = null;\r
2061 private String instanceSupArch = null;\r
2062 private String instanceSupModType = null;\r
2063 \r
2064 ImproperInstanceException (String libClass, String instance1, String arch, String type) {\r
2065 super();\r
2066 className = libClass;\r
2067 libInstance = instance1;\r
2068 instanceSupArch = arch;\r
2069 instanceSupModType = type;\r
2070 }\r
2071\r
2072 /* (non-Javadoc)\r
2073 * @see java.lang.Throwable#getMessage()\r
2074 */\r
2075 @Override\r
2076 public String getMessage() {\r
2077 // TODO Auto-generated method stub\r
2078 return " Library Class " + className + " Produced by Library Instance: " \r
2079 + libInstance + "\nOnly Supports " + instanceSupArch + " and Module Type " + instanceSupModType + ".\n This instance should be removed.\n";\r
2080 }\r
2081 \r
2082}\r
2083\r
50d4c727 2084class NoInstanceException extends Exception {\r
2085\r
2086 /**\r
2087 * \r
2088 */\r
2089 private static final long serialVersionUID = 1987122786598970598L;\r
2090 \r
2091 private String className = null;\r
2092 \r
2093 NoInstanceException (String libClass) {\r
2094 className = libClass;\r
2095 }\r
2096 \r
2097 public String getMessage() {\r
2098 return "No Applicable Instance for Library Class " + className\r
2099 + ", Platform Build will Fail.";\r
2100 }\r
2101}\r