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