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