]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/GenBuild/org/tianocore/build/pcd/ui/PCDDatabaseFrame.java
Tip break because EdkFatPkg was introduced into FrameworkDatabase.db, But EdkFatPkg...
[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
20\r
21import javax.swing.*;\r
22import javax.swing.tree.DefaultMutableTreeNode;\r
23\r
24import org.tianocore.build.pcd.action.ActionMessage;\r
25import org.tianocore.build.pcd.entity.MemoryDatabaseManager;\r
26import org.tianocore.build.pcd.entity.Token;\r
27import org.tianocore.build.pcd.entity.UsageInstance;\r
28\r
29/**\r
30 The class is the frame class for displaying PCD database in tree method.\r
31**/\r
32public class PCDDatabaseFrame extends JFrame {\r
33 static final long serialVersionUID = -7034897190740068939L;\r
34 ///\r
35 /// Database instance \r
36 ///\r
37 private MemoryDatabaseManager dbManager;\r
38 ///\r
39 /// The token and module tree\r
40 ///\r
41 private JTree databaseTree;\r
42\r
43 /**\r
44 Constructure function. \r
45 \r
46 Create the UI component and display frame.\r
47\r
48 @param dbManager databaase manager instance.\r
49 **/\r
50 public PCDDatabaseFrame(MemoryDatabaseManager dbManager) {\r
51 if (dbManager != null) {\r
52 this.dbManager = dbManager;\r
53 }\r
54 //\r
55 // Put the frame into center of desktop.\r
56 //\r
57 setLocation(100, 100);\r
58 initializeComponent();\r
59\r
60 setTitle("PCD View Tool");\r
61 pack();\r
62 setVisible(true);\r
63 }\r
64\r
65 /**\r
66 Initliaze the UI component in Display frame.\r
67 **/\r
68 public void initializeComponent() {\r
69 JScrollPane scrollPane = new JScrollPane();\r
70 Container contentPane = getContentPane();\r
71\r
72 contentPane.setLayout(new BorderLayout());\r
73 scrollPane.setViewportView(initializeTree());\r
74 contentPane.add(scrollPane);\r
75\r
76 addWindowListener(new PCDDatabaseFrameAdapter());\r
77 }\r
78\r
79 /**\r
80 Initiliaze the TREE control.\r
81 **/\r
82 public JTree initializeTree() {\r
83 Token[] tokenArray = null;\r
84 Token token = null;\r
85 DefaultMutableTreeNode root = new DefaultMutableTreeNode(dbManager.getLogFileName());\r
86 DefaultMutableTreeNode rootByPCD = new DefaultMutableTreeNode("By PCD");\r
87 DefaultMutableTreeNode rootByModule = new DefaultMutableTreeNode("By Module");\r
88 DefaultMutableTreeNode tokenNode = null;\r
89 DefaultMutableTreeNode usageNode = null;\r
90 DefaultMutableTreeNode moduleNode = null;\r
91 java.util.List<String> moduleNames = null;\r
92 int index = 0; \r
93 int usageIndex = 0;\r
94 int moduleIndex = 0;\r
95 java.util.List<UsageInstance> usageArray = null;\r
96 UsageInstance usageInstance = null;\r
97\r
98 root.add(rootByPCD);\r
99 //\r
100 // By PCD Node\r
101 //\r
102\r
103 tokenArray = dbManager.getRecordArray();\r
104 for (index = 0; index < tokenArray.length; index ++) {\r
105 token = tokenArray[index];\r
106 ActionMessage.debug(this, token.cName);\r
107 tokenNode = new DefaultMutableTreeNode(token.cName);\r
108 tokenNode.add(new DefaultMutableTreeNode(String.format("TOKEN NUMBER: 0x%08x", token.tokenNumber)));\r
109 tokenNode.add(new DefaultMutableTreeNode(String.format("ASSIGNED TOKEN NUMBER: 0x%08x", token.assignedtokenNumber)));\r
110 tokenNode.add(new DefaultMutableTreeNode("TOKEN SPACE NAME: " + token.tokenSpaceName.toString()));\r
111 tokenNode.add(new DefaultMutableTreeNode("ASSIGNED TOKEN SPACE NAME: " + token.assignedtokenSpaceName.toString()));\r
112 tokenNode.add(new DefaultMutableTreeNode("PCD TYPE: " + Token.getStringOfpcdType(token.pcdType)));\r
113 tokenNode.add(new DefaultMutableTreeNode("DATUM TYPE: " +Token.getStringOfdatumType(token.datumType)));\r
114 tokenNode.add(new DefaultMutableTreeNode("DATUM: " + token.datum.toString()));\r
115 tokenNode.add(new DefaultMutableTreeNode("HIIENABLE: " +(token.hiiEnabled?"true":"false")));\r
116 tokenNode.add(new DefaultMutableTreeNode("VARIABLE NAME: " + token.variableName));\r
117 tokenNode.add(new DefaultMutableTreeNode("VARIABLE GUID: " + token.variableGuid.toString()));\r
118 tokenNode.add(new DefaultMutableTreeNode("SKUENABLE: " +(token.skuEnabled?"true":"false")));\r
119 tokenNode.add(new DefaultMutableTreeNode("SKUDATA ARRAY ENABLE: " +(token.skuDataArrayEnabled?"true":"false")));\r
120 tokenNode.add(new DefaultMutableTreeNode(String.format("SKUID: %d", token.skuId)));\r
121 tokenNode.add(new DefaultMutableTreeNode(String.format("MAX SKU COUNT: %d", token.maxSkuCount)));\r
122 tokenNode.add(new DefaultMutableTreeNode("VPDENABLE: " +(token.vpdEnabled?"true":"false")));\r
123\r
124 usageNode = new DefaultMutableTreeNode("PRODUCER");\r
125 tokenNode.add(usageNode);\r
126\r
127 //\r
128 // Prepare producer's leaf node\r
129 //\r
130\r
131 for (usageIndex = 0; usageIndex < token.producers.size(); usageIndex ++) {\r
132 usageNode.add(new DefaultMutableTreeNode(token.producers.get(usageIndex).moduleName));\r
133 }\r
134\r
135 //\r
136 // Prepare consumer's leaf node\r
137 //\r
138 usageNode = new DefaultMutableTreeNode("CONSUMER");\r
139 tokenNode.add(usageNode);\r
140\r
141 for (usageIndex = 0; usageIndex < token.consumers.size(); usageIndex ++) {\r
142 usageNode.add(new DefaultMutableTreeNode(token.consumers.get(usageIndex).moduleName));\r
143 }\r
144\r
145 rootByPCD.add(tokenNode);\r
146 }\r
147\r
148 //\r
149 // BY MODULE Node\r
150 //\r
151 root.add(rootByModule);\r
152 moduleNames = dbManager.getAllModuleArray();\r
153 for (moduleIndex = 0; moduleIndex < moduleNames.size(); moduleIndex ++) {\r
154 ActionMessage.debug(this, "ModuleName:" + moduleNames.get(moduleIndex));\r
155 }\r
156 for (moduleIndex = 0; moduleIndex < moduleNames.size(); moduleIndex ++) {\r
157 moduleNode = new DefaultMutableTreeNode(moduleNames.get(moduleIndex));\r
158 usageArray = dbManager.getUsageInstanceArrayByModuleName(moduleNames.get(moduleIndex));\r
159 for (usageIndex = 0; usageIndex < usageArray.size(); usageIndex ++) {\r
160 usageInstance = usageArray.get(usageIndex);\r
161 usageNode = new DefaultMutableTreeNode(usageInstance.parentToken.cName);\r
162 usageNode.add(new DefaultMutableTreeNode("MODULE PCD TYPE: " + Token.getStringOfpcdType(usageInstance.modulePcdType)));\r
163 usageNode.add(new DefaultMutableTreeNode("HELP TEXT: " + usageInstance.helpTextInMSA));\r
164 usageNode.add(new DefaultMutableTreeNode("IS INHERIT: " +(usageInstance.isInherit?"true":"false")));\r
165 usageNode.add(new DefaultMutableTreeNode("USAGE: " + Token.getStringOfUsage(usageInstance.usage)));\r
166 moduleNode.add(usageNode);\r
167 }\r
168 rootByModule.add(moduleNode);\r
169 }\r
170\r
171 databaseTree = new JTree(root);\r
172 return databaseTree;\r
173 }\r
174}\r
175\r
176/**\r
177 The adatper class for PCDDatabaseFrame. This class instance many windows message \r
178 callback function.\r
179**/\r
180class PCDDatabaseFrameAdapter extends WindowAdapter {\r
181 public void windowClosing(WindowEvent e) {\r
182 System.exit(0);\r
183 }\r
184}\r