]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/find/FindResult.java
1. Fix EDKT339 Library Class Search need to get info for selected library class
[mirror_edk2.git] / Tools / Java / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / common / find / FindResult.java
CommitLineData
55e83b18 1/** @file\r
2\r
3 The file is used to show a table with all defined PPIs\r
4\r
5 Copyright (c) 2006, Intel Corporation\r
6 All rights reserved. This program and the accompanying materials\r
7 are licensed and made available under the terms and conditions of the BSD License\r
8 which accompanies this distribution. The full text of the license may be found at\r
9 http://opensource.org/licenses/bsd-license.php\r
10\r
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13\r
14 **/\r
15package org.tianocore.frameworkwizard.common.find;\r
16\r
17import java.awt.Dimension;\r
18import java.awt.event.ActionEvent;\r
19import java.awt.event.ComponentEvent;\r
419558bb 20import java.awt.event.MouseEvent;\r
21import java.awt.event.MouseListener;\r
55e83b18 22import java.awt.event.WindowEvent;\r
23import java.util.Vector;\r
24\r
25import javax.swing.JButton;\r
26import javax.swing.JFrame;\r
27import javax.swing.JPanel;\r
28import javax.swing.JScrollPane;\r
29import javax.swing.JTable;\r
30import javax.swing.ListSelectionModel;\r
31import javax.swing.SwingConstants;\r
419558bb 32import javax.swing.event.ListSelectionEvent;\r
33import javax.swing.event.ListSelectionListener;\r
55e83b18 34import javax.swing.event.TableModelEvent;\r
35import javax.swing.event.TableModelListener;\r
36import javax.swing.table.DefaultTableCellRenderer;\r
37\r
38import org.tianocore.frameworkwizard.common.DataType;\r
39import org.tianocore.frameworkwizard.common.IDefaultTableModel;\r
40import org.tianocore.frameworkwizard.common.Log;\r
41import org.tianocore.frameworkwizard.common.Tools;\r
42import org.tianocore.frameworkwizard.common.ui.IFrame;\r
419558bb 43import org.tianocore.frameworkwizard.module.Identifications.ModuleIdentification;\r
44import org.tianocore.frameworkwizard.module.Identifications.LibraryClass.LibraryClassVector;\r
55e83b18 45\r
419558bb 46public class FindResult extends IFrame implements TableModelListener, ListSelectionListener, MouseListener {\r
55e83b18 47\r
48 ///\r
49 /// Define class Serial Version UID\r
50 ///\r
51 private static final long serialVersionUID = -2448484533878401714L;\r
52\r
53 //\r
54 // Define class members\r
55 //\r
56 private JTable jTable = null;\r
57\r
58 private JPanel jContentPane = null;\r
59\r
60 private JScrollPane jScrollPane = null;\r
61\r
62 private JScrollPane jScrollPaneTable = null;\r
63\r
64 private JButton jButtonClose = null;\r
65\r
66 //\r
67 // Not used by UI\r
68 //\r
69 private IDefaultTableModel model = null;\r
70\r
71 private String method = "";\r
72\r
73 private static FindResult findPpisResult = null;\r
74\r
75 private static FindResult findProtocolsResult = null;\r
76\r
77 private static FindResult findGuidsResult = null;\r
78\r
79 private static FindResult findPcdsResult = null;\r
80\r
81 private static FindResult findLibraryClassResult = null;\r
82\r
419558bb 83 private int selectedRow = -1;\r
84\r
85 private LibraryClassVector lcv = null;\r
86\r
87 private Vector<FindResultId> vLibraryClassFindResult = null;\r
88\r
55e83b18 89 /**\r
90 * This is the default constructor\r
91 */\r
92 public FindResult(String method) {\r
93 super();\r
94 init(method);\r
95 }\r
96\r
97 /**\r
98 * This method initializes this\r
99 * \r
100 * @return void\r
101 */\r
102 private void init(String method) {\r
103 this.setSize(600, 500);\r
104 this.setContentPane(getJScrollPane());\r
105 this.setTitle("Find Result");\r
106 this.setResizable(true);\r
107 this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);\r
108 this.centerWindow();\r
109\r
110 //\r
111 // max the window\r
112 //\r
113 //this.setExtendedState(JFrame.MAXIMIZED_BOTH);\r
114 this.method = method;\r
115 this.showTable();\r
116 }\r
117\r
118 /**\r
119 * This method initializes jContentPane\r
120 * \r
121 * @return javax.swing.JPanel\r
122 */\r
123 private JPanel getJContentPane() {\r
124 if (jContentPane == null) {\r
125 jContentPane = new JPanel();\r
126 jContentPane.setLayout(null);\r
127 jContentPane.add(getJScrollPaneTable(), null);\r
128 jContentPane.add(getJButtonClose(), null);\r
129 jContentPane.setPreferredSize(new java.awt.Dimension(585, 445));\r
130 }\r
131 return jContentPane;\r
132 }\r
133\r
134 /**\r
135 This method initializes jScrollPane \r
136 \r
137 @return javax.swing.JScrollPane \r
138 */\r
139 private JScrollPane getJScrollPane() {\r
140 if (jScrollPane == null) {\r
141 jScrollPane = new JScrollPane();\r
142 jScrollPane.setViewportView(getJContentPane());\r
143 }\r
144 return jScrollPane;\r
145 }\r
146\r
147 /**\r
148 This method initializes jScrollPaneTable \r
149 \r
150 @return javax.swing.JScrollPane \r
151 **/\r
152 private JScrollPane getJScrollPaneTable() {\r
153 if (jScrollPaneTable == null) {\r
154 jScrollPaneTable = new JScrollPane();\r
155 jScrollPaneTable.setBounds(new java.awt.Rectangle(0, 0, 585, 395));\r
156 jScrollPaneTable.setPreferredSize(new Dimension(585, 395));\r
157 jScrollPaneTable.setViewportView(getJTable());\r
158 }\r
159 return jScrollPaneTable;\r
160 }\r
161\r
162 /**\r
163 This method initializes jTable \r
164 \r
165 @return javax.swing.JTable \r
166 **/\r
167 private JTable getJTable() {\r
168 if (jTable == null) {\r
169 model = new IDefaultTableModel();\r
170 jTable = new JTable(model);\r
350785ff 171 jTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
172 jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
173\r
419558bb 174 jTable.getSelectionModel().addListSelectionListener(this);\r
350785ff 175 jTable.getModel().addTableModelListener(this);\r
419558bb 176 jTable.addMouseListener(this);\r
55e83b18 177\r
178 model.addColumn("Name");\r
179 model.addColumn("Type");\r
180 model.addColumn("Produced by");\r
181 model.addColumn("Consumed by");\r
182 model.addColumn("Declared by");\r
183\r
184 jTable.getColumn("Name").setCellRenderer(new MyTableCellRenderer());\r
185 jTable.getColumn("Type").setCellRenderer(new MyTableCellRenderer());\r
186 jTable.getColumn("Produced by").setCellRenderer(new MyTableCellRenderer());\r
187 jTable.getColumn("Consumed by").setCellRenderer(new MyTableCellRenderer());\r
188 jTable.getColumn("Declared by").setCellRenderer(new MyTableCellRenderer());\r
419558bb 189\r
350785ff 190 int columnWidth = (this.getSize().width - 28) / 5;\r
191 jTable.getColumn("Name").setPreferredWidth(columnWidth);\r
192 jTable.getColumn("Type").setPreferredWidth(columnWidth);\r
193 jTable.getColumn("Produced by").setPreferredWidth(columnWidth);\r
194 jTable.getColumn("Consumed by").setPreferredWidth(columnWidth);\r
195 jTable.getColumn("Declared by").setPreferredWidth(columnWidth);\r
55e83b18 196 }\r
197 return jTable;\r
198 }\r
199\r
200 /**\r
201 This method initializes jButtonAdd \r
202 \r
203 @return javax.swing.JButton jButtonAdd\r
204 \r
205 **/\r
206 private JButton getJButtonClose() {\r
207 if (jButtonClose == null) {\r
208 jButtonClose = new JButton();\r
209 jButtonClose.setText("Close");\r
210 jButtonClose.addActionListener(this);\r
211 jButtonClose.setBounds(new java.awt.Rectangle(255, 415, 80, 20));\r
212 jButtonClose.setPreferredSize(new java.awt.Dimension(80, 20));\r
213 }\r
214 return jButtonClose;\r
215 }\r
216\r
217 public static FindResult getInstance(String method) {\r
218 if (method.equals("PPI")) {\r
219 if (findPpisResult == null) {\r
220 findPpisResult = new FindResult(method);\r
221 }\r
222 findPpisResult.init(method);\r
223 return findPpisResult;\r
224 }\r
225\r
226 if (method.equals("PROTOCOL")) {\r
227 if (findProtocolsResult == null) {\r
228 findProtocolsResult = new FindResult(method);\r
229 }\r
230 findProtocolsResult.init(method);\r
231 return findProtocolsResult;\r
232 }\r
233\r
234 if (method.equals("GUID")) {\r
235 if (findGuidsResult == null) {\r
236 findGuidsResult = new FindResult(method);\r
237 }\r
238 findGuidsResult.init(method);\r
239 return findGuidsResult;\r
240 }\r
241\r
242 if (method.equals("PCD")) {\r
243 if (findPcdsResult == null) {\r
244 findPcdsResult = new FindResult(method);\r
245 }\r
246 findPcdsResult.init(method);\r
247 return findPcdsResult;\r
248 }\r
249\r
250 if (method.equals("LIBRARY_CLASS")) {\r
251 if (findLibraryClassResult == null) {\r
252 findLibraryClassResult = new FindResult(method);\r
253 }\r
254 findLibraryClassResult.init(method);\r
255 return findLibraryClassResult;\r
256 }\r
257\r
258 return null;\r
259 }\r
260\r
261 /**\r
262 Clear all table rows\r
263 \r
264 **/\r
265 private void clearAll() {\r
266 if (model != null) {\r
267 for (int index = model.getRowCount() - 1; index >= 0; index--) {\r
268 model.removeRow(index);\r
269 }\r
270 }\r
271 }\r
272\r
273 /**\r
274 Read content of vector and put then into table\r
275 \r
276 **/\r
277 private void showTable() {\r
278 clearAll();\r
279\r
280 if (this.method.equals("PPI")) {\r
281 Vector<PpiId> vPpi = Find.getAllPpisForFind();\r
282\r
283 if (vPpi.size() > 0) {\r
284\r
285 for (int index = 0; index < vPpi.size(); index++) {\r
286 Vector<String> v = new Vector<String>();\r
287 v.addElement(vPpi.elementAt(index).getName());\r
288 v.addElement(vPpi.elementAt(index).getType());\r
289 String strProducedModules = vPpi.elementAt(index).getProducedModules();\r
290 if (strProducedModules.indexOf("<br>") == 0) {\r
291 strProducedModules = strProducedModules.substring("<br>".length());\r
292 }\r
293 int line1 = Tools.getSpecificStringCount(strProducedModules, "<br>");\r
294 v.addElement("<html>" + strProducedModules + "</html>");\r
295\r
296 String strConsumedModules = vPpi.elementAt(index).getConsumedModules();\r
297 if (strConsumedModules.indexOf("<br>") == 0) {\r
298 strConsumedModules = strConsumedModules.substring("<br>".length());\r
299 }\r
300 int line2 = Tools.getSpecificStringCount(strConsumedModules, "<br>");\r
301 v.addElement("<html>" + strConsumedModules + "</html>");\r
302\r
303 v.addElement(vPpi.elementAt(index).getDeclaredBy());\r
304\r
305 model.addRow(v);\r
306 jTable.setRowHeight(index, (Math.max(line1, line2) > 1 ? Math.max(line1, line2) : 1) * 18);\r
307 }\r
308 } else {\r
309 Log.wrn("Find PPIs", "No PPI found!!!");\r
310 }\r
311 }\r
312\r
313 if (this.method.equals("PROTOCOL")) {\r
314 Vector<ProtocolId> vProtocol = Find.getAllProtocolsForFind();\r
315\r
316 if (vProtocol.size() > 0) {\r
317\r
318 for (int index = 0; index < vProtocol.size(); index++) {\r
319 Vector<String> v = new Vector<String>();\r
320 v.addElement(vProtocol.elementAt(index).getName());\r
321 v.addElement(vProtocol.elementAt(index).getType());\r
322 String strProducedModules = vProtocol.elementAt(index).getProducedModules();\r
323 if (strProducedModules.indexOf("<br>") == 0) {\r
324 strProducedModules = strProducedModules.substring("<br>".length());\r
325 }\r
326 int line1 = Tools.getSpecificStringCount(strProducedModules, "<br>");\r
327 v.addElement("<html>" + strProducedModules + "</html>");\r
328\r
329 String strConsumedModules = vProtocol.elementAt(index).getConsumedModules();\r
330 if (strConsumedModules.indexOf("<br>") == 0) {\r
331 strConsumedModules = strConsumedModules.substring("<br>".length());\r
332 }\r
333 int line2 = Tools.getSpecificStringCount(strConsumedModules, "<br>");\r
334 v.addElement("<html>" + strConsumedModules + "</html>");\r
335\r
336 v.addElement(vProtocol.elementAt(index).getDeclaredBy());\r
337\r
338 model.addRow(v);\r
339 jTable.setRowHeight(index, (Math.max(line1, line2) > 1 ? Math.max(line1, line2) : 1) * 18);\r
340 }\r
341 } else {\r
342 Log.wrn("Find PROTOCOLs", "No PROTOCOL found!!!");\r
343 }\r
344 }\r
345\r
346 if (this.method.equals("GUID")) {\r
347 Vector<GuidId> vGuid = Find.getAllGuidsForFind();\r
348\r
349 if (vGuid.size() > 0) {\r
350\r
351 for (int index = 0; index < vGuid.size(); index++) {\r
352 Vector<String> v = new Vector<String>();\r
353 v.addElement(vGuid.elementAt(index).getName());\r
354 v.addElement("GUID");\r
355 String strProducedModules = vGuid.elementAt(index).getProducedModules();\r
356 if (strProducedModules.indexOf("<br>") == 0) {\r
357 strProducedModules = strProducedModules.substring("<br>".length());\r
358 }\r
359 int line1 = Tools.getSpecificStringCount(strProducedModules, "<br>");\r
360 v.addElement("<html>" + strProducedModules + "</html>");\r
361\r
362 String strConsumedModules = vGuid.elementAt(index).getConsumedModules();\r
363 if (strConsumedModules.indexOf("<br>") == 0) {\r
364 strConsumedModules = strConsumedModules.substring("<br>".length());\r
365 }\r
366 int line2 = Tools.getSpecificStringCount(strConsumedModules, "<br>");\r
367 v.addElement("<html>" + strConsumedModules + "</html>");\r
368\r
369 v.addElement(vGuid.elementAt(index).getDeclaredBy());\r
370\r
371 model.addRow(v);\r
372 jTable.setRowHeight(index, (Math.max(line1, line2) > 1 ? Math.max(line1, line2) : 1) * 18);\r
373 }\r
374 } else {\r
375 Log.wrn("Find GUIDs", "No GUID found!!!");\r
376 }\r
377 }\r
378\r
379 if (this.method.equals("PCD")) {\r
380 Vector<PcdId> vPcd = Find.getAllPcdCodedForFind();\r
381\r
382 if (vPcd.size() > 0) {\r
383\r
384 for (int index = 0; index < vPcd.size(); index++) {\r
385 Vector<String> v = new Vector<String>();\r
386 v.addElement(vPcd.elementAt(index).getName());\r
387 v.addElement(vPcd.elementAt(index).getType());\r
388 String strProducedModules = vPcd.elementAt(index).getProducedModules();\r
389 if (strProducedModules.indexOf("<br>") == 0) {\r
390 strProducedModules = strProducedModules.substring("<br>".length());\r
391 }\r
392 int line1 = Tools.getSpecificStringCount(strProducedModules, "<br>");\r
393 v.addElement("<html>" + strProducedModules + "</html>");\r
394\r
395 String strConsumedModules = vPcd.elementAt(index).getConsumedModules();\r
396 if (strConsumedModules.indexOf("<br>") == 0) {\r
397 strConsumedModules = strConsumedModules.substring("<br>".length());\r
398 }\r
399 int line2 = Tools.getSpecificStringCount(strConsumedModules, "<br>");\r
400 v.addElement("<html>" + strConsumedModules + "</html>");\r
401\r
402 v.addElement(vPcd.elementAt(index).getDeclaredBy());\r
403\r
404 model.addRow(v);\r
405 jTable.setRowHeight(index, (Math.max(line1, line2) > 1 ? Math.max(line1, line2) : 1) * 18);\r
406 }\r
407 } else {\r
408 Log.wrn("Find PCDs", "No PCD found!!!");\r
409 }\r
410 }\r
411\r
412 if (this.method.equals("LIBRARY_CLASS")) {\r
419558bb 413 lcv = Find.getAllLibraryClassVector();\r
414 vLibraryClassFindResult = Find.getAllLibraryClassForFind(lcv);\r
55e83b18 415\r
419558bb 416 if (vLibraryClassFindResult.size() > 0) {\r
417 for (int index = 0; index < vLibraryClassFindResult.size(); index++) {\r
55e83b18 418 Vector<String> v = new Vector<String>();\r
419558bb 419 v.addElement(vLibraryClassFindResult.elementAt(index).getName());\r
420 v.addElement(vLibraryClassFindResult.elementAt(index).getType());\r
421\r
422 //\r
423 // Generate Produced Modules List\r
424 //\r
425 String strProducedModules = "";\r
426 Vector<ModuleIdentification> vModule = vLibraryClassFindResult.elementAt(index)\r
427 .getProducedModules();\r
428 for (int indexOfPM = 0; indexOfPM < vModule.size(); indexOfPM++) {\r
429 strProducedModules = strProducedModules + "<br>"\r
430 + vModule.get(indexOfPM).getPackageId().getName() + "."\r
431 + vModule.get(indexOfPM).getName();\r
432 }\r
55e83b18 433 if (strProducedModules.indexOf("<br>") == 0) {\r
434 strProducedModules = strProducedModules.substring("<br>".length());\r
435 }\r
436 int line1 = Tools.getSpecificStringCount(strProducedModules, "<br>");\r
437 v.addElement("<html>" + strProducedModules + "</html>");\r
438\r
419558bb 439 //\r
440 // Generate Consumed Modules List\r
441 //\r
442 String strConsumedModules = "";\r
443 vModule = vLibraryClassFindResult.elementAt(index).getConsumedModules();\r
444 for (int indexOfCM = 0; indexOfCM < vModule.size(); indexOfCM++) {\r
445 strConsumedModules = strConsumedModules + "<br>"\r
446 + vModule.get(indexOfCM).getPackageId().getName() + "."\r
447 + vModule.get(indexOfCM).getName();\r
448 }\r
55e83b18 449 if (strConsumedModules.indexOf("<br>") == 0) {\r
450 strConsumedModules = strConsumedModules.substring("<br>".length());\r
451 }\r
452 int line2 = Tools.getSpecificStringCount(strConsumedModules, "<br>");\r
453 v.addElement("<html>" + strConsumedModules + "</html>");\r
454\r
419558bb 455 v.addElement(vLibraryClassFindResult.elementAt(index).getDeclaredBy().getName());\r
55e83b18 456\r
457 model.addRow(v);\r
458 jTable.setRowHeight(index, (Math.max(line1, line2) > 1 ? Math.max(line1, line2) : 1) * 18);\r
459 }\r
460 } else {\r
461 Log.wrn("Find Library Classes", "No Library Class found!!!");\r
462 }\r
463 }\r
464\r
465 this.jTable.repaint();\r
466 this.jTable.updateUI();\r
467 }\r
468\r
469 public void tableChanged(TableModelEvent arg0) {\r
470 // TODO Auto-generated method stub\r
471\r
472 }\r
473\r
419558bb 474 /* (non-Javadoc)\r
475 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
476 *\r
477 */\r
55e83b18 478 public void actionPerformed(ActionEvent arg0) {\r
479 if (arg0.getSource() == this.jButtonClose) {\r
55e83b18 480 this.dispose();\r
481 }\r
482 }\r
483\r
484 /* (non-Javadoc)\r
485 * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)\r
486 * \r
487 * Override componentResized to resize all components when frame's size is changed\r
488 */\r
489 public void componentResized(ComponentEvent arg0) {\r
490 int intCurrentWidth = this.getJContentPane().getWidth();\r
491 int intCurrentHeight = this.getJContentPane().getHeight();\r
492 int intPreferredWidth = this.getJContentPane().getPreferredSize().width;\r
493 int intPreferredHeight = this.getJContentPane().getPreferredSize().height;\r
494\r
495 Tools.resizeComponent(this.jScrollPaneTable, intCurrentWidth, intCurrentHeight, intPreferredWidth,\r
496 intPreferredHeight);\r
497 Tools.centerComponent(this.jButtonClose, intCurrentWidth, intCurrentHeight, intPreferredHeight,\r
498 DataType.SPACE_TO_BOTTOM_FOR_CLOSE_BUTTON);\r
350785ff 499 Tools.resizeTableColumn(this.jTable, this.getSize().width - 28);\r
55e83b18 500 }\r
501\r
419558bb 502 /* (non-Javadoc)\r
503 * @see javax.swing.event.ListSelectionListener#valueChanged(javax.swing.event.ListSelectionEvent)\r
504 *\r
505 */\r
506 public void valueChanged(ListSelectionEvent arg0) {\r
507 if (arg0.getValueIsAdjusting()) {\r
508 return;\r
509 }\r
510 ListSelectionModel lsm = (ListSelectionModel) arg0.getSource();\r
511 if (lsm.isSelectionEmpty()) {\r
512 return;\r
513 } else {\r
514 selectedRow = lsm.getMinSelectionIndex();\r
515 }\r
516 }\r
517\r
518 /* (non-Javadoc)\r
519 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)\r
520 *\r
521 */\r
522 public void mouseClicked(MouseEvent arg0) {\r
523 if (arg0.getClickCount() == 2) {\r
524 if (this.selectedRow < 0) {\r
525 return;\r
526 } else {\r
527 if (this.method.equals("LIBRARY_CLASS")) {\r
528 FindResultDetailInfo frdi = new FindResultDetailInfo(vLibraryClassFindResult.elementAt(selectedRow));\r
529 frdi.setVisible(true);\r
530 }\r
531 }\r
532 }\r
533 }\r
534\r
55e83b18 535 /* (non-Javadoc)\r
536 * @see java.awt.event.WindowListener#windowClosing(java.awt.event.WindowEvent)\r
537 *\r
538 * Override windowClosing to popup warning message to confirm quit\r
539 * \r
540 */\r
541 public void windowClosing(WindowEvent arg0) {\r
542 this.dispose();\r
543 }\r
544\r
545 class MyTableCellRenderer extends DefaultTableCellRenderer {\r
546 ///\r
419558bb 547 /// Define Class Serial Version UID\r
55e83b18 548 ///\r
549 private static final long serialVersionUID = -2082787479305255946L;\r
550\r
551 public void setValue(Object value) {\r
552 this.setVerticalAlignment(SwingConstants.TOP);\r
553 super.setValue(value);\r
554 }\r
555 }\r
556\r
419558bb 557 public void mousePressed(MouseEvent e) {\r
558 // TODO Auto-generated method stub\r
559\r
560 }\r
561\r
562 public void mouseReleased(MouseEvent e) {\r
563 // TODO Auto-generated method stub\r
564\r
565 }\r
566\r
567 public void mouseEntered(MouseEvent e) {\r
568 // TODO Auto-generated method stub\r
569\r
570 }\r
571\r
572 public void mouseExited(MouseEvent e) {\r
573 // TODO Auto-generated method stub\r
574\r
575 }\r
55e83b18 576}\r