]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/find/FindResult.java
1. Fix EDKT411: Need right and left scroll bar to display find results
[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
350785ff 20import java.awt.event.ComponentListener;\r
55e83b18 21import java.awt.event.WindowEvent;\r
22import java.util.Vector;\r
23\r
24import javax.swing.JButton;\r
25import javax.swing.JFrame;\r
26import javax.swing.JPanel;\r
27import javax.swing.JScrollPane;\r
28import javax.swing.JTable;\r
29import javax.swing.ListSelectionModel;\r
30import javax.swing.SwingConstants;\r
31import javax.swing.event.TableModelEvent;\r
32import javax.swing.event.TableModelListener;\r
33import javax.swing.table.DefaultTableCellRenderer;\r
34\r
35import org.tianocore.frameworkwizard.common.DataType;\r
36import org.tianocore.frameworkwizard.common.IDefaultTableModel;\r
37import org.tianocore.frameworkwizard.common.Log;\r
38import org.tianocore.frameworkwizard.common.Tools;\r
39import org.tianocore.frameworkwizard.common.ui.IFrame;\r
40\r
350785ff 41public class FindResult extends IFrame implements TableModelListener, ComponentListener {\r
55e83b18 42\r
43 ///\r
44 /// Define class Serial Version UID\r
45 ///\r
46 private static final long serialVersionUID = -2448484533878401714L;\r
47\r
48 //\r
49 // Define class members\r
50 //\r
51 private JTable jTable = null;\r
52\r
53 private JPanel jContentPane = null;\r
54\r
55 private JScrollPane jScrollPane = null;\r
56\r
57 private JScrollPane jScrollPaneTable = null;\r
58\r
59 private JButton jButtonClose = null;\r
60\r
61 //\r
62 // Not used by UI\r
63 //\r
64 private IDefaultTableModel model = null;\r
65\r
66 private String method = "";\r
67\r
68 private static FindResult findPpisResult = null;\r
69\r
70 private static FindResult findProtocolsResult = null;\r
71\r
72 private static FindResult findGuidsResult = null;\r
73\r
74 private static FindResult findPcdsResult = null;\r
75\r
76 private static FindResult findLibraryClassResult = null;\r
77\r
78 /**\r
79 * This is the default constructor\r
80 */\r
81 public FindResult(String method) {\r
82 super();\r
83 init(method);\r
84 }\r
85\r
86 /**\r
87 * This method initializes this\r
88 * \r
89 * @return void\r
90 */\r
91 private void init(String method) {\r
92 this.setSize(600, 500);\r
93 this.setContentPane(getJScrollPane());\r
94 this.setTitle("Find Result");\r
95 this.setResizable(true);\r
96 this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);\r
97 this.centerWindow();\r
98\r
99 //\r
100 // max the window\r
101 //\r
102 //this.setExtendedState(JFrame.MAXIMIZED_BOTH);\r
103 this.method = method;\r
104 this.showTable();\r
105 }\r
106\r
107 /**\r
108 * This method initializes jContentPane\r
109 * \r
110 * @return javax.swing.JPanel\r
111 */\r
112 private JPanel getJContentPane() {\r
113 if (jContentPane == null) {\r
114 jContentPane = new JPanel();\r
115 jContentPane.setLayout(null);\r
116 jContentPane.add(getJScrollPaneTable(), null);\r
117 jContentPane.add(getJButtonClose(), null);\r
118 jContentPane.setPreferredSize(new java.awt.Dimension(585, 445));\r
119 }\r
120 return jContentPane;\r
121 }\r
122\r
123 /**\r
124 This method initializes jScrollPane \r
125 \r
126 @return javax.swing.JScrollPane \r
127 */\r
128 private JScrollPane getJScrollPane() {\r
129 if (jScrollPane == null) {\r
130 jScrollPane = new JScrollPane();\r
131 jScrollPane.setViewportView(getJContentPane());\r
132 }\r
133 return jScrollPane;\r
134 }\r
135\r
136 /**\r
137 This method initializes jScrollPaneTable \r
138 \r
139 @return javax.swing.JScrollPane \r
140 **/\r
141 private JScrollPane getJScrollPaneTable() {\r
142 if (jScrollPaneTable == null) {\r
143 jScrollPaneTable = new JScrollPane();\r
144 jScrollPaneTable.setBounds(new java.awt.Rectangle(0, 0, 585, 395));\r
145 jScrollPaneTable.setPreferredSize(new Dimension(585, 395));\r
146 jScrollPaneTable.setViewportView(getJTable());\r
147 }\r
148 return jScrollPaneTable;\r
149 }\r
150\r
151 /**\r
152 This method initializes jTable \r
153 \r
154 @return javax.swing.JTable \r
155 **/\r
156 private JTable getJTable() {\r
157 if (jTable == null) {\r
158 model = new IDefaultTableModel();\r
159 jTable = new JTable(model);\r
350785ff 160 jTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
161 jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
162\r
163 jTable.getModel().addTableModelListener(this);\r
55e83b18 164\r
165 model.addColumn("Name");\r
166 model.addColumn("Type");\r
167 model.addColumn("Produced by");\r
168 model.addColumn("Consumed by");\r
169 model.addColumn("Declared by");\r
170\r
171 jTable.getColumn("Name").setCellRenderer(new MyTableCellRenderer());\r
172 jTable.getColumn("Type").setCellRenderer(new MyTableCellRenderer());\r
173 jTable.getColumn("Produced by").setCellRenderer(new MyTableCellRenderer());\r
174 jTable.getColumn("Consumed by").setCellRenderer(new MyTableCellRenderer());\r
175 jTable.getColumn("Declared by").setCellRenderer(new MyTableCellRenderer());\r
350785ff 176 \r
177// jTable.getColumn("Name").setPreferredWidth((this.getSize().width - 30) / 5);\r
178// jTable.getColumn("Type").setPreferredWidth((this.getSize().width - 30) / 5);\r
179// jTable.getColumn("Produced by").setPreferredWidth((this.getSize().width - 30) / 5);\r
180// jTable.getColumn("Consumed by").setPreferredWidth((this.getSize().width - 30) / 5);\r
181// jTable.getColumn("Declared by").setPreferredWidth((this.getSize().width - 30) / 5);\r
182 int columnWidth = (this.getSize().width - 28) / 5;\r
183 jTable.getColumn("Name").setPreferredWidth(columnWidth);\r
184 jTable.getColumn("Type").setPreferredWidth(columnWidth);\r
185 jTable.getColumn("Produced by").setPreferredWidth(columnWidth);\r
186 jTable.getColumn("Consumed by").setPreferredWidth(columnWidth);\r
187 jTable.getColumn("Declared by").setPreferredWidth(columnWidth);\r
55e83b18 188 }\r
189 return jTable;\r
190 }\r
191\r
192 /**\r
193 This method initializes jButtonAdd \r
194 \r
195 @return javax.swing.JButton jButtonAdd\r
196 \r
197 **/\r
198 private JButton getJButtonClose() {\r
199 if (jButtonClose == null) {\r
200 jButtonClose = new JButton();\r
201 jButtonClose.setText("Close");\r
202 jButtonClose.addActionListener(this);\r
203 jButtonClose.setBounds(new java.awt.Rectangle(255, 415, 80, 20));\r
204 jButtonClose.setPreferredSize(new java.awt.Dimension(80, 20));\r
205 }\r
206 return jButtonClose;\r
207 }\r
208\r
209 public static FindResult getInstance(String method) {\r
210 if (method.equals("PPI")) {\r
211 if (findPpisResult == null) {\r
212 findPpisResult = new FindResult(method);\r
213 }\r
214 findPpisResult.init(method);\r
215 return findPpisResult;\r
216 }\r
217\r
218 if (method.equals("PROTOCOL")) {\r
219 if (findProtocolsResult == null) {\r
220 findProtocolsResult = new FindResult(method);\r
221 }\r
222 findProtocolsResult.init(method);\r
223 return findProtocolsResult;\r
224 }\r
225\r
226 if (method.equals("GUID")) {\r
227 if (findGuidsResult == null) {\r
228 findGuidsResult = new FindResult(method);\r
229 }\r
230 findGuidsResult.init(method);\r
231 return findGuidsResult;\r
232 }\r
233\r
234 if (method.equals("PCD")) {\r
235 if (findPcdsResult == null) {\r
236 findPcdsResult = new FindResult(method);\r
237 }\r
238 findPcdsResult.init(method);\r
239 return findPcdsResult;\r
240 }\r
241\r
242 if (method.equals("LIBRARY_CLASS")) {\r
243 if (findLibraryClassResult == null) {\r
244 findLibraryClassResult = new FindResult(method);\r
245 }\r
246 findLibraryClassResult.init(method);\r
247 return findLibraryClassResult;\r
248 }\r
249\r
250 return null;\r
251 }\r
252\r
253 /**\r
254 Clear all table rows\r
255 \r
256 **/\r
257 private void clearAll() {\r
258 if (model != null) {\r
259 for (int index = model.getRowCount() - 1; index >= 0; index--) {\r
260 model.removeRow(index);\r
261 }\r
262 }\r
263 }\r
264\r
265 /**\r
266 Read content of vector and put then into table\r
267 \r
268 **/\r
269 private void showTable() {\r
270 clearAll();\r
271\r
272 if (this.method.equals("PPI")) {\r
273 Vector<PpiId> vPpi = Find.getAllPpisForFind();\r
274\r
275 if (vPpi.size() > 0) {\r
276\r
277 for (int index = 0; index < vPpi.size(); index++) {\r
278 Vector<String> v = new Vector<String>();\r
279 v.addElement(vPpi.elementAt(index).getName());\r
280 v.addElement(vPpi.elementAt(index).getType());\r
281 String strProducedModules = vPpi.elementAt(index).getProducedModules();\r
282 if (strProducedModules.indexOf("<br>") == 0) {\r
283 strProducedModules = strProducedModules.substring("<br>".length());\r
284 }\r
285 int line1 = Tools.getSpecificStringCount(strProducedModules, "<br>");\r
286 v.addElement("<html>" + strProducedModules + "</html>");\r
287\r
288 String strConsumedModules = vPpi.elementAt(index).getConsumedModules();\r
289 if (strConsumedModules.indexOf("<br>") == 0) {\r
290 strConsumedModules = strConsumedModules.substring("<br>".length());\r
291 }\r
292 int line2 = Tools.getSpecificStringCount(strConsumedModules, "<br>");\r
293 v.addElement("<html>" + strConsumedModules + "</html>");\r
294\r
295 v.addElement(vPpi.elementAt(index).getDeclaredBy());\r
296\r
297 model.addRow(v);\r
298 jTable.setRowHeight(index, (Math.max(line1, line2) > 1 ? Math.max(line1, line2) : 1) * 18);\r
299 }\r
300 } else {\r
301 Log.wrn("Find PPIs", "No PPI found!!!");\r
302 }\r
303 }\r
304\r
305 if (this.method.equals("PROTOCOL")) {\r
306 Vector<ProtocolId> vProtocol = Find.getAllProtocolsForFind();\r
307\r
308 if (vProtocol.size() > 0) {\r
309\r
310 for (int index = 0; index < vProtocol.size(); index++) {\r
311 Vector<String> v = new Vector<String>();\r
312 v.addElement(vProtocol.elementAt(index).getName());\r
313 v.addElement(vProtocol.elementAt(index).getType());\r
314 String strProducedModules = vProtocol.elementAt(index).getProducedModules();\r
315 if (strProducedModules.indexOf("<br>") == 0) {\r
316 strProducedModules = strProducedModules.substring("<br>".length());\r
317 }\r
318 int line1 = Tools.getSpecificStringCount(strProducedModules, "<br>");\r
319 v.addElement("<html>" + strProducedModules + "</html>");\r
320\r
321 String strConsumedModules = vProtocol.elementAt(index).getConsumedModules();\r
322 if (strConsumedModules.indexOf("<br>") == 0) {\r
323 strConsumedModules = strConsumedModules.substring("<br>".length());\r
324 }\r
325 int line2 = Tools.getSpecificStringCount(strConsumedModules, "<br>");\r
326 v.addElement("<html>" + strConsumedModules + "</html>");\r
327\r
328 v.addElement(vProtocol.elementAt(index).getDeclaredBy());\r
329\r
330 model.addRow(v);\r
331 jTable.setRowHeight(index, (Math.max(line1, line2) > 1 ? Math.max(line1, line2) : 1) * 18);\r
332 }\r
333 } else {\r
334 Log.wrn("Find PROTOCOLs", "No PROTOCOL found!!!");\r
335 }\r
336 }\r
337\r
338 if (this.method.equals("GUID")) {\r
339 Vector<GuidId> vGuid = Find.getAllGuidsForFind();\r
340\r
341 if (vGuid.size() > 0) {\r
342\r
343 for (int index = 0; index < vGuid.size(); index++) {\r
344 Vector<String> v = new Vector<String>();\r
345 v.addElement(vGuid.elementAt(index).getName());\r
346 v.addElement("GUID");\r
347 String strProducedModules = vGuid.elementAt(index).getProducedModules();\r
348 if (strProducedModules.indexOf("<br>") == 0) {\r
349 strProducedModules = strProducedModules.substring("<br>".length());\r
350 }\r
351 int line1 = Tools.getSpecificStringCount(strProducedModules, "<br>");\r
352 v.addElement("<html>" + strProducedModules + "</html>");\r
353\r
354 String strConsumedModules = vGuid.elementAt(index).getConsumedModules();\r
355 if (strConsumedModules.indexOf("<br>") == 0) {\r
356 strConsumedModules = strConsumedModules.substring("<br>".length());\r
357 }\r
358 int line2 = Tools.getSpecificStringCount(strConsumedModules, "<br>");\r
359 v.addElement("<html>" + strConsumedModules + "</html>");\r
360\r
361 v.addElement(vGuid.elementAt(index).getDeclaredBy());\r
362\r
363 model.addRow(v);\r
364 jTable.setRowHeight(index, (Math.max(line1, line2) > 1 ? Math.max(line1, line2) : 1) * 18);\r
365 }\r
366 } else {\r
367 Log.wrn("Find GUIDs", "No GUID found!!!");\r
368 }\r
369 }\r
370\r
371 if (this.method.equals("PCD")) {\r
372 Vector<PcdId> vPcd = Find.getAllPcdCodedForFind();\r
373\r
374 if (vPcd.size() > 0) {\r
375\r
376 for (int index = 0; index < vPcd.size(); index++) {\r
377 Vector<String> v = new Vector<String>();\r
378 v.addElement(vPcd.elementAt(index).getName());\r
379 v.addElement(vPcd.elementAt(index).getType());\r
380 String strProducedModules = vPcd.elementAt(index).getProducedModules();\r
381 if (strProducedModules.indexOf("<br>") == 0) {\r
382 strProducedModules = strProducedModules.substring("<br>".length());\r
383 }\r
384 int line1 = Tools.getSpecificStringCount(strProducedModules, "<br>");\r
385 v.addElement("<html>" + strProducedModules + "</html>");\r
386\r
387 String strConsumedModules = vPcd.elementAt(index).getConsumedModules();\r
388 if (strConsumedModules.indexOf("<br>") == 0) {\r
389 strConsumedModules = strConsumedModules.substring("<br>".length());\r
390 }\r
391 int line2 = Tools.getSpecificStringCount(strConsumedModules, "<br>");\r
392 v.addElement("<html>" + strConsumedModules + "</html>");\r
393\r
394 v.addElement(vPcd.elementAt(index).getDeclaredBy());\r
395\r
396 model.addRow(v);\r
397 jTable.setRowHeight(index, (Math.max(line1, line2) > 1 ? Math.max(line1, line2) : 1) * 18);\r
398 }\r
399 } else {\r
400 Log.wrn("Find PCDs", "No PCD found!!!");\r
401 }\r
402 }\r
403\r
404 if (this.method.equals("LIBRARY_CLASS")) {\r
405 Vector<LibraryClassId> vLibraryClass = Find.getAllLibraryClassForFind();\r
406\r
407 if (vLibraryClass.size() > 0) {\r
408\r
409 for (int index = 0; index < vLibraryClass.size(); index++) {\r
410 Vector<String> v = new Vector<String>();\r
411 v.addElement(vLibraryClass.elementAt(index).getName());\r
412 v.addElement(vLibraryClass.elementAt(index).getType());\r
413 String strProducedModules = vLibraryClass.elementAt(index).getProducedModules();\r
414 if (strProducedModules.indexOf("<br>") == 0) {\r
415 strProducedModules = strProducedModules.substring("<br>".length());\r
416 }\r
417 int line1 = Tools.getSpecificStringCount(strProducedModules, "<br>");\r
418 v.addElement("<html>" + strProducedModules + "</html>");\r
419\r
420 String strConsumedModules = vLibraryClass.elementAt(index).getConsumedModules();\r
421 if (strConsumedModules.indexOf("<br>") == 0) {\r
422 strConsumedModules = strConsumedModules.substring("<br>".length());\r
423 }\r
424 int line2 = Tools.getSpecificStringCount(strConsumedModules, "<br>");\r
425 v.addElement("<html>" + strConsumedModules + "</html>");\r
426\r
427 v.addElement(vLibraryClass.elementAt(index).getDeclaredBy());\r
428\r
429 model.addRow(v);\r
430 jTable.setRowHeight(index, (Math.max(line1, line2) > 1 ? Math.max(line1, line2) : 1) * 18);\r
431 }\r
432 } else {\r
433 Log.wrn("Find Library Classes", "No Library Class found!!!");\r
434 }\r
435 }\r
436\r
437 this.jTable.repaint();\r
438 this.jTable.updateUI();\r
439 }\r
440\r
441 public void tableChanged(TableModelEvent arg0) {\r
442 // TODO Auto-generated method stub\r
443\r
444 }\r
445\r
446 public void actionPerformed(ActionEvent arg0) {\r
447 if (arg0.getSource() == this.jButtonClose) {\r
448\r
449 this.dispose();\r
450 }\r
451 }\r
452\r
453 /* (non-Javadoc)\r
454 * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)\r
455 * \r
456 * Override componentResized to resize all components when frame's size is changed\r
457 */\r
458 public void componentResized(ComponentEvent arg0) {\r
459 int intCurrentWidth = this.getJContentPane().getWidth();\r
460 int intCurrentHeight = this.getJContentPane().getHeight();\r
461 int intPreferredWidth = this.getJContentPane().getPreferredSize().width;\r
462 int intPreferredHeight = this.getJContentPane().getPreferredSize().height;\r
463\r
464 Tools.resizeComponent(this.jScrollPaneTable, intCurrentWidth, intCurrentHeight, intPreferredWidth,\r
465 intPreferredHeight);\r
466 Tools.centerComponent(this.jButtonClose, intCurrentWidth, intCurrentHeight, intPreferredHeight,\r
467 DataType.SPACE_TO_BOTTOM_FOR_CLOSE_BUTTON);\r
350785ff 468 Tools.resizeTableColumn(this.jTable, this.getSize().width - 28);\r
55e83b18 469 }\r
470\r
471 /* (non-Javadoc)\r
472 * @see java.awt.event.WindowListener#windowClosing(java.awt.event.WindowEvent)\r
473 *\r
474 * Override windowClosing to popup warning message to confirm quit\r
475 * \r
476 */\r
477 public void windowClosing(WindowEvent arg0) {\r
478 this.dispose();\r
479 }\r
480\r
481 class MyTableCellRenderer extends DefaultTableCellRenderer {\r
482 ///\r
483 ///\r
484 ///\r
485 private static final long serialVersionUID = -2082787479305255946L;\r
486\r
487 public void setValue(Object value) {\r
488 this.setVerticalAlignment(SwingConstants.TOP);\r
489 super.setValue(value);\r
490 }\r
491 }\r
492\r
493}\r