]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/GenBuild/org/tianocore/build/pcd/ui/PCDDatabaseFrame.java
Modify PCD tool according to final PCD schema modification.
[mirror_edk2.git] / Tools / Source / GenBuild / org / tianocore / build / pcd / ui / PCDDatabaseFrame.java
CommitLineData
878ddf1f 1/** @file\r
2 PCDDatabaseFrame class.\r
3\r
4 The class is the frame class for displaying PCD database in tree method.\r
5 \r
6Copyright (c) 2006, Intel Corporation\r
7All rights reserved. This program and the accompanying materials\r
8are licensed and made available under the terms and conditions of the BSD License\r
9which accompanies this distribution. The full text of the license may be found at\r
10http://opensource.org/licenses/bsd-license.php\r
11 \r
12THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
13WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
14\r
15**/ \r
16package org.tianocore.build.pcd.ui;\r
17\r
18import java.awt.*;\r
19import java.awt.event.*;\r
8840ad58 20import java.util.Map;\r
878ddf1f 21\r
22import javax.swing.*;\r
23import javax.swing.tree.DefaultMutableTreeNode;\r
24\r
25import org.tianocore.build.pcd.action.ActionMessage;\r
26import org.tianocore.build.pcd.entity.MemoryDatabaseManager;\r
27import org.tianocore.build.pcd.entity.Token;\r
28import org.tianocore.build.pcd.entity.UsageInstance;\r
29\r
30/**\r
31 The class is the frame class for displaying PCD database in tree method.\r
32**/\r
33public class PCDDatabaseFrame extends JFrame {\r
34 static final long serialVersionUID = -7034897190740068939L;\r
35 ///\r
36 /// Database instance \r
37 ///\r
38 private MemoryDatabaseManager dbManager;\r
39 ///\r
40 /// The token and module tree\r
41 ///\r
42 private JTree databaseTree;\r
43\r
44 /**\r
45 Constructure function. \r
46 \r
47 Create the UI component and display frame.\r
48\r
49 @param dbManager databaase manager instance.\r
50 **/\r
51 public PCDDatabaseFrame(MemoryDatabaseManager dbManager) {\r
52 if (dbManager != null) {\r
53 this.dbManager = dbManager;\r
54 }\r
55 //\r
56 // Put the frame into center of desktop.\r
57 //\r
58 setLocation(100, 100);\r
59 initializeComponent();\r
60\r
61 setTitle("PCD View Tool");\r
62 pack();\r
63 setVisible(true);\r
64 }\r
65\r
66 /**\r
67 Initliaze the UI component in Display frame.\r
68 **/\r
69 public void initializeComponent() {\r
70 JScrollPane scrollPane = new JScrollPane();\r
71 Container contentPane = getContentPane();\r
72\r
73 contentPane.setLayout(new BorderLayout());\r
74 scrollPane.setViewportView(initializeTree());\r
75 contentPane.add(scrollPane);\r
76\r
77 addWindowListener(new PCDDatabaseFrameAdapter());\r
78 }\r
79\r
80 /**\r
81 Initiliaze the TREE control.\r
82 **/\r
83 public JTree initializeTree() {\r
84 Token[] tokenArray = null;\r
85 Token token = null;\r
8840ad58 86 DefaultMutableTreeNode root = new DefaultMutableTreeNode("PCDTreeRoot");\r
878ddf1f 87 DefaultMutableTreeNode rootByPCD = new DefaultMutableTreeNode("By PCD");\r
88 DefaultMutableTreeNode rootByModule = new DefaultMutableTreeNode("By Module");\r
89 DefaultMutableTreeNode tokenNode = null;\r
90 DefaultMutableTreeNode usageNode = null;\r
91 DefaultMutableTreeNode moduleNode = null;\r
92 java.util.List<String> moduleNames = null;\r
93 int index = 0; \r
94 int usageIndex = 0;\r
95 int moduleIndex = 0;\r
8840ad58 96 Object[] objectArray = null;\r
878ddf1f 97 java.util.List<UsageInstance> usageArray = null;\r
98 UsageInstance usageInstance = null;\r
99\r
100 root.add(rootByPCD);\r
101 //\r
102 // By PCD Node\r
103 //\r
104\r
105 tokenArray = dbManager.getRecordArray();\r
106 for (index = 0; index < tokenArray.length; index ++) {\r
107 token = tokenArray[index];\r
108 ActionMessage.debug(this, token.cName);\r
109 tokenNode = new DefaultMutableTreeNode(token.cName);\r
110 tokenNode.add(new DefaultMutableTreeNode(String.format("TOKEN NUMBER: 0x%08x", token.tokenNumber)));\r
878ddf1f 111 tokenNode.add(new DefaultMutableTreeNode("TOKEN SPACE NAME: " + token.tokenSpaceName.toString()));\r
878ddf1f 112 tokenNode.add(new DefaultMutableTreeNode("DATUM TYPE: " +Token.getStringOfdatumType(token.datumType)));\r
8840ad58 113 //tokenNode.add(new DefaultMutableTreeNode("VARIABLE GUID: " + token.variableGuid.toString()));\r
878ddf1f 114\r
115 usageNode = new DefaultMutableTreeNode("PRODUCER");\r
116 tokenNode.add(usageNode);\r
117\r
878ddf1f 118\r
119 //\r
120 // Prepare consumer's leaf node\r
121 //\r
122 usageNode = new DefaultMutableTreeNode("CONSUMER");\r
123 tokenNode.add(usageNode);\r
8840ad58 124 objectArray = token.consumers.entrySet().toArray();\r
878ddf1f 125 for (usageIndex = 0; usageIndex < token.consumers.size(); usageIndex ++) {\r
8840ad58 126 usageInstance = (UsageInstance) ((Map.Entry)objectArray[usageIndex]).getValue();\r
127 usageNode.add(new DefaultMutableTreeNode(usageInstance.getPrimaryKey()));\r
878ddf1f 128 }\r
129\r
130 rootByPCD.add(tokenNode);\r
131 }\r
132\r
133 //\r
134 // BY MODULE Node\r
135 //\r
136 root.add(rootByModule);\r
137 moduleNames = dbManager.getAllModuleArray();\r
138 for (moduleIndex = 0; moduleIndex < moduleNames.size(); moduleIndex ++) {\r
139 ActionMessage.debug(this, "ModuleName:" + moduleNames.get(moduleIndex));\r
140 }\r
141 for (moduleIndex = 0; moduleIndex < moduleNames.size(); moduleIndex ++) {\r
142 moduleNode = new DefaultMutableTreeNode(moduleNames.get(moduleIndex));\r
8840ad58 143 usageArray = dbManager.getUsageInstanceArrayByKeyString(moduleNames.get(moduleIndex));\r
878ddf1f 144 for (usageIndex = 0; usageIndex < usageArray.size(); usageIndex ++) {\r
145 usageInstance = usageArray.get(usageIndex);\r
146 usageNode = new DefaultMutableTreeNode(usageInstance.parentToken.cName);\r
147 usageNode.add(new DefaultMutableTreeNode("MODULE PCD TYPE: " + Token.getStringOfpcdType(usageInstance.modulePcdType)));\r
878ddf1f 148 moduleNode.add(usageNode);\r
149 }\r
150 rootByModule.add(moduleNode);\r
151 }\r
152\r
153 databaseTree = new JTree(root);\r
154 return databaseTree;\r
155 }\r
156}\r
157\r
158/**\r
159 The adatper class for PCDDatabaseFrame. This class instance many windows message \r
160 callback function.\r
161**/\r
162class PCDDatabaseFrameAdapter extends WindowAdapter {\r
163 public void windowClosing(WindowEvent e) {\r
164 System.exit(0);\r
165 }\r
166}\r