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