]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/PackageEditor/src/org/tianocore/packaging/UpdatePCD.java
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@22 6f19259b...
[mirror_edk2.git] / Tools / Source / PackageEditor / src / org / tianocore / packaging / UpdatePCD.java
CommitLineData
878ddf1f 1/** @file\r
2 Java class UpdatePCD is GUI for update PCD definitions in spd file.\r
3 \r
4Copyright (c) 2006, Intel Corporation\r
5All rights reserved. This program and the accompanying materials\r
6are licensed and made available under the terms and conditions of the BSD License\r
7which accompanies this distribution. The full text of the license may be found at\r
8http://opensource.org/licenses/bsd-license.php\r
9\r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12**/\r
13package org.tianocore.packaging;\r
14\r
15import javax.swing.DefaultCellEditor;\r
16import javax.swing.JComboBox;\r
17import javax.swing.JPanel;\r
18import javax.swing.JFrame;\r
19import javax.swing.JLabel;\r
20import javax.swing.JTextField;\r
21import javax.swing.JButton;\r
22\r
23import javax.swing.JScrollPane;\r
24import javax.swing.JTable;\r
25import javax.swing.table.*;\r
26\r
27import org.tianocore.common.Tools;\r
28\r
29import java.awt.event.ActionEvent;\r
30import java.awt.event.ActionListener;\r
31import java.io.*;\r
32\r
33/**\r
34 GUI for update PCD definitions in spd file\r
35 \r
36 @since PackageEditor 1.0\r
37**/\r
38public class UpdatePCD extends JFrame implements ActionListener {\r
39\r
40 private JPanel jContentPane = null;\r
41\r
42 private SpdFileContents sfc = null;\r
43\r
44 private JButton jButtonOk = null;\r
45\r
46 private JButton jButtonCancel = null;\r
47\r
48 private DefaultTableModel model = null;\r
49\r
50 private String[][] saa = null;\r
51\r
52 private JScrollPane jScrollPane = null;\r
53\r
54 private JTable jTable = null;\r
55\r
56 private JButton jButton = null;\r
57\r
58 /**\r
59 This is the default constructor\r
60 **/\r
61 public UpdatePCD(SpdFileContents sfc) {\r
62 super();\r
63 this.sfc = sfc;\r
64 initialize();\r
65\r
66 }\r
67\r
68 public void actionPerformed(ActionEvent arg0) {\r
69 if (arg0.getSource() == jButtonOk) {\r
70 this.save();\r
71 this.dispose();\r
72\r
73 }\r
74 if (arg0.getSource() == jButtonCancel) {\r
75 this.dispose();\r
76\r
77 }\r
78 if (arg0.getSource() == jButton) {\r
79 String[] o = { "FEATURE_FLAG", "", "", "UINT8", "0" };\r
80 model.addRow(o);\r
81 }\r
82\r
83 }\r
84\r
85 /**\r
86 This method initializes this\r
87 \r
88 @return void\r
89 **/\r
90 private void initialize() {\r
91 this.setSize(916, 486);\r
92 this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);\r
93 this.setTitle("Update PCD Definitions");\r
94 this.setContentPane(getJContentPane());\r
95 }\r
96\r
97 /**\r
98 This method initializes jContentPane\r
99 \r
100 @return javax.swing.JPanel\r
101 **/\r
102 private JPanel getJContentPane() {\r
103 if (jContentPane == null) {\r
104 jContentPane = new JPanel();\r
105 jContentPane.setLayout(null);\r
106 jContentPane.add(getJButtonOk(), null);\r
107 jContentPane.add(getJButtonCancel(), null);\r
108 jContentPane.add(getJScrollPane(), null);\r
109 jContentPane.add(getJButton(), null);\r
110 }\r
111 return jContentPane;\r
112 }\r
113\r
114 /**\r
115 Remove original Pcd definitions before saving updated ones\r
116 **/\r
117 protected void save() {\r
ee19dec6 118 if (jTable.isEditing()) {\r
119 jTable.getCellEditor().stopCellEditing();\r
120 }\r
878ddf1f 121 sfc.removeSpdPcdDefinition();\r
122 int rowCount = model.getRowCount();\r
123 int i = 0;\r
124 while (i < rowCount) {\r
125 String cName = null;\r
126 if (model.getValueAt(i, 1) != null) {\r
127 cName = model.getValueAt(i, 1).toString();\r
128 }\r
129 String token = null;\r
130 if (model.getValueAt(i, 2) != null) {\r
131 token = model.getValueAt(i, 2).toString();\r
132 }\r
133 String defaultVal = null;\r
134 if (model.getValueAt(i, 4) != null) {\r
135 defaultVal = model.getValueAt(i, 4).toString();\r
136 }\r
137 sfc.genSpdPcdDefinitions(model.getValueAt(i, 0).toString(), cName, token,\r
138 model.getValueAt(i, 3).toString(), null, null, null, null, null, null, defaultVal);\r
139 i++;\r
140 }\r
141 }\r
142\r
143 /**\r
144 This method initializes jButtonOk \r
145 \r
146 @return javax.swing.JButton \r
147 **/\r
148 private JButton getJButtonOk() {\r
149 if (jButtonOk == null) {\r
150 jButtonOk = new JButton();\r
151 jButtonOk.setText("Ok");\r
152 jButtonOk.setSize(new java.awt.Dimension(84, 20));\r
153 jButtonOk.setLocation(new java.awt.Point(605, 404));\r
154 jButtonOk.addActionListener(this);\r
155 }\r
156 return jButtonOk;\r
157 }\r
158\r
159 /**\r
160 This method initializes jButtonCancel \r
161 \r
162 @return javax.swing.JButton \r
163 **/\r
164 private JButton getJButtonCancel() {\r
165 if (jButtonCancel == null) {\r
166 jButtonCancel = new JButton();\r
167 jButtonCancel.setText("Cancel");\r
168 jButtonCancel.setSize(new java.awt.Dimension(82, 20));\r
169 jButtonCancel.setLocation(new java.awt.Point(712, 404));\r
170 jButtonCancel.addActionListener(this);\r
171 }\r
172 return jButtonCancel;\r
173 }\r
174\r
175 /**\r
176 This method initializes jScrollPane \r
177 \r
178 @return javax.swing.JScrollPane \r
179 **/\r
180 private JScrollPane getJScrollPane() {\r
181 if (jScrollPane == null) {\r
182 jScrollPane = new JScrollPane();\r
183 jScrollPane.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);\r
184 jScrollPane.setBounds(new java.awt.Rectangle(51, 62, 782, 304));\r
185 jScrollPane.setViewportView(getJTable2());\r
186 }\r
187 return jScrollPane;\r
188 }\r
189\r
190 /**\r
191 This method initializes jTable \r
192 \r
193 @return javax.swing.JTable \r
194 **/\r
195 private JTable getJTable2() {\r
196 if (jTable == null) {\r
197 model = new DefaultTableModel();\r
198 jTable = new JTable(model);\r
199 jTable.setRowHeight(20);\r
200 model.addColumn("ItemType");\r
201 model.addColumn("C_Name");\r
202 model.addColumn("Token");\r
203 model.addColumn("DataType");\r
204 model.addColumn("DefaultValue");\r
205 //\r
206 // Using combobox to display ItemType in table\r
207 //\r
208 JComboBox jComboBoxItemType = new JComboBox();\r
209 jComboBoxItemType.addItem("FEATURE_FLAG");\r
210 jComboBoxItemType.addItem("FIXED_AT_BUILD");\r
211 jComboBoxItemType.addItem("PATCHABLE_IN_MODULE");\r
212 jComboBoxItemType.addItem("DYNAMIC");\r
213 jComboBoxItemType.addItem("DYNAMIC_EX");\r
214 TableColumn itemTypeColumn = jTable.getColumnModel().getColumn(0);\r
215 itemTypeColumn.setCellEditor(new DefaultCellEditor(jComboBoxItemType));\r
216 //\r
217 // Using combobox to display data type in table\r
218 //\r
219 JComboBox jComboBoxDataType = new JComboBox();\r
220 jComboBoxDataType.addItem("UINT8");\r
221 jComboBoxDataType.addItem("UINT16");\r
222 jComboBoxDataType.addItem("UINT32");\r
223 jComboBoxDataType.addItem("UINT64");\r
224 jComboBoxDataType.addItem("VOID*");\r
225 jComboBoxDataType.addItem("BOOLEAN");\r
226 TableColumn dataTypeColumn = jTable.getColumnModel().getColumn(3);\r
227 dataTypeColumn.setCellEditor(new DefaultCellEditor(jComboBoxDataType));\r
228\r
229 if (sfc.getSpdPcdDefinitionCount() == 0) {\r
230\r
231 return jTable;\r
232 }\r
233 saa = new String[sfc.getSpdPcdDefinitionCount()][5];\r
234 sfc.getSpdPcdDefinitions(saa);\r
235 int i = 0;\r
236 while (i < saa.length) {\r
237 model.addRow(saa[i]);\r
238 i++;\r
239 }\r
240\r
241 }\r
242 return jTable;\r
243 }\r
244\r
245 /**\r
246 This method initializes jButton \r
247 \r
248 @return javax.swing.JButton \r
249 **/\r
250 private JButton getJButton() {\r
251 if (jButton == null) {\r
252 jButton = new JButton();\r
253 jButton.setBounds(new java.awt.Rectangle(499, 404, 77, 20));\r
254 jButton.setText("Insert");\r
255 jButton.addActionListener(this);\r
256 }\r
257 return jButton;\r
258 }\r
259} // @jve:decl-index=0:visual-constraint="11,7"\r