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