-/** @file\r
- PCDDatabaseFrame class.\r
-\r
- The class is the frame class for displaying PCD database in tree method.\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.build.pcd.ui;\r
-\r
-import java.awt.*;\r
-import java.awt.event.*;\r
-import java.util.Map;\r
-\r
-import javax.swing.*;\r
-import javax.swing.tree.DefaultMutableTreeNode;\r
-\r
-import org.tianocore.build.pcd.action.ActionMessage;\r
-import org.tianocore.build.pcd.entity.MemoryDatabaseManager;\r
-import org.tianocore.build.pcd.entity.Token;\r
-import org.tianocore.build.pcd.entity.UsageInstance;\r
-\r
-/**\r
- The class is the frame class for displaying PCD database in tree method.\r
-**/\r
-public class PCDDatabaseFrame extends JFrame {\r
- static final long serialVersionUID = -7034897190740068939L;\r
- ///\r
- /// Database instance \r
- ///\r
- private MemoryDatabaseManager dbManager;\r
- ///\r
- /// The token and module tree\r
- ///\r
- private JTree databaseTree;\r
-\r
- /**\r
- Constructure function. \r
- \r
- Create the UI component and display frame.\r
-\r
- @param dbManager databaase manager instance.\r
- **/\r
- public PCDDatabaseFrame(MemoryDatabaseManager dbManager) {\r
- if (dbManager != null) {\r
- this.dbManager = dbManager;\r
- }\r
- //\r
- // Put the frame into center of desktop.\r
- //\r
- setLocation(100, 100);\r
- initializeComponent();\r
-\r
- setTitle("PCD View Tool");\r
- pack();\r
- setVisible(true);\r
- }\r
-\r
- /**\r
- Initliaze the UI component in Display frame.\r
- **/\r
- public void initializeComponent() {\r
- JScrollPane scrollPane = new JScrollPane();\r
- Container contentPane = getContentPane();\r
-\r
- contentPane.setLayout(new BorderLayout());\r
- scrollPane.setViewportView(initializeTree());\r
- contentPane.add(scrollPane);\r
-\r
- addWindowListener(new PCDDatabaseFrameAdapter());\r
- }\r
-\r
- /**\r
- Initiliaze the TREE control.\r
- **/\r
- public JTree initializeTree() {\r
- Token[] tokenArray = null;\r
- Token token = null;\r
- DefaultMutableTreeNode root = new DefaultMutableTreeNode("PCDTreeRoot");\r
- DefaultMutableTreeNode rootByPCD = new DefaultMutableTreeNode("By PCD");\r
- DefaultMutableTreeNode rootByModule = new DefaultMutableTreeNode("By Module");\r
- DefaultMutableTreeNode tokenNode = null;\r
- DefaultMutableTreeNode usageNode = null;\r
- DefaultMutableTreeNode moduleNode = null;\r
- java.util.List<String> moduleNames = null;\r
- int index = 0; \r
- int usageIndex = 0;\r
- int moduleIndex = 0;\r
- Object[] objectArray = null;\r
- java.util.List<UsageInstance> usageArray = null;\r
- UsageInstance usageInstance = null;\r
-\r
- root.add(rootByPCD);\r
- //\r
- // By PCD Node\r
- //\r
-\r
- tokenArray = dbManager.getRecordArray();\r
- for (index = 0; index < tokenArray.length; index ++) {\r
- token = tokenArray[index];\r
- ActionMessage.debug(this, token.cName);\r
- tokenNode = new DefaultMutableTreeNode(token.cName);\r
- tokenNode.add(new DefaultMutableTreeNode(String.format("TOKEN NUMBER: 0x%08x", token.tokenNumber)));\r
- tokenNode.add(new DefaultMutableTreeNode("TOKEN SPACE NAME: " + token.tokenSpaceName.toString()));\r
- tokenNode.add(new DefaultMutableTreeNode("DATUM TYPE: " +Token.getStringOfdatumType(token.datumType)));\r
- //tokenNode.add(new DefaultMutableTreeNode("VARIABLE GUID: " + token.variableGuid.toString()));\r
-\r
- usageNode = new DefaultMutableTreeNode("PRODUCER");\r
- tokenNode.add(usageNode);\r
-\r
-\r
- //\r
- // Prepare consumer's leaf node\r
- //\r
- usageNode = new DefaultMutableTreeNode("CONSUMER");\r
- tokenNode.add(usageNode);\r
- objectArray = token.consumers.entrySet().toArray();\r
- for (usageIndex = 0; usageIndex < token.consumers.size(); usageIndex ++) {\r
- usageInstance = (UsageInstance) ((Map.Entry)objectArray[usageIndex]).getValue();\r
- usageNode.add(new DefaultMutableTreeNode(usageInstance.getPrimaryKey()));\r
- }\r
-\r
- rootByPCD.add(tokenNode);\r
- }\r
-\r
- //\r
- // BY MODULE Node\r
- //\r
- root.add(rootByModule);\r
- moduleNames = dbManager.getAllModuleArray();\r
- for (moduleIndex = 0; moduleIndex < moduleNames.size(); moduleIndex ++) {\r
- ActionMessage.debug(this, "ModuleName:" + moduleNames.get(moduleIndex));\r
- }\r
- for (moduleIndex = 0; moduleIndex < moduleNames.size(); moduleIndex ++) {\r
- moduleNode = new DefaultMutableTreeNode(moduleNames.get(moduleIndex));\r
- usageArray = dbManager.getUsageInstanceArrayByKeyString(moduleNames.get(moduleIndex));\r
- for (usageIndex = 0; usageIndex < usageArray.size(); usageIndex ++) {\r
- usageInstance = usageArray.get(usageIndex);\r
- usageNode = new DefaultMutableTreeNode(usageInstance.parentToken.cName);\r
- usageNode.add(new DefaultMutableTreeNode("MODULE PCD TYPE: " + Token.getStringOfpcdType(usageInstance.modulePcdType)));\r
- moduleNode.add(usageNode);\r
- }\r
- rootByModule.add(moduleNode);\r
- }\r
-\r
- databaseTree = new JTree(root);\r
- return databaseTree;\r
- }\r
-}\r
-\r
-/**\r
- The adatper class for PCDDatabaseFrame. This class instance many windows message \r
- callback function.\r
-**/\r
-class PCDDatabaseFrameAdapter extends WindowAdapter {\r
- public void windowClosing(WindowEvent e) {\r
- System.exit(0);\r
- }\r
-}\r