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