--- /dev/null
+/** @file\r
+\r
+ The file is used to show a table with all defined PPIs\r
+\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+ **/\r
+package org.tianocore.frameworkwizard.common.find;\r
+\r
+import java.awt.Dimension;\r
+import java.awt.event.ActionEvent;\r
+import java.awt.event.ComponentEvent;\r
+import java.awt.event.WindowEvent;\r
+import java.util.Vector;\r
+\r
+import javax.swing.JButton;\r
+import javax.swing.JFrame;\r
+import javax.swing.JPanel;\r
+import javax.swing.JScrollPane;\r
+import javax.swing.JTable;\r
+import javax.swing.ListSelectionModel;\r
+import javax.swing.SwingConstants;\r
+import javax.swing.event.TableModelEvent;\r
+import javax.swing.event.TableModelListener;\r
+import javax.swing.table.DefaultTableCellRenderer;\r
+\r
+import org.tianocore.frameworkwizard.common.DataType;\r
+import org.tianocore.frameworkwizard.common.IDefaultTableModel;\r
+import org.tianocore.frameworkwizard.common.Log;\r
+import org.tianocore.frameworkwizard.common.Tools;\r
+import org.tianocore.frameworkwizard.common.ui.IFrame;\r
+\r
+public class FindResult extends IFrame implements TableModelListener {\r
+\r
+ ///\r
+ /// Define class Serial Version UID\r
+ ///\r
+ private static final long serialVersionUID = -2448484533878401714L;\r
+\r
+ //\r
+ // Define class members\r
+ //\r
+ private JTable jTable = null;\r
+\r
+ private JPanel jContentPane = null;\r
+\r
+ private JScrollPane jScrollPane = null;\r
+\r
+ private JScrollPane jScrollPaneTable = null;\r
+\r
+ private JButton jButtonClose = null;\r
+\r
+ //\r
+ // Not used by UI\r
+ //\r
+ private IDefaultTableModel model = null;\r
+\r
+ private String method = "";\r
+\r
+ private static FindResult findPpisResult = null;\r
+\r
+ private static FindResult findProtocolsResult = null;\r
+\r
+ private static FindResult findGuidsResult = null;\r
+\r
+ private static FindResult findPcdsResult = null;\r
+\r
+ private static FindResult findLibraryClassResult = null;\r
+\r
+ /**\r
+ * This is the default constructor\r
+ */\r
+ public FindResult(String method) {\r
+ super();\r
+ init(method);\r
+ }\r
+\r
+ /**\r
+ * This method initializes this\r
+ * \r
+ * @return void\r
+ */\r
+ private void init(String method) {\r
+ this.setSize(600, 500);\r
+ this.setContentPane(getJScrollPane());\r
+ this.setTitle("Find Result");\r
+ this.setResizable(true);\r
+ this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);\r
+ this.centerWindow();\r
+\r
+ //\r
+ // max the window\r
+ //\r
+ //this.setExtendedState(JFrame.MAXIMIZED_BOTH);\r
+ this.method = method;\r
+ this.showTable();\r
+ }\r
+\r
+ /**\r
+ * This method initializes jContentPane\r
+ * \r
+ * @return javax.swing.JPanel\r
+ */\r
+ private JPanel getJContentPane() {\r
+ if (jContentPane == null) {\r
+ jContentPane = new JPanel();\r
+ jContentPane.setLayout(null);\r
+ jContentPane.add(getJScrollPaneTable(), null);\r
+ jContentPane.add(getJButtonClose(), null);\r
+ jContentPane.setPreferredSize(new java.awt.Dimension(585, 445));\r
+ }\r
+ return jContentPane;\r
+ }\r
+\r
+ /**\r
+ This method initializes jScrollPane \r
+ \r
+ @return javax.swing.JScrollPane \r
+ */\r
+ private JScrollPane getJScrollPane() {\r
+ if (jScrollPane == null) {\r
+ jScrollPane = new JScrollPane();\r
+ jScrollPane.setViewportView(getJContentPane());\r
+ }\r
+ return jScrollPane;\r
+ }\r
+\r
+ /**\r
+ This method initializes jScrollPaneTable \r
+ \r
+ @return javax.swing.JScrollPane \r
+ **/\r
+ private JScrollPane getJScrollPaneTable() {\r
+ if (jScrollPaneTable == null) {\r
+ jScrollPaneTable = new JScrollPane();\r
+ jScrollPaneTable.setBounds(new java.awt.Rectangle(0, 0, 585, 395));\r
+ jScrollPaneTable.setPreferredSize(new Dimension(585, 395));\r
+ jScrollPaneTable.setViewportView(getJTable());\r
+ }\r
+ return jScrollPaneTable;\r
+ }\r
+\r
+ /**\r
+ This method initializes jTable \r
+ \r
+ @return javax.swing.JTable \r
+ **/\r
+ private JTable getJTable() {\r
+ if (jTable == null) {\r
+ model = new IDefaultTableModel();\r
+ jTable = new JTable(model);\r
+\r
+ model.addColumn("Name");\r
+ model.addColumn("Type");\r
+ model.addColumn("Produced by");\r
+ model.addColumn("Consumed by");\r
+ model.addColumn("Declared by");\r
+\r
+ jTable.getColumn("Name").setCellRenderer(new MyTableCellRenderer());\r
+ jTable.getColumn("Type").setCellRenderer(new MyTableCellRenderer());\r
+ jTable.getColumn("Produced by").setCellRenderer(new MyTableCellRenderer());\r
+ jTable.getColumn("Consumed by").setCellRenderer(new MyTableCellRenderer());\r
+ jTable.getColumn("Declared by").setCellRenderer(new MyTableCellRenderer());\r
+\r
+ jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+ jTable.getModel().addTableModelListener(this);\r
+ }\r
+ return jTable;\r
+ }\r
+\r
+ /**\r
+ This method initializes jButtonAdd \r
+ \r
+ @return javax.swing.JButton jButtonAdd\r
+ \r
+ **/\r
+ private JButton getJButtonClose() {\r
+ if (jButtonClose == null) {\r
+ jButtonClose = new JButton();\r
+ jButtonClose.setText("Close");\r
+ jButtonClose.addActionListener(this);\r
+ jButtonClose.setBounds(new java.awt.Rectangle(255, 415, 80, 20));\r
+ jButtonClose.setPreferredSize(new java.awt.Dimension(80, 20));\r
+ }\r
+ return jButtonClose;\r
+ }\r
+\r
+ public static FindResult getInstance(String method) {\r
+ if (method.equals("PPI")) {\r
+ if (findPpisResult == null) {\r
+ findPpisResult = new FindResult(method);\r
+ }\r
+ findPpisResult.init(method);\r
+ return findPpisResult;\r
+ }\r
+\r
+ if (method.equals("PROTOCOL")) {\r
+ if (findProtocolsResult == null) {\r
+ findProtocolsResult = new FindResult(method);\r
+ }\r
+ findProtocolsResult.init(method);\r
+ return findProtocolsResult;\r
+ }\r
+\r
+ if (method.equals("GUID")) {\r
+ if (findGuidsResult == null) {\r
+ findGuidsResult = new FindResult(method);\r
+ }\r
+ findGuidsResult.init(method);\r
+ return findGuidsResult;\r
+ }\r
+\r
+ if (method.equals("PCD")) {\r
+ if (findPcdsResult == null) {\r
+ findPcdsResult = new FindResult(method);\r
+ }\r
+ findPcdsResult.init(method);\r
+ return findPcdsResult;\r
+ }\r
+\r
+ if (method.equals("LIBRARY_CLASS")) {\r
+ if (findLibraryClassResult == null) {\r
+ findLibraryClassResult = new FindResult(method);\r
+ }\r
+ findLibraryClassResult.init(method);\r
+ return findLibraryClassResult;\r
+ }\r
+\r
+ return null;\r
+ }\r
+\r
+ /**\r
+ Clear all table rows\r
+ \r
+ **/\r
+ private void clearAll() {\r
+ if (model != null) {\r
+ for (int index = model.getRowCount() - 1; index >= 0; index--) {\r
+ model.removeRow(index);\r
+ }\r
+ }\r
+ }\r
+\r
+ /**\r
+ Read content of vector and put then into table\r
+ \r
+ **/\r
+ private void showTable() {\r
+ clearAll();\r
+\r
+ if (this.method.equals("PPI")) {\r
+ Vector<PpiId> vPpi = Find.getAllPpisForFind();\r
+\r
+ if (vPpi.size() > 0) {\r
+\r
+ for (int index = 0; index < vPpi.size(); index++) {\r
+ Vector<String> v = new Vector<String>();\r
+ v.addElement(vPpi.elementAt(index).getName());\r
+ v.addElement(vPpi.elementAt(index).getType());\r
+ String strProducedModules = vPpi.elementAt(index).getProducedModules();\r
+ if (strProducedModules.indexOf("<br>") == 0) {\r
+ strProducedModules = strProducedModules.substring("<br>".length());\r
+ }\r
+ int line1 = Tools.getSpecificStringCount(strProducedModules, "<br>");\r
+ v.addElement("<html>" + strProducedModules + "</html>");\r
+\r
+ String strConsumedModules = vPpi.elementAt(index).getConsumedModules();\r
+ if (strConsumedModules.indexOf("<br>") == 0) {\r
+ strConsumedModules = strConsumedModules.substring("<br>".length());\r
+ }\r
+ int line2 = Tools.getSpecificStringCount(strConsumedModules, "<br>");\r
+ v.addElement("<html>" + strConsumedModules + "</html>");\r
+\r
+ v.addElement(vPpi.elementAt(index).getDeclaredBy());\r
+\r
+ model.addRow(v);\r
+ jTable.setRowHeight(index, (Math.max(line1, line2) > 1 ? Math.max(line1, line2) : 1) * 18);\r
+ }\r
+ } else {\r
+ Log.wrn("Find PPIs", "No PPI found!!!");\r
+ }\r
+ }\r
+\r
+ if (this.method.equals("PROTOCOL")) {\r
+ Vector<ProtocolId> vProtocol = Find.getAllProtocolsForFind();\r
+\r
+ if (vProtocol.size() > 0) {\r
+\r
+ for (int index = 0; index < vProtocol.size(); index++) {\r
+ Vector<String> v = new Vector<String>();\r
+ v.addElement(vProtocol.elementAt(index).getName());\r
+ v.addElement(vProtocol.elementAt(index).getType());\r
+ String strProducedModules = vProtocol.elementAt(index).getProducedModules();\r
+ if (strProducedModules.indexOf("<br>") == 0) {\r
+ strProducedModules = strProducedModules.substring("<br>".length());\r
+ }\r
+ int line1 = Tools.getSpecificStringCount(strProducedModules, "<br>");\r
+ v.addElement("<html>" + strProducedModules + "</html>");\r
+\r
+ String strConsumedModules = vProtocol.elementAt(index).getConsumedModules();\r
+ if (strConsumedModules.indexOf("<br>") == 0) {\r
+ strConsumedModules = strConsumedModules.substring("<br>".length());\r
+ }\r
+ int line2 = Tools.getSpecificStringCount(strConsumedModules, "<br>");\r
+ v.addElement("<html>" + strConsumedModules + "</html>");\r
+\r
+ v.addElement(vProtocol.elementAt(index).getDeclaredBy());\r
+\r
+ model.addRow(v);\r
+ jTable.setRowHeight(index, (Math.max(line1, line2) > 1 ? Math.max(line1, line2) : 1) * 18);\r
+ }\r
+ } else {\r
+ Log.wrn("Find PROTOCOLs", "No PROTOCOL found!!!");\r
+ }\r
+ }\r
+\r
+ if (this.method.equals("GUID")) {\r
+ Vector<GuidId> vGuid = Find.getAllGuidsForFind();\r
+\r
+ if (vGuid.size() > 0) {\r
+\r
+ for (int index = 0; index < vGuid.size(); index++) {\r
+ Vector<String> v = new Vector<String>();\r
+ v.addElement(vGuid.elementAt(index).getName());\r
+ v.addElement("GUID");\r
+ String strProducedModules = vGuid.elementAt(index).getProducedModules();\r
+ if (strProducedModules.indexOf("<br>") == 0) {\r
+ strProducedModules = strProducedModules.substring("<br>".length());\r
+ }\r
+ int line1 = Tools.getSpecificStringCount(strProducedModules, "<br>");\r
+ v.addElement("<html>" + strProducedModules + "</html>");\r
+\r
+ String strConsumedModules = vGuid.elementAt(index).getConsumedModules();\r
+ if (strConsumedModules.indexOf("<br>") == 0) {\r
+ strConsumedModules = strConsumedModules.substring("<br>".length());\r
+ }\r
+ int line2 = Tools.getSpecificStringCount(strConsumedModules, "<br>");\r
+ v.addElement("<html>" + strConsumedModules + "</html>");\r
+\r
+ v.addElement(vGuid.elementAt(index).getDeclaredBy());\r
+\r
+ model.addRow(v);\r
+ jTable.setRowHeight(index, (Math.max(line1, line2) > 1 ? Math.max(line1, line2) : 1) * 18);\r
+ }\r
+ } else {\r
+ Log.wrn("Find GUIDs", "No GUID found!!!");\r
+ }\r
+ }\r
+\r
+ if (this.method.equals("PCD")) {\r
+ Vector<PcdId> vPcd = Find.getAllPcdCodedForFind();\r
+\r
+ if (vPcd.size() > 0) {\r
+\r
+ for (int index = 0; index < vPcd.size(); index++) {\r
+ Vector<String> v = new Vector<String>();\r
+ v.addElement(vPcd.elementAt(index).getName());\r
+ v.addElement(vPcd.elementAt(index).getType());\r
+ String strProducedModules = vPcd.elementAt(index).getProducedModules();\r
+ if (strProducedModules.indexOf("<br>") == 0) {\r
+ strProducedModules = strProducedModules.substring("<br>".length());\r
+ }\r
+ int line1 = Tools.getSpecificStringCount(strProducedModules, "<br>");\r
+ v.addElement("<html>" + strProducedModules + "</html>");\r
+\r
+ String strConsumedModules = vPcd.elementAt(index).getConsumedModules();\r
+ if (strConsumedModules.indexOf("<br>") == 0) {\r
+ strConsumedModules = strConsumedModules.substring("<br>".length());\r
+ }\r
+ int line2 = Tools.getSpecificStringCount(strConsumedModules, "<br>");\r
+ v.addElement("<html>" + strConsumedModules + "</html>");\r
+\r
+ v.addElement(vPcd.elementAt(index).getDeclaredBy());\r
+\r
+ model.addRow(v);\r
+ jTable.setRowHeight(index, (Math.max(line1, line2) > 1 ? Math.max(line1, line2) : 1) * 18);\r
+ }\r
+ } else {\r
+ Log.wrn("Find PCDs", "No PCD found!!!");\r
+ }\r
+ }\r
+\r
+ if (this.method.equals("LIBRARY_CLASS")) {\r
+ Vector<LibraryClassId> vLibraryClass = Find.getAllLibraryClassForFind();\r
+\r
+ if (vLibraryClass.size() > 0) {\r
+\r
+ for (int index = 0; index < vLibraryClass.size(); index++) {\r
+ Vector<String> v = new Vector<String>();\r
+ v.addElement(vLibraryClass.elementAt(index).getName());\r
+ v.addElement(vLibraryClass.elementAt(index).getType());\r
+ String strProducedModules = vLibraryClass.elementAt(index).getProducedModules();\r
+ if (strProducedModules.indexOf("<br>") == 0) {\r
+ strProducedModules = strProducedModules.substring("<br>".length());\r
+ }\r
+ int line1 = Tools.getSpecificStringCount(strProducedModules, "<br>");\r
+ v.addElement("<html>" + strProducedModules + "</html>");\r
+\r
+ String strConsumedModules = vLibraryClass.elementAt(index).getConsumedModules();\r
+ if (strConsumedModules.indexOf("<br>") == 0) {\r
+ strConsumedModules = strConsumedModules.substring("<br>".length());\r
+ }\r
+ int line2 = Tools.getSpecificStringCount(strConsumedModules, "<br>");\r
+ v.addElement("<html>" + strConsumedModules + "</html>");\r
+\r
+ v.addElement(vLibraryClass.elementAt(index).getDeclaredBy());\r
+\r
+ model.addRow(v);\r
+ jTable.setRowHeight(index, (Math.max(line1, line2) > 1 ? Math.max(line1, line2) : 1) * 18);\r
+ }\r
+ } else {\r
+ Log.wrn("Find Library Classes", "No Library Class found!!!");\r
+ }\r
+ }\r
+\r
+ this.jTable.repaint();\r
+ this.jTable.updateUI();\r
+ }\r
+\r
+ public void tableChanged(TableModelEvent arg0) {\r
+ // TODO Auto-generated method stub\r
+\r
+ }\r
+\r
+ public void actionPerformed(ActionEvent arg0) {\r
+ if (arg0.getSource() == this.jButtonClose) {\r
+\r
+ this.dispose();\r
+ }\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)\r
+ * \r
+ * Override componentResized to resize all components when frame's size is changed\r
+ */\r
+ public void componentResized(ComponentEvent arg0) {\r
+ int intCurrentWidth = this.getJContentPane().getWidth();\r
+ int intCurrentHeight = this.getJContentPane().getHeight();\r
+ int intPreferredWidth = this.getJContentPane().getPreferredSize().width;\r
+ int intPreferredHeight = this.getJContentPane().getPreferredSize().height;\r
+\r
+ Tools.resizeComponent(this.jScrollPaneTable, intCurrentWidth, intCurrentHeight, intPreferredWidth,\r
+ intPreferredHeight);\r
+ Tools.centerComponent(this.jButtonClose, intCurrentWidth, intCurrentHeight, intPreferredHeight,\r
+ DataType.SPACE_TO_BOTTOM_FOR_CLOSE_BUTTON);\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see java.awt.event.WindowListener#windowClosing(java.awt.event.WindowEvent)\r
+ *\r
+ * Override windowClosing to popup warning message to confirm quit\r
+ * \r
+ */\r
+ public void windowClosing(WindowEvent arg0) {\r
+ this.dispose();\r
+ }\r
+\r
+ class MyTableCellRenderer extends DefaultTableCellRenderer {\r
+ ///\r
+ ///\r
+ ///\r
+ private static final long serialVersionUID = -2082787479305255946L;\r
+\r
+ public void setValue(Object value) {\r
+ this.setVerticalAlignment(SwingConstants.TOP);\r
+ super.setValue(value);\r
+ }\r
+ }\r
+\r
+}\r