]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/find/FindResult.java
1. Provide "Find" function for Ppi/Protocol/Guid/Pcd/LibraryClass.
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / common / find / FindResult.java
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/find/FindResult.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/find/FindResult.java
new file mode 100644 (file)
index 0000000..0033797
--- /dev/null
@@ -0,0 +1,478 @@
+/** @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