]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdModuleSA.java
Should not checking exist fd file, otherwise new fd file can not override old fd...
[mirror_edk2.git] / Tools / 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
4\r
a13899c5 5import javax.swing.JFrame;\r
6import javax.swing.JOptionPane;\r
7import javax.swing.JPanel;\r
8import javax.swing.JDialog;\r
9import javax.swing.JTabbedPane;\r
10import javax.swing.JLabel;\r
11import javax.swing.JScrollPane;\r
12import javax.swing.JTable;\r
a13899c5 13import javax.swing.JTextArea;\r
14import javax.swing.JSplitPane;\r
15import javax.swing.JButton;\r
16import javax.swing.ListSelectionModel;\r
17import javax.swing.event.ListSelectionEvent;\r
18import javax.swing.event.ListSelectionListener;\r
19import javax.swing.event.TableModelEvent;\r
20import javax.swing.event.TableModelListener;\r
21import javax.swing.table.DefaultTableModel;\r
a13899c5 22import javax.swing.table.TableModel;\r
23\r
24import org.apache.xmlbeans.XmlObject;\r
25import org.tianocore.frameworkwizard.platform.ui.global.GlobalData;\r
26import org.tianocore.frameworkwizard.platform.ui.global.SurfaceAreaQuery;\r
27import org.tianocore.frameworkwizard.platform.ui.id.ModuleIdentification;\r
28import org.tianocore.frameworkwizard.platform.ui.id.PackageIdentification;\r
29\r
30import java.awt.FlowLayout;\r
31import java.awt.event.ActionEvent;\r
32import java.awt.event.ActionListener;\r
33import java.util.ArrayList;\r
34import java.util.HashMap;\r
35import java.util.Iterator;\r
36import java.util.ListIterator;\r
37import java.util.Map;\r
38import java.util.Set;\r
6a09eb19 39import javax.swing.JTextField;\r
a13899c5 40\r
41public class FpdModuleSA extends JDialog implements ActionListener {\r
42\r
44053733 43 /**\r
44 * \r
45 */\r
46 private static final long serialVersionUID = 1L;\r
a13899c5 47 static JFrame frame;\r
48 private JPanel jContentPane = null;\r
49 private JTabbedPane jTabbedPane = null;\r
50 private JPanel jPanel = null;\r
51 private JPanel jPanel1 = null;\r
52 private JLabel jLabel = null;\r
53 private JScrollPane jScrollPane = null;\r
54 private JTable jTable = null;\r
55 private JPanel jPanel2 = null;\r
56 private JScrollPane jScrollPane1 = null;\r
57 private JTextArea jTextArea = null;\r
58 private JPanel jPanel3 = null;\r
59 private JSplitPane jSplitPane = null;\r
60 private JPanel jPanel4 = null;\r
61 private JPanel jPanel5 = null;\r
62 private JLabel jLabel1 = null;\r
63 private JLabel jLabel2 = null;\r
64 private JScrollPane jScrollPane2 = null;\r
65 private JTable jTable1 = null;\r
66 private JScrollPane jScrollPane3 = null;\r
67 private JTable jTable2 = null;\r
68 private JScrollPane jScrollPane4 = null;\r
69 private JTable jTable3 = null;\r
70 private JPanel jPanel6 = null;\r
71 private JPanel jPanel7 = null;\r
72 private JScrollPane jScrollPane5 = null;\r
73 private JTextArea jTextArea1 = null;\r
74 private JLabel jLabel3 = null;\r
75 private JLabel jLabel4 = null;\r
76 private JButton jButton = null;\r
77 private JButton jButton1 = null;\r
78 private JLabel jLabel5 = null;\r
79 private JButton jButton2 = null;\r
80 private JButton jButton3 = null;\r
81 private PartialEditableTableModel model = null;\r
82 private LibraryTableModel model1 = null;\r
83 private LibraryTableModel model2 = null;\r
84 private LibraryTableModel model3 = null;\r
85 private FpdFileContents ffc = null;\r
86 private String moduleKey = null;\r
a13899c5 87 private HashMap<String, ArrayList<String>> classInstanceMap = null;\r
88 private ArrayList<String> classProduced = null;\r
a13899c5 89 private HashMap<String, ArrayList<String>> classConsumed = null;\r
6a09eb19 90 private JPanel jPanel8 = null;\r
91 private JLabel jLabel6 = null;\r
92 private JTextField jTextField = null;\r
93 private JLabel jLabel7 = null;\r
94 private JTextField jTextField1 = null;\r
95 private JLabel jLabel8 = null;\r
96 private JTextField jTextField2 = null;\r
97 private JScrollPane jScrollPane6 = null;\r
98 private JTable jTable4 = null;\r
a13899c5 99 /**\r
100 * This is the default constructor\r
101 */\r
102 public FpdModuleSA() {\r
103 super();\r
104 initialize();\r
105 }\r
106 public FpdModuleSA(FpdFileContents ffc) {\r
107 this();\r
108 this.ffc = ffc;\r
109 }\r
110 \r
111 public void setKey(String k){\r
112 this.moduleKey = k;\r
113 }\r
114\r
115 /**\r
116 init will be called each time FpdModuleSA object is to be shown.\r
117 @param key Module information.\r
118 **/\r
119 public void init(String key) {\r
120 //\r
121 // display pcd for key.\r
122 //\r
123 model.setRowCount(0);\r
124 int pcdCount = ffc.getPcdDataCount(key);\r
125 if (pcdCount != 0) {\r
126 String[][] saa = new String[pcdCount][6];\r
127 ffc.getPcdData(key, saa);\r
128 for (int i = 0; i < saa.length; ++i) {\r
129 model.addRow(saa[i]);\r
130 }\r
131 }\r
132 \r
133 //\r
134 // display lib instances already selected for key\r
135 //\r
136 model1.setRowCount(0);\r
137 int instanceCount = ffc.getLibraryInstancesCount(key);\r
138 if (instanceCount != 0) {\r
139 String[][] saa = new String[instanceCount][5];\r
140 ffc.getLibraryInstances(key, saa);\r
141 for (int i = 0; i < saa.length; ++i) {\r
142 if (getModuleId(saa[i][1] + " " + saa[i][2] + " " + saa[i][3] + " " + saa[i][4]) != null) {\r
143 saa[i][0] = getModuleId(saa[i][1] + " " + saa[i][2] + " " + saa[i][3] + " " + saa[i][4]).getName();\r
144 }\r
145 \r
146 model1.addRow(saa[i]);\r
147 }\r
148 }\r
149 //\r
150 // display library classes that need to be resolved. also potential instances for them.\r
151 //\r
152 resolveLibraryInstances(key);\r
153 }\r
154 \r
155 private void resolveLibraryInstances(String key) {\r
156 ModuleIdentification mi = getModuleId(key);\r
157 PackageIdentification[] depPkgList = null;\r
158 try{\r
159 Map<String, XmlObject> m = GlobalData.getNativeMsa(mi);\r
160 SurfaceAreaQuery.setDoc(m);\r
161 //\r
162 // Get dependency pkg list into which we will search lib instances.\r
163 //\r
164 depPkgList = SurfaceAreaQuery.getDependencePkg(null);\r
165 //\r
166 // Get the lib class consumed, produced by this module itself.\r
167 //\r
168 String[] classConsumed = SurfaceAreaQuery.getLibraryClasses("ALWAYS_CONSUMED");\r
169 \r
170 if (this.classConsumed == null) {\r
171 this.classConsumed = new HashMap<String, ArrayList<String>>();\r
172 }\r
173 \r
174 for(int i = 0; i < classConsumed.length; ++i){\r
175 ArrayList<String> consumedBy = this.classConsumed.get(classConsumed[i]);\r
176 if (consumedBy == null) {\r
177 consumedBy = new ArrayList<String>();\r
178 }\r
179 consumedBy.add(key);\r
180 this.classConsumed.put(classConsumed[i], consumedBy);\r
181 }\r
182 \r
183 String[] classProduced = SurfaceAreaQuery.getLibraryClasses("ALWAYS_PRODUCED");\r
184 if (this.classProduced == null) {\r
185 this.classProduced = new ArrayList<String>();\r
186 }\r
187 for(int i = 0; i < classProduced.length; ++i){\r
188 if (!this.classProduced.contains(classProduced[i])){\r
189 this.classProduced.add(classProduced[i]);\r
190 }\r
191 }\r
192 //\r
193 // Get classes unresolved\r
194 //\r
195// Iterator<String> lip = this.classProduced.listIterator();\r
196// while(lip.hasNext()){\r
197// String clsProduced = lip.next();\r
198// this.classConsumed.remove(clsProduced);\r
199//\r
200// }\r
201 //\r
202 // find potential instances in all dependency pkgs for classes still in classConsumed.\r
203 //\r
204 if (classInstanceMap == null){\r
205 classInstanceMap = new HashMap<String, ArrayList<String>>();\r
206 }\r
207 Iterator<String> lic = this.classConsumed.keySet().iterator();\r
208 while(lic.hasNext()){\r
209 String cls = lic.next();\r
210 if (this.classProduced.contains(cls) || classInstanceMap.containsKey(cls)) {\r
211 continue;\r
212 }\r
213 ArrayList<String> instances = getInstancesForClass(cls, depPkgList);\r
214 if (instances.size() == 0){\r
215 JOptionPane.showMessageDialog(frame, "No Applicable Instance for Library Class " + \r
216 cls + ", Platform Build will Fail.");\r
217 }\r
218 classInstanceMap.put(cls, instances);\r
219 \r
220 }\r
221 \r
222 showClassToResolved();\r
223 }\r
224 catch(Exception e) {\r
225 e.printStackTrace();\r
226 }\r
227 }\r
228 \r
229 private ArrayList<String> getInstancesForClass(String cls, PackageIdentification[] depPkgList) throws Exception{\r
230 ArrayList<String> al = new ArrayList<String>();\r
231 \r
232 for (int i = 0; i < depPkgList.length; ++i) {\r
233 Set<ModuleIdentification> smi = GlobalData.getModules(depPkgList[i]);\r
234 Iterator ismi = smi.iterator();\r
235 while(ismi.hasNext()) {\r
236 ModuleIdentification mi = (ModuleIdentification)ismi.next();\r
237 \r
238 String[] clsProduced = getClassProduced(mi);\r
239 \r
240 boolean isPotential = false;\r
241 for (int j = 0; j < clsProduced.length; ++j) {\r
242 if (clsProduced[j] == null) {\r
243 continue;\r
244 }\r
245 if (clsProduced[j].equals(cls)){\r
246 isPotential = true;\r
247 }\r
248 if (classProduced.contains(clsProduced[j])) {\r
249 isPotential = false;\r
250 break;\r
251 }\r
252 }\r
253 if (isPotential) {\r
254 al.add(mi.getGuid() + " " + mi.getVersion() + " " + \r
255 depPkgList[i].getGuid() + " " + depPkgList[i].getVersion());\r
256 }\r
257 }\r
258 }\r
259 \r
260 return al;\r
261 }\r
262 \r
263 private void removeInstance(String key) {\r
264 ModuleIdentification mi = getModuleId(key); \r
265 //\r
266 // remove pcd information of instance from current ModuleSA\r
267 //\r
268 ffc.removePcdDataFromLibraryInstance(moduleKey, key);\r
269 //\r
270 // remove class produced by this instance and add back these produced class to be bound.\r
271 //\r
272 String[] clsProduced = getClassProduced(mi);\r
273 for (int i = 0; i < clsProduced.length; ++i) {\r
274 \r
275 classProduced.remove(clsProduced[i]);\r
276 }\r
277 //\r
278 // remove class consumed by this instance. we do not need to bound it now.\r
279 //\r
280 String[] clsConsumed = getClassConsumed(mi);\r
281 for (int i = 0; i < clsConsumed.length; ++i) {\r
282 ArrayList<String> al = classConsumed.get(clsConsumed[i]);\r
283 \r
284 if (al == null ) {\r
285 classConsumed.remove(clsConsumed[i]);\r
286 continue;\r
287 }\r
288 al.remove(key);\r
289 if (al.size() == 0) {\r
290 classConsumed.remove(clsConsumed[i]);\r
291 }\r
292 \r
293 }\r
294\r
295 showClassToResolved();\r
296 \r
297 }\r
298 \r
299 private ModuleIdentification getModuleId(String key){\r
300 //\r
301 // Get ModuleGuid, ModuleVersion, PackageGuid, PackageVersion into string array.\r
302 //\r
303 String[] keyPart = key.split(" ");\r
304 Set<PackageIdentification> spi = GlobalData.getPackageList();\r
305 Iterator ispi = spi.iterator();\r
306 \r
307 while(ispi.hasNext()) {\r
308 PackageIdentification pi = (PackageIdentification)ispi.next();\r
309 if ( !pi.getGuid().equals(keyPart[2]) || !pi.getVersion().equals(keyPart[3])){\r
310 continue;\r
311 }\r
312 Set<ModuleIdentification> smi = GlobalData.getModules(pi);\r
313 Iterator ismi = smi.iterator();\r
314 while(ismi.hasNext()) {\r
315 ModuleIdentification mi = (ModuleIdentification)ismi.next();\r
316 if (mi.getGuid().equals(keyPart[0]) && mi.getVersion().equals(keyPart[1])){\r
317 return mi;\r
318 }\r
319 }\r
320 }\r
321 return null;\r
322 }\r
323 \r
324 private String[] getClassProduced(ModuleIdentification mi){\r
325 \r
326 try{\r
327 Map<String, XmlObject> m = GlobalData.getNativeMsa(mi);\r
328 SurfaceAreaQuery.setDoc(m);\r
329 String[] clsProduced = SurfaceAreaQuery.getLibraryClasses("ALWAYS_PRODUCED");\r
330 return clsProduced;\r
331 \r
332 }catch (Exception e) {\r
333 e.printStackTrace();\r
334 }\r
335 return new String[0];\r
336 \r
337 }\r
338 \r
339 private String[] getClassConsumed(ModuleIdentification mi){\r
340 \r
341 String[] clsConsumed = null;\r
342 try{\r
343 Map<String, XmlObject> m = GlobalData.getNativeMsa(mi);\r
344 SurfaceAreaQuery.setDoc(m);\r
345 clsConsumed = SurfaceAreaQuery.getLibraryClasses("ALWAYS_CONSUMED");\r
346 \r
347 }catch (Exception e) {\r
348 e.printStackTrace();\r
349 }\r
350 return clsConsumed;\r
351 }\r
352 \r
353 private void showClassToResolved(){\r
354 model2.setRowCount(0);\r
355 if (classConsumed.size() == 0) {\r
356 return;\r
357 }\r
358 Iterator<String> li = classConsumed.keySet().iterator();\r
359 while(li.hasNext()){\r
360 \r
361 String[] s = {li.next()};\r
362 if (classConsumed.get(s[0]) == null) {\r
363 continue;\r
364 }\r
365 if (classConsumed.get(s[0]).size() == 0) {\r
366 continue;\r
367 }\r
368 if (!classProduced.contains(s[0])){\r
369 model2.addRow(s);\r
370 }\r
371 }\r
372 model3.setRowCount(0);\r
373 }\r
374 /**\r
375 * This method initializes this\r
376 * \r
377 * @return void\r
378 */\r
379 private void initialize() {\r
380 this.setSize(664, 515);\r
381 this.setModal(true);\r
382 this.setTitle("Module Settings");\r
383 this.setContentPane(getJContentPane());\r
384 }\r
385\r
386 /**\r
387 * This method initializes jContentPane\r
388 * \r
389 * @return javax.swing.JPanel\r
390 */\r
391 private JPanel getJContentPane() {\r
392 if (jContentPane == null) {\r
393 jContentPane = new JPanel();\r
394 jContentPane.setLayout(new BorderLayout());\r
395 jContentPane.add(getJTabbedPane(), java.awt.BorderLayout.CENTER);\r
396 jContentPane.add(getJPanel3(), java.awt.BorderLayout.SOUTH);\r
397 }\r
398 return jContentPane;\r
399 }\r
400\r
401 /**\r
402 * This method initializes jTabbedPane \r
403 * \r
404 * @return javax.swing.JTabbedPane \r
405 */\r
406 private JTabbedPane getJTabbedPane() {\r
407 if (jTabbedPane == null) {\r
408 jTabbedPane = new JTabbedPane();\r
409 jTabbedPane.addTab("PCD Build Definition", null, getJPanel(), null);\r
6a09eb19 410 jTabbedPane.addTab("Module SA Options", null, getJPanel8(), null);\r
a13899c5 411 jTabbedPane.addTab("Libraries", null, getJPanel1(), null);\r
412 }\r
413 return jTabbedPane;\r
414 }\r
415\r
416 /**\r
417 * This method initializes jPanel \r
418 * \r
419 * @return javax.swing.JPanel \r
420 */\r
421 private JPanel getJPanel() {\r
422 if (jPanel == null) {\r
423 jLabel = new JLabel();\r
424 jLabel.setText("PcdData");\r
425 jPanel = new JPanel();\r
426 jPanel.setLayout(new BorderLayout());\r
427 jPanel.add(jLabel, java.awt.BorderLayout.NORTH);\r
428 jPanel.add(getJScrollPane(), java.awt.BorderLayout.CENTER);\r
429 jPanel.add(getJPanel2(), java.awt.BorderLayout.SOUTH);\r
430 jPanel.addComponentListener(new java.awt.event.ComponentAdapter() {\r
431 public void componentShown(java.awt.event.ComponentEvent e) {\r
432 init(moduleKey);\r
433 }\r
434 });\r
435 \r
436 }\r
437 return jPanel;\r
438 }\r
439\r
440 /**\r
441 * This method initializes jPanel1 \r
442 * \r
443 * @return javax.swing.JPanel \r
444 */\r
445 private JPanel getJPanel1() {\r
446 if (jPanel1 == null) {\r
447 jPanel1 = new JPanel();\r
448 jPanel1.setLayout(new BorderLayout());\r
449 jPanel1.add(getJSplitPane(), java.awt.BorderLayout.NORTH);\r
450 jPanel1.add(getJPanel6(), java.awt.BorderLayout.SOUTH);\r
451 jPanel1.add(getJPanel7(), java.awt.BorderLayout.CENTER);\r
452 jPanel1.addComponentListener(new java.awt.event.ComponentAdapter() {\r
453 public void componentShown(java.awt.event.ComponentEvent e) {\r
454 }\r
455 });\r
456 }\r
457 return jPanel1;\r
458 }\r
459\r
460 /**\r
461 * This method initializes jScrollPane \r
462 * \r
463 * @return javax.swing.JScrollPane \r
464 */\r
465 private JScrollPane getJScrollPane() {\r
466 if (jScrollPane == null) {\r
467 jScrollPane = new JScrollPane();\r
468 jScrollPane.setViewportView(getJTable());\r
469 }\r
470 return jScrollPane;\r
471 }\r
472\r
473 /**\r
474 * This method initializes jTable \r
475 * \r
476 * @return javax.swing.JTable \r
477 */\r
478 private JTable getJTable() {\r
479 if (jTable == null) {\r
480 model = new PartialEditableTableModel();\r
481 jTable = new JTable(model);\r
482 model.addColumn("CName");\r
483 model.addColumn("TokenSpaceGUID");\r
484 model.addColumn("ItemType");\r
485 model.addColumn("Token");\r
486 model.addColumn("DataType");\r
487 model.addColumn("DefaultValue");\r
488 \r
489 jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
490 jTable.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
491 public void valueChanged(ListSelectionEvent e) {\r
44053733 492 \r
a13899c5 493 if (e.getValueIsAdjusting()){\r
494 return;\r
495 }\r
496 ListSelectionModel lsm = (ListSelectionModel)e.getSource();\r
497 if (lsm.isSelectionEmpty()) {\r
498 return;\r
499 }\r
500 else{\r
44053733 501// int selectedRow = lsm.getMinSelectionIndex();\r
a13899c5 502 \r
503 \r
504 }\r
505 }\r
506 });\r
507 \r
508 jTable.getModel().addTableModelListener(new TableModelListener() {\r
509 public void tableChanged(TableModelEvent arg0) {\r
510 // TODO Auto-generated method stub\r
511 int row = arg0.getFirstRow();\r
512 TableModel m = (TableModel)arg0.getSource();\r
513 if (arg0.getType() == TableModelEvent.INSERT) {\r
514 //\r
515 // Set combo box values for item type according to pcd values added.\r
516 //\r
517 \r
518 }\r
519 if (arg0.getType() == TableModelEvent.UPDATE){\r
520 //ToDo Data Validition check.\r
521 \r
522 }\r
523 }\r
524 });\r
525 }\r
526 return jTable;\r
527 }\r
528\r
529 /**\r
530 * This method initializes jPanel2 \r
531 * \r
532 * @return javax.swing.JPanel \r
533 */\r
534 private JPanel getJPanel2() {\r
535 if (jPanel2 == null) {\r
536 jLabel5 = new JLabel();\r
537 jLabel5.setText("PCD Description");\r
538 jPanel2 = new JPanel();\r
539 jPanel2.add(jLabel5, null);\r
540 jPanel2.add(getJScrollPane1(), null);\r
541 }\r
542 return jPanel2;\r
543 }\r
544\r
545 /**\r
546 * This method initializes jScrollPane1 \r
547 * \r
548 * @return javax.swing.JScrollPane \r
549 */\r
550 private JScrollPane getJScrollPane1() {\r
551 if (jScrollPane1 == null) {\r
552 jScrollPane1 = new JScrollPane();\r
553 jScrollPane1.setPreferredSize(new java.awt.Dimension(500,100));\r
554 jScrollPane1.setViewportView(getJTextArea());\r
555 }\r
556 return jScrollPane1;\r
557 }\r
558\r
559 /**\r
560 * This method initializes jTextArea \r
561 * \r
562 * @return javax.swing.JTextArea \r
563 */\r
564 private JTextArea getJTextArea() {\r
565 if (jTextArea == null) {\r
566 jTextArea = new JTextArea();\r
567 jTextArea.setEditable(false);\r
568 }\r
569 return jTextArea;\r
570 }\r
571\r
572 /**\r
573 * This method initializes jPanel3 \r
574 * \r
575 * @return javax.swing.JPanel \r
576 */\r
577 private JPanel getJPanel3() {\r
578 if (jPanel3 == null) {\r
579 FlowLayout flowLayout = new FlowLayout();\r
580 flowLayout.setAlignment(java.awt.FlowLayout.RIGHT);\r
581 jPanel3 = new JPanel();\r
582 jPanel3.setLayout(flowLayout);\r
583 jPanel3.add(getJButton2(), null);\r
584 jPanel3.add(getJButton3(), null);\r
585 }\r
586 return jPanel3;\r
587 }\r
588\r
589 /**\r
590 * This method initializes jSplitPane \r
591 * \r
592 * @return javax.swing.JSplitPane \r
593 */\r
594 private JSplitPane getJSplitPane() {\r
595 if (jSplitPane == null) {\r
596 jSplitPane = new JSplitPane();\r
597 jSplitPane.setDividerLocation(200);\r
598 jSplitPane.setLeftComponent(getJPanel4());\r
599 jSplitPane.setRightComponent(getJPanel5());\r
600 jSplitPane.setPreferredSize(new java.awt.Dimension(202,200));\r
601 }\r
602 return jSplitPane;\r
603 }\r
604\r
605 /**\r
606 * This method initializes jPanel4 \r
607 * \r
608 * @return javax.swing.JPanel \r
609 */\r
610 private JPanel getJPanel4() {\r
611 if (jPanel4 == null) {\r
612 jLabel1 = new JLabel();\r
613 jLabel1.setText("Library Classes Consumed");\r
614 jPanel4 = new JPanel();\r
615 jPanel4.add(jLabel1, null);\r
616 jPanel4.add(getJScrollPane3(), null);\r
617 }\r
618 return jPanel4;\r
619 }\r
620\r
621 /**\r
622 * This method initializes jPanel5 \r
623 * \r
624 * @return javax.swing.JPanel \r
625 */\r
626 private JPanel getJPanel5() {\r
627 if (jPanel5 == null) {\r
628 jLabel2 = new JLabel();\r
629 jLabel2.setText("Instances Available");\r
630 jPanel5 = new JPanel();\r
631 jPanel5.add(jLabel2, null);\r
632 jPanel5.add(getJScrollPane4(), null);\r
633 }\r
634 return jPanel5;\r
635 }\r
636\r
637 /**\r
638 * This method initializes jScrollPane2 \r
639 * \r
640 * @return javax.swing.JScrollPane \r
641 */\r
642 private JScrollPane getJScrollPane2() {\r
643 if (jScrollPane2 == null) {\r
644 jScrollPane2 = new JScrollPane();\r
645 jScrollPane2.setPreferredSize(new java.awt.Dimension(453,150));\r
646 jScrollPane2.setViewportView(getJTable1());\r
647 }\r
648 return jScrollPane2;\r
649 }\r
650\r
651 /**\r
652 * This method initializes jTable1 \r
653 * \r
654 * @return javax.swing.JTable \r
655 */\r
656 private JTable getJTable1() {\r
657 if (jTable1 == null) {\r
658 model1 = new LibraryTableModel();\r
659 model1.addColumn("Name");\r
660 model1.addColumn("ModuleGUID");\r
661 model1.addColumn("ModuleVersion");\r
662 model1.addColumn("PackageGUID");\r
663 model1.addColumn("PackageVersion");\r
664 jTable1 = new JTable(model1);\r
665 \r
666 jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
667 jTable1.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
668 public void valueChanged(ListSelectionEvent e) {\r
669 int selectedRow1 = -1;\r
670 if (e.getValueIsAdjusting()){\r
671 return;\r
672 }\r
673 ListSelectionModel lsm = (ListSelectionModel)e.getSource();\r
674 if (lsm.isSelectionEmpty()) {\r
675 return;\r
676 }\r
677 else{\r
678 selectedRow1 = lsm.getMinSelectionIndex();\r
679 \r
680 \r
681 }\r
682 }\r
683 });\r
684 \r
685 \r
686 }\r
687 return jTable1;\r
688 }\r
689\r
690 /**\r
691 * This method initializes jScrollPane3 \r
692 * \r
693 * @return javax.swing.JScrollPane \r
694 */\r
695 private JScrollPane getJScrollPane3() {\r
696 if (jScrollPane3 == null) {\r
697 jScrollPane3 = new JScrollPane();\r
698 jScrollPane3.setPreferredSize(new java.awt.Dimension(200,170));\r
699 jScrollPane3.setViewportView(getJTable2());\r
700 }\r
701 return jScrollPane3;\r
702 }\r
703\r
704 /**\r
705 * This method initializes jTable2 \r
706 * \r
707 * @return javax.swing.JTable \r
708 */\r
709 private JTable getJTable2() {\r
710 if (jTable2 == null) {\r
711 model2 = new LibraryTableModel();\r
712 model2.addColumn("LibraryClass");\r
713 jTable2 = new JTable(model2);\r
714 \r
715 jTable2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
716 jTable2.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
717 public void valueChanged(ListSelectionEvent e) {\r
718 if (e.getValueIsAdjusting()){\r
719 return;\r
720 }\r
721 ListSelectionModel lsm = (ListSelectionModel)e.getSource();\r
722 if (lsm.isSelectionEmpty()) {\r
723 return;\r
724 }\r
725 else{\r
726 int selectedRow2 = lsm.getMinSelectionIndex();\r
727 if (selectedRow2 < 0) {\r
728 return;\r
729 }\r
730 //\r
731 // display potential lib instances according to class selection\r
732 //\r
733 model3.setRowCount(0);\r
734 String cls = model2.getValueAt(selectedRow2, 0).toString();\r
735 ArrayList<String> al = classInstanceMap.get(cls);\r
736 ListIterator<String> li = al.listIterator();\r
737 while(li.hasNext()) {\r
738 String instance = li.next();\r
739 String[] s = {"", "", "", "", ""};\r
740 if (getModuleId(instance) != null) {\r
741 s[0] = getModuleId(instance).getName();\r
742 }\r
743 \r
744 String[] instancePart = instance.split(" ");\r
745 for (int i = 0; i < instancePart.length; ++i){\r
746 s[i+1] = instancePart[i];\r
747 }\r
748 model3.addRow(s);\r
749 }\r
750 \r
751 }\r
752 }\r
753 });\r
754 }\r
755 return jTable2;\r
756 }\r
757\r
758 /**\r
759 * This method initializes jScrollPane4 \r
760 * \r
761 * @return javax.swing.JScrollPane \r
762 */\r
763 private JScrollPane getJScrollPane4() {\r
764 if (jScrollPane4 == null) {\r
765 jScrollPane4 = new JScrollPane();\r
766 jScrollPane4.setPreferredSize(new java.awt.Dimension(450,170));\r
767 jScrollPane4.setViewportView(getJTable3());\r
768 }\r
769 return jScrollPane4;\r
770 }\r
771\r
772 /**\r
773 * This method initializes jTable3 \r
774 * \r
775 * @return javax.swing.JTable \r
776 */\r
777 private JTable getJTable3() {\r
778 if (jTable3 == null) {\r
779 model3 = new LibraryTableModel();\r
780 model3.addColumn("Name");\r
781 model3.addColumn("ModuleGUID");\r
782 model3.addColumn("ModuleVersion");\r
783 model3.addColumn("PackageGUID");\r
784 model3.addColumn("PackageVersion");\r
785 jTable3 = new JTable(model3);\r
786 \r
787 jTable3.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
788 jTable3.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
789 public void valueChanged(ListSelectionEvent e) {\r
790 int selectedRow3 = -1;\r
791 if (e.getValueIsAdjusting()){\r
792 return;\r
793 }\r
794 ListSelectionModel lsm = (ListSelectionModel)e.getSource();\r
795 if (lsm.isSelectionEmpty()) {\r
796 return;\r
797 }\r
798 else{\r
799 selectedRow3 = lsm.getMinSelectionIndex();\r
800 \r
801 \r
802 }\r
803 }\r
804 });\r
805 }\r
806 return jTable3;\r
807 }\r
808\r
809 /**\r
810 * This method initializes jPanel6 \r
811 * \r
812 * @return javax.swing.JPanel \r
813 */\r
814 private JPanel getJPanel6() {\r
815 if (jPanel6 == null) {\r
816 jPanel6 = new JPanel();\r
817 }\r
818 return jPanel6;\r
819 }\r
820\r
821 /**\r
822 * This method initializes jPanel7 \r
823 * \r
824 * @return javax.swing.JPanel \r
825 */\r
826 private JPanel getJPanel7() {\r
827 if (jPanel7 == null) {\r
828 jLabel4 = new JLabel();\r
829 jLabel4.setText("Instance Description");\r
830 jLabel3 = new JLabel();\r
831 jLabel3.setText("Selected Instances");\r
832 jPanel7 = new JPanel();\r
833 jPanel7.add(jLabel4, null);\r
834 jPanel7.add(getJScrollPane5(), null);\r
835 jPanel7.add(getJButton(), null);\r
836 jPanel7.add(getJButton1(), null);\r
837 jPanel7.add(jLabel3, null);\r
838 jPanel7.add(getJScrollPane2(), null);\r
839 }\r
840 return jPanel7;\r
841 }\r
842\r
843 /**\r
844 * This method initializes jScrollPane5 \r
845 * \r
846 * @return javax.swing.JScrollPane \r
847 */\r
848 private JScrollPane getJScrollPane5() {\r
849 if (jScrollPane5 == null) {\r
850 jScrollPane5 = new JScrollPane();\r
851 jScrollPane5.setPreferredSize(new java.awt.Dimension(300,50));\r
852 jScrollPane5.setViewportView(getJTextArea1());\r
853 }\r
854 return jScrollPane5;\r
855 }\r
856\r
857 /**\r
858 * This method initializes jTextArea1 \r
859 * \r
860 * @return javax.swing.JTextArea \r
861 */\r
862 private JTextArea getJTextArea1() {\r
863 if (jTextArea1 == null) {\r
864 jTextArea1 = new JTextArea();\r
865 jTextArea1.setEditable(false);\r
866 }\r
867 return jTextArea1;\r
868 }\r
869\r
870 /**\r
871 * This method initializes jButton \r
872 * \r
873 * @return javax.swing.JButton \r
874 */\r
875 private JButton getJButton() {\r
876 if (jButton == null) {\r
877 jButton = new JButton();\r
878 jButton.setPreferredSize(new java.awt.Dimension(80,20));\r
879 jButton.setText("Add");\r
880 jButton.addActionListener(new java.awt.event.ActionListener() {\r
881 public void actionPerformed(java.awt.event.ActionEvent e) {\r
882 int row = jTable3.getSelectedRow();\r
883 if (row < 0) {\r
884 return;\r
885 }\r
886 Object[] s = {model3.getValueAt(row, 0), model3.getValueAt(row, 1),\r
887 model3.getValueAt(row, 2), model3.getValueAt(row, 3),\r
888 model3.getValueAt(row, 4)};\r
889 model1.addRow(s);\r
890 String instanceValue = model3.getValueAt(row, 1) + " " + \r
891 model3.getValueAt(row, 2) + " " +\r
892 model3.getValueAt(row, 3) + " " +\r
893 model3.getValueAt(row, 4);\r
894 //\r
895 // Add pcd information of selected instance to current moduleSA\r
896 //\r
897 ffc.addFrameworkModulesPcdBuildDefs(getModuleId(instanceValue), ffc.getModuleSA(moduleKey));\r
898 \r
899 resolveLibraryInstances(instanceValue);\r
900 }\r
901 });\r
902 }\r
903 return jButton;\r
904 }\r
905\r
906 /**\r
907 * This method initializes jButton1 \r
908 * \r
909 * @return javax.swing.JButton \r
910 */\r
911 private JButton getJButton1() {\r
912 if (jButton1 == null) {\r
913 jButton1 = new JButton();\r
914 jButton1.setPreferredSize(new java.awt.Dimension(80,20));\r
915 jButton1.setText("Delete");\r
916 jButton1.addActionListener(new java.awt.event.ActionListener() {\r
917 public void actionPerformed(java.awt.event.ActionEvent e) {\r
918 int row = jTable1.getSelectedRow();\r
919 if (row < 0) {\r
920 return;\r
921 }\r
922 removeInstance(model1.getValueAt(row, 1) + " " + \r
923 model1.getValueAt(row, 2) + " " +\r
924 model1.getValueAt(row, 3) + " " +\r
925 model1.getValueAt(row, 4));\r
926 model1.removeRow(row);\r
927 \r
928 }\r
929 });\r
930 }\r
931 return jButton1;\r
932 }\r
933\r
934 /**\r
935 * This method initializes jButton2 \r
936 * \r
937 * @return javax.swing.JButton \r
938 */\r
939 private JButton getJButton2() {\r
940 if (jButton2 == null) {\r
941 jButton2 = new JButton();\r
942 jButton2.setPreferredSize(new java.awt.Dimension(80,20));\r
943 jButton2.setText("Ok");\r
944 jButton2.addActionListener(this);\r
945 }\r
946 return jButton2;\r
947 }\r
948\r
949 /**\r
950 * This method initializes jButton3 \r
951 * \r
952 * @return javax.swing.JButton \r
953 */\r
954 private JButton getJButton3() {\r
955 if (jButton3 == null) {\r
956 jButton3 = new JButton();\r
957 jButton3.setPreferredSize(new java.awt.Dimension(80,20));\r
958 jButton3.setText("Cancel");\r
959 jButton3.setVisible(false);\r
960 }\r
961 return jButton3;\r
962 }\r
963 public void actionPerformed(ActionEvent arg0) {\r
964\r
965 if (arg0.getSource() == jButton2) {\r
966 ffc.removeLibraryInstances(moduleKey);\r
967 for (int i = 0; i < model1.getRowCount(); ++i) {\r
968 String mg = model1.getValueAt(i, 1)+"";\r
969 String mv = model1.getValueAt(i, 2)+"";\r
970 String pg = model1.getValueAt(i, 3)+"";\r
971 String pv = model1.getValueAt(i, 4)+"";\r
972 ffc.genLibraryInstance(mg, mv, pg, pv, moduleKey);\r
973 }\r
974 this.setVisible(false);\r
975 }\r
976 }\r
6a09eb19 977 /**\r
978 * This method initializes jPanel8 \r
979 * \r
980 * @return javax.swing.JPanel \r
981 */\r
982 private JPanel getJPanel8() {\r
983 if (jPanel8 == null) {\r
984 jLabel8 = new JLabel();\r
985 jLabel8.setText("FFS Format Key");\r
986 jLabel7 = new JLabel();\r
987 jLabel7.setText("FFS File GUID");\r
988 jLabel6 = new JLabel();\r
989 jLabel6.setText("FV Binding");\r
990 jPanel8 = new JPanel();\r
991 jPanel8.add(jLabel6, null);\r
992 jPanel8.add(getJTextField(), null);\r
993 jPanel8.add(jLabel7, null);\r
994 jPanel8.add(getJTextField1(), null);\r
995 jPanel8.add(jLabel8, null);\r
996 jPanel8.add(getJTextField2(), null);\r
997 jPanel8.add(getJScrollPane6(), null);\r
998 }\r
999 return jPanel8;\r
1000 }\r
1001 /**\r
1002 * This method initializes jTextField \r
1003 * \r
1004 * @return javax.swing.JTextField \r
1005 */\r
1006 private JTextField getJTextField() {\r
1007 if (jTextField == null) {\r
1008 jTextField = new JTextField();\r
1009 jTextField.setPreferredSize(new java.awt.Dimension(100,20));\r
1010 }\r
1011 return jTextField;\r
1012 }\r
1013 /**\r
1014 * This method initializes jTextField1 \r
1015 * \r
1016 * @return javax.swing.JTextField \r
1017 */\r
1018 private JTextField getJTextField1() {\r
1019 if (jTextField1 == null) {\r
1020 jTextField1 = new JTextField();\r
1021 jTextField1.setPreferredSize(new java.awt.Dimension(100,20));\r
1022 }\r
1023 return jTextField1;\r
1024 }\r
1025 /**\r
1026 * This method initializes jTextField2 \r
1027 * \r
1028 * @return javax.swing.JTextField \r
1029 */\r
1030 private JTextField getJTextField2() {\r
1031 if (jTextField2 == null) {\r
1032 jTextField2 = new JTextField();\r
1033 jTextField2.setPreferredSize(new java.awt.Dimension(100,20));\r
1034 }\r
1035 return jTextField2;\r
1036 }\r
1037 /**\r
1038 * This method initializes jScrollPane6 \r
1039 * \r
1040 * @return javax.swing.JScrollPane \r
1041 */\r
1042 private JScrollPane getJScrollPane6() {\r
1043 if (jScrollPane6 == null) {\r
1044 jScrollPane6 = new JScrollPane();\r
1045 jScrollPane6.setPreferredSize(new java.awt.Dimension(600,200));\r
1046 jScrollPane6.setViewportView(getJTable4());\r
1047 }\r
1048 return jScrollPane6;\r
1049 }\r
1050 /**\r
1051 * This method initializes jTable4 \r
1052 * \r
1053 * @return javax.swing.JTable \r
1054 */\r
1055 private JTable getJTable4() {\r
1056 if (jTable4 == null) {\r
1057 jTable4 = new JTable();\r
1058 }\r
1059 return jTable4;\r
1060 }\r
a13899c5 1061\r
1062} // @jve:decl-index=0:visual-constraint="10,10"\r
1063\r
1064class PartialEditableTableModel extends DefaultTableModel {\r
44053733 1065 /**\r
1066 * \r
1067 */\r
1068 private static final long serialVersionUID = 1L;\r
1069\r
a13899c5 1070 public boolean isCellEditable(int row, int col) {\r
1071 switch (col){\r
1072 case 2:\r
1073 return true;\r
1074 default:\r
1075 return false; \r
1076 }\r
1077 \r
1078 }\r
1079}\r
1080\r
1081class LibraryTableModel extends DefaultTableModel {\r
44053733 1082 /**\r
1083 * \r
1084 */\r
1085 private static final long serialVersionUID = 1L;\r
1086\r
a13899c5 1087 public boolean isCellEditable(int row, int col) {\r
1088 return false;\r
1089 }\r
1090}\r