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