]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/ModuleEditor/src/org/tianocore/packaging/module/ui/ModulePCDs.java
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@671 6f19259b...
[mirror_edk2.git] / Tools / Source / ModuleEditor / src / org / tianocore / packaging / module / ui / ModulePCDs.java
CommitLineData
878ddf1f 1/** @file\r
2 \r
3 The file is used to create, update PCD of MSA/MBD file\r
4 \r
5 Copyright (c) 2006, Intel Corporation\r
6 All rights reserved. This program and the accompanying materials\r
7 are licensed and made available under the terms and conditions of the BSD License\r
8 which accompanies this distribution. The full text of the license may be found at\r
9 http://opensource.org/licenses/bsd-license.php\r
10 \r
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13 \r
14 **/\r
15package org.tianocore.packaging.module.ui;\r
16\r
17import java.awt.event.ActionEvent;\r
18\r
19import javax.swing.JButton;\r
20import javax.swing.JComboBox;\r
21import javax.swing.JLabel;\r
22import javax.swing.JPanel;\r
23import javax.swing.JTextField;\r
24\r
25import org.tianocore.PCDsDocument;\r
26import org.tianocore.PcdDataTypes;\r
27import org.tianocore.PcdItemTypes;\r
28import org.tianocore.PcdUsage;\r
29import org.tianocore.common.DataValidation;\r
30import org.tianocore.common.Log;\r
31import org.tianocore.packaging.common.ui.IInternalFrame;\r
32import org.tianocore.packaging.common.ui.StarLabel;\r
33\r
34/**\r
35 The class is used to create, update PCD of MSA/MBD file\r
36 It extends IInternalFrame\r
37 \r
38 @since ModuleEditor 1.0\r
39\r
40 **/\r
41public class ModulePCDs extends IInternalFrame {\r
42\r
43 ///\r
44 /// Define class Serial Version UID\r
45 ///\r
46 private static final long serialVersionUID = 2227717658188438696L;\r
47\r
48 //\r
49 //Define class members\r
50 //\r
51 private PCDsDocument.PCDs pcds = null;\r
52\r
53 private int location = -1;\r
54\r
55 private JPanel jContentPane = null;\r
56\r
57 private JLabel jLabelItemType = null;\r
58\r
59 private JLabel jLabelC_Name = null;\r
60\r
61 private JComboBox jComboBoxItemType = null;\r
62\r
63 private JTextField jTextFieldC_Name = null;\r
64\r
65 private JLabel jLabelToken = null;\r
66\r
67 private JTextField jTextFieldToken = null;\r
68\r
69 private JLabel jLabelDefaultValue = null;\r
70\r
71 private JTextField jTextFieldDefaultValue = null;\r
72\r
73 private JLabel jLabelUsage = null;\r
74\r
75 private JComboBox jComboBoxUsage = null;\r
76\r
77 private JButton jButtonOk = null;\r
78\r
79 private JButton jButtonCancel = null;\r
80\r
81 private JLabel jLabelDatumType = null;\r
82\r
83 private JComboBox jComboBoxDatumType = null;\r
84\r
85 private StarLabel jStarLabel1 = null;\r
86\r
87 private StarLabel jStarLabel2 = null;\r
88\r
89 private StarLabel jStarLabel3 = null;\r
90\r
91 private StarLabel jStarLabel4 = null;\r
92 \r
93 /**\r
94 This method initializes jComboBoxItemType \r
95 \r
96 @return javax.swing.JComboBox jComboBoxItemType\r
97 \r
98 **/\r
99 private JComboBox getJComboBoxItemType() {\r
100 if (jComboBoxItemType == null) {\r
101 jComboBoxItemType = new JComboBox();\r
102 jComboBoxItemType.setBounds(new java.awt.Rectangle(160, 110, 320, 20));\r
103 }\r
104 return jComboBoxItemType;\r
105 }\r
106\r
107 /**\r
108 This method initializes jTextFieldC_Name \r
109 \r
110 @return javax.swing.JTextField jTextFieldC_Name\r
111 \r
112 **/\r
113 private JTextField getJTextFieldC_Name() {\r
114 if (jTextFieldC_Name == null) {\r
115 jTextFieldC_Name = new JTextField();\r
116 jTextFieldC_Name.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
117 }\r
118 return jTextFieldC_Name;\r
119 }\r
120\r
121 /**\r
122 This method initializes jTextFieldToken \r
123 \r
124 @return javax.swing.JTextField jTextFieldToken\r
125 \r
126 **/\r
127 private JTextField getJTextFieldToken() {\r
128 if (jTextFieldToken == null) {\r
129 jTextFieldToken = new JTextField();\r
130 jTextFieldToken.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
131 }\r
132 return jTextFieldToken;\r
133 }\r
134\r
135 /**\r
136 This method initializes jTextFieldDefaultValue \r
137 \r
138 @return javax.swing.JTextField jTextFieldDefaultValue\r
139 \r
140 **/\r
141 private JTextField getJTextFieldDefaultValue() {\r
142 if (jTextFieldDefaultValue == null) {\r
143 jTextFieldDefaultValue = new JTextField();\r
144 jTextFieldDefaultValue.setBounds(new java.awt.Rectangle(160, 85, 320, 20));\r
145 }\r
146 return jTextFieldDefaultValue;\r
147 }\r
148\r
149 /**\r
150 This method initializes jComboBoxUsage \r
151 \r
152 @return javax.swing.JComboBox jComboBoxUsage\r
153 \r
154 **/\r
155 private JComboBox getJComboBoxUsage() {\r
156 if (jComboBoxUsage == null) {\r
157 jComboBoxUsage = new JComboBox();\r
158 jComboBoxUsage.setBounds(new java.awt.Rectangle(160, 135, 320, 20));\r
159 }\r
160 return jComboBoxUsage;\r
161 }\r
162\r
163 /**\r
164 This method initializes jButtonOk \r
165 \r
166 @return javax.swing.JButton jButtonOk\r
167 \r
168 **/\r
169 private JButton getJButtonOk() {\r
170 if (jButtonOk == null) {\r
171 jButtonOk = new JButton();\r
172 jButtonOk.setText("OK");\r
173 jButtonOk.setBounds(new java.awt.Rectangle(280, 290, 90, 20));\r
174 jButtonOk.addActionListener(this);\r
175 }\r
176 return jButtonOk;\r
177 }\r
178\r
179 /**\r
180 This method initializes jButtonCancel \r
181 \r
182 @return javax.swing.JButton jButtonCancel\r
183 \r
184 **/\r
185 private JButton getJButtonCancel() {\r
186 if (jButtonCancel == null) {\r
187 jButtonCancel = new JButton();\r
188 jButtonCancel.setText("Cancel");\r
189 jButtonCancel.setBounds(new java.awt.Rectangle(390, 290, 90, 20));\r
190 jButtonCancel.addActionListener(this);\r
191 }\r
192 return jButtonCancel;\r
193 }\r
194\r
195 /**\r
196 This method initializes jTextFieldDatumType \r
197 \r
198 @return javax.swing.JTextField jComboBoxDatumType\r
199 \r
200 **/\r
201 private JComboBox getJComboBoxDatumType() {\r
202 if (jComboBoxDatumType == null) {\r
203 jComboBoxDatumType = new JComboBox();\r
204 jComboBoxDatumType.setBounds(new java.awt.Rectangle(160, 60, 320, 20));\r
205 }\r
206 return jComboBoxDatumType;\r
207 }\r
208\r
209 public static void main(String[] args) {\r
210\r
211 }\r
212\r
213 /**\r
214 This is the default constructor\r
215 \r
216 **/\r
217 public ModulePCDs() {\r
218 super();\r
219 init();\r
220 this.setVisible(true);\r
221 }\r
222\r
223 /**\r
224 This is the override edit constructor\r
225 \r
226 @param inPcds The input data of PCDsDocument.PCDs\r
227 \r
228 **/\r
229 public ModulePCDs(PCDsDocument.PCDs inPcds) {\r
230 super();\r
231 init(inPcds);\r
232 this.setVisible(true);\r
233 }\r
234\r
235 /**\r
236 This is the override edit constructor\r
237 \r
238 @param inPcds The input data of PCDsDocument.PCDs\r
239 @param type The input data of node type\r
240 @param index The input data of node index\r
241 \r
242 **/\r
243 public ModulePCDs(PCDsDocument.PCDs inPcds, int type, int index) {\r
244 super();\r
245 init(inPcds, type, index);\r
246 this.setVisible(true);\r
247 }\r
248\r
249 /**\r
250 This method initializes this\r
251 \r
252 @param inPcds The input data of PCDsDocument.PCDs\r
253 \r
254 **/\r
255 private void init(PCDsDocument.PCDs inPcds) {\r
256 init();\r
257 this.setPcds(inPcds);\r
258 }\r
259\r
260 /**\r
261 This method initializes this\r
262 Fill values to all fields if these values are not empty\r
263 \r
264 @param inPcds The input data of PCDsDocument.PCDs\r
265 @param type The input data of node type\r
266 @param index The input data of node index\r
267 \r
268 **/\r
269 private void init(PCDsDocument.PCDs inPcds, int type, int index) {\r
270 init(inPcds);\r
271 this.location = index;\r
272 if (this.pcds.getPcdDataList().size() > 0) {\r
273 if (this.pcds.getPcdDataArray(index).getCName() != null) {\r
274 this.jTextFieldC_Name.setText(this.pcds.getPcdDataArray(index).getCName());\r
275 }\r
276 if (this.pcds.getPcdDataArray(index).getToken() != null) {\r
277 this.jTextFieldToken.setText(this.pcds.getPcdDataArray(index).getToken());\r
278 }\r
279 if (this.pcds.getPcdDataArray(index).getDatumType() != null) {\r
280 this.jComboBoxDatumType.setSelectedItem(this.pcds.getPcdDataArray(index).getDatumType().toString());\r
281 }\r
282 if (this.pcds.getPcdDataArray(index).getDefaultValue() != null) {\r
283 this.jTextFieldDefaultValue.setText(this.pcds.getPcdDataArray(index).getDefaultValue());\r
284 }\r
285 if (this.pcds.getPcdDataArray(index).getPcdUsage() != null) {\r
286 this.jComboBoxUsage.setSelectedItem(this.pcds.getPcdDataArray(index).getPcdUsage().toString());\r
287 }\r
288 if (this.pcds.getPcdDataArray(index).getItemType() != null) {\r
289 this.jComboBoxItemType.setSelectedItem(this.pcds.getPcdDataArray(index).getItemType().toString());\r
290 }\r
291 }\r
292 }\r
293\r
294 /**\r
295 This method initializes this\r
296 \r
297 **/\r
298 private void init() {\r
299 this.setSize(500, 515);\r
300 this.setContentPane(getJContentPane());\r
301 this.setTitle("PCDs");\r
302 initFrame();\r
303 this.setViewMode(false);\r
304 }\r
305\r
306 /**\r
307 Disable all components when the mode is view\r
308 \r
309 @param isView true - The view mode; false - The non-view mode\r
310 \r
311 **/\r
312 public void setViewMode(boolean isView) {\r
313 this.jButtonOk.setVisible(false);\r
314 this.jButtonCancel.setVisible(false);\r
315 if (isView) {\r
316 this.jTextFieldC_Name.setEnabled(!isView);\r
317 this.jTextFieldToken.setEnabled(!isView);\r
318 this.jComboBoxDatumType.setEnabled(!isView);\r
319 this.jTextFieldDefaultValue.setEnabled(!isView);\r
320 this.jComboBoxUsage.setEnabled(!isView);\r
321 this.jComboBoxItemType.setEnabled(!isView);\r
322 }\r
323 }\r
324\r
325 /**\r
326 This method initializes jContentPane\r
327 \r
328 @return javax.swing.JPanel jContentPane\r
329 \r
330 **/\r
331 private JPanel getJContentPane() {\r
332 if (jContentPane == null) {\r
333 jLabelDatumType = new JLabel();\r
334 jLabelDatumType.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
335 jLabelDatumType.setText("Datum Type");\r
336 jLabelC_Name = new JLabel();\r
337 jLabelC_Name.setText("C_Name");\r
338 jLabelC_Name.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
339 jLabelUsage = new JLabel();\r
340 jLabelUsage.setText("Usage");\r
341 jLabelUsage.setBounds(new java.awt.Rectangle(15, 135, 140, 20));\r
342 jLabelDefaultValue = new JLabel();\r
343 jLabelDefaultValue.setText("Default Value");\r
344 jLabelDefaultValue.setBounds(new java.awt.Rectangle(15, 85, 140, 20));\r
345 jLabelToken = new JLabel();\r
346 jLabelToken.setText("Token");\r
347 jLabelToken.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
348 jLabelItemType = new JLabel();\r
349 jLabelItemType.setText("Item Type");\r
350 jLabelItemType.setBounds(new java.awt.Rectangle(15, 110, 140, 20));\r
351 jContentPane = new JPanel();\r
352 jContentPane.setLayout(null);\r
353 jContentPane.setSize(new java.awt.Dimension(480,336));\r
354 jContentPane.add(jLabelItemType, null);\r
355 jContentPane.add(jLabelC_Name, null);\r
356 jContentPane.add(getJTextFieldC_Name(), null);\r
357 jContentPane.add(jLabelToken, null);\r
358 jContentPane.add(getJTextFieldToken(), null);\r
359 jContentPane.add(jLabelDefaultValue, null);\r
360 jContentPane.add(getJTextFieldDefaultValue(), null);\r
361 jContentPane.add(jLabelUsage, null);\r
362 jContentPane.add(getJComboBoxUsage(), null);\r
363 jContentPane.add(getJButtonOk(), null);\r
364 jContentPane.add(getJButtonCancel(), null);\r
365 jContentPane.add(getJComboBoxItemType(), null);\r
366 jContentPane.add(jLabelDatumType, null);\r
367 jContentPane.add(getJComboBoxDatumType(), null);\r
368\r
369 jStarLabel1 = new StarLabel();\r
370 jStarLabel1.setLocation(new java.awt.Point(0, 10));\r
371 jStarLabel2 = new StarLabel();\r
372 jStarLabel2.setLocation(new java.awt.Point(0, 35));\r
373 jStarLabel3 = new StarLabel();\r
374 jStarLabel3.setLocation(new java.awt.Point(0, 60));\r
375 jStarLabel4 = new StarLabel();\r
376 jStarLabel4.setLocation(new java.awt.Point(0, 110));\r
377\r
378 jContentPane.add(jStarLabel1, null);\r
379 jContentPane.add(jStarLabel2, null);\r
380 jContentPane.add(jStarLabel3, null);\r
381 jContentPane.add(jStarLabel4, null);\r
382 }\r
383 return jContentPane;\r
384 }\r
385\r
386 /**\r
387 This method initializes Usage type, Item type and Datum type\r
388 \r
389 **/\r
390 private void initFrame() {\r
391 jComboBoxUsage.addItem("ALWAYS_CONSUMED");\r
392 jComboBoxUsage.addItem("SOMETIMES_CONSUMED");\r
393 jComboBoxUsage.addItem("ALWAYS_PRODUCED");\r
394 jComboBoxUsage.addItem("SOMETIMES_PRODUCED");\r
395 jComboBoxUsage.addItem("DEFAULT");\r
396\r
397 jComboBoxItemType.addItem("FEATURE_FLAG");\r
398 jComboBoxItemType.addItem("FIXED_AT_BUILD");\r
399 jComboBoxItemType.addItem("PATCHABLE_IN_MODULE");\r
400 jComboBoxItemType.addItem("DYNAMIC");\r
401 jComboBoxItemType.addItem("DYNAMIC_EX");\r
402\r
403 jComboBoxDatumType.addItem("UINT8");\r
404 jComboBoxDatumType.addItem("UINT16");\r
405 jComboBoxDatumType.addItem("UINT32");\r
406 jComboBoxDatumType.addItem("UINT64");\r
407 jComboBoxDatumType.addItem("VOID*");\r
408 jComboBoxDatumType.addItem("BOOLEAN");\r
409 }\r
410\r
411 /* (non-Javadoc)\r
412 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
413 *\r
414 * Override actionPerformed to listen all actions\r
415 * \r
416 */\r
417 public void actionPerformed(ActionEvent arg0) {\r
418 if (arg0.getSource() == jButtonOk) {\r
419 this.setEdited(true);\r
420 this.save();\r
421 this.dispose();\r
422 }\r
423 if (arg0.getSource() == jButtonCancel) {\r
424 this.dispose();\r
425 }\r
426 }\r
427\r
428 /**\r
429 Get PCDsDocument.PCDs\r
430 \r
431 @return PCDsDocument.PCDs\r
432 \r
433 **/\r
434 public PCDsDocument.PCDs getPcds() {\r
435 return pcds;\r
436 }\r
437\r
438 /**\r
439 Set PCDsDocument.PCDs\r
440 \r
441 @param pcds The input data of PCDsDocument.PCDs\r
442 \r
443 **/\r
444 public void setPcds(PCDsDocument.PCDs pcds) {\r
445 this.pcds = pcds;\r
446 }\r
447\r
448 /**\r
449 Data validation for all fields\r
450 \r
451 @retval true - All datas are valid\r
452 @retval false - At least one data is invalid\r
453 \r
454 **/\r
455 public boolean check() {\r
456 //\r
457 // Check if all required fields are not empty\r
458 //\r
459 if (isEmpty(this.jTextFieldC_Name.getText())) {\r
460 Log.err("C_Name couldn't be empty");\r
461 return false;\r
462 }\r
463 if (isEmpty(this.jTextFieldToken.getText())) {\r
464 Log.err("Token couldn't be empty");\r
465 return false;\r
466 }\r
467\r
468 //\r
469 // Check if all fields have correct data types \r
470 //\r
471 if (!isEmpty(this.jTextFieldC_Name.getText()) && !DataValidation.isCName(this.jTextFieldC_Name.getText())) {\r
472 Log.err("Incorrect data type for C_Name");\r
473 return false;\r
474 }\r
475 if (!isEmpty(this.jTextFieldToken.getText()) && !DataValidation.isToken(this.jTextFieldToken.getText())) {\r
476 Log.err("Incorrect data type for Token");\r
477 return false;\r
478 }\r
479 \r
480 return true;\r
481 }\r
482\r
483 /**\r
484 Save all components of PCDs\r
485 if exists pcds, set the value directly\r
486 if not exists pcds, new an instance first\r
487 \r
488 **/\r
489 public void save() {\r
490 try {\r
491 if (this.pcds == null) {\r
492 pcds = PCDsDocument.PCDs.Factory.newInstance();\r
493 }\r
494 PCDsDocument.PCDs.PcdData pcdData = PCDsDocument.PCDs.PcdData.Factory.newInstance();\r
495 if (!isEmpty(this.jTextFieldC_Name.getText())) {\r
496 pcdData.setCName(this.jTextFieldC_Name.getText());\r
497 }\r
498 if (!isEmpty(this.jTextFieldToken.getText())) {\r
499 pcdData.setToken(this.jTextFieldToken.getText());\r
500 }\r
501 pcdData.setDatumType(PcdDataTypes.Enum.forString(this.jComboBoxDatumType.getSelectedItem().toString()));\r
502 if (!isEmpty(this.jTextFieldDefaultValue.getText())) {\r
503 pcdData.setDefaultValue(this.jTextFieldDefaultValue.getText());\r
504 }\r
505 pcdData.setItemType(PcdItemTypes.Enum.forString(this.jComboBoxItemType.getSelectedItem().toString()));\r
506 pcdData.setPcdUsage(PcdUsage.Enum.forString(this.jComboBoxUsage.getSelectedItem().toString()));\r
507 \r
508\r
509 if (location > -1) {\r
510 pcds.setPcdDataArray(location, pcdData);\r
511 } else {\r
512 pcds.addNewPcdData();\r
513 pcds.setPcdDataArray(pcds.getPcdDataList().size() - 1, pcdData);\r
514 }\r
515 } catch (Exception e) {\r
516 Log.err("Update Hobs", e.getMessage());\r
517 }\r
518 }\r
519}\r