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