]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/ModuleEditor/src/org/tianocore/packaging/module/ui/ModuleHobs.java
Initial import.
[mirror_edk2.git] / Tools / Source / ModuleEditor / src / org / tianocore / packaging / module / ui / ModuleHobs.java
CommitLineData
878ddf1f 1/** @file\r
2 \r
3 The file is used to create, update Hob 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.JRadioButton;\r
24import javax.swing.JTextField;\r
25\r
26import org.tianocore.GuidDocument;\r
27import org.tianocore.HobTypes;\r
28import org.tianocore.HobUsage;\r
29import org.tianocore.HobsDocument;\r
30import org.tianocore.common.DataValidation;\r
31import org.tianocore.common.Log;\r
32import org.tianocore.common.Tools;\r
33import org.tianocore.packaging.common.ui.IInternalFrame;\r
34import org.tianocore.packaging.common.ui.StarLabel;\r
35\r
36/**\r
37 The class is used to create, update Hob of MSA/MBD file\r
38 It extends IInternalFrame\r
39 \r
40 @since ModuleEditor 1.0\r
41\r
42 **/\r
43public class ModuleHobs extends IInternalFrame {\r
44\r
45 ///\r
46 /// Define class Serial Version UID\r
47 ///\r
48 private static final long serialVersionUID = -553473437579358325L;\r
49\r
50 //\r
51 //Define class members\r
52 //\r
53 private HobsDocument.Hobs hobs = null;\r
54\r
55 private int location = -1;\r
56\r
57 private JPanel jContentPane = null;\r
58\r
59 private JLabel jLabel = null;\r
60\r
61 private JTextField jTextFieldC_Name = null;\r
62\r
63 private JLabel jLabelGuid = null;\r
64\r
65 private JTextField jTextFieldGuid = null;\r
66\r
67 private JLabel jLabelName = null;\r
68\r
69 private JTextField jTextFieldName = null;\r
70\r
71 private JLabel jLabelUsage = null;\r
72\r
73 private JLabel jLabelHobType = null;\r
74\r
75 private JComboBox jComboBoxUsage = null;\r
76\r
77 private JComboBox jComboBoxHobType = null;\r
78\r
79 private JLabel jLabelHobEnabled = null;\r
80\r
81 private JRadioButton jRadioButtonHobEnable = null;\r
82\r
83 private JRadioButton jRadioButtonHobDisable = null;\r
84\r
85 private JButton jButtonOk = null;\r
86\r
87 private JButton jButtonCancel = null;\r
88\r
89 private JButton jButtonGenerateGuid = null;\r
90\r
91 private JLabel jLabelOverrideID = null;\r
92\r
93 private JTextField jTextFieldOverrideID = null;\r
94\r
95 private StarLabel jStarLabel1 = null;\r
96\r
97 /**\r
98 This method initializes jTextField \r
99 \r
100 @return javax.swing.JTextField jTextFieldC_Name\r
101 \r
102 **/\r
103 private JTextField getJTextFieldC_Name() {\r
104 if (jTextFieldC_Name == null) {\r
105 jTextFieldC_Name = new JTextField();\r
106 jTextFieldC_Name.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
107 }\r
108 return jTextFieldC_Name;\r
109 }\r
110\r
111 /**\r
112 This method initializes jTextField \r
113 \r
114 @return javax.swing.JTextField jTextFieldGuid\r
115 \r
116 **/\r
117 private JTextField getJTextFieldGuid() {\r
118 if (jTextFieldGuid == null) {\r
119 jTextFieldGuid = new JTextField();\r
120 jTextFieldGuid.setBounds(new java.awt.Rectangle(160, 60, 240, 20));\r
121 }\r
122 return jTextFieldGuid;\r
123 }\r
124\r
125 /**\r
126 This method initializes jTextFieldName \r
127 \r
128 @return javax.swing.JTextField jTextFieldName\r
129 \r
130 **/\r
131 private JTextField getJTextFieldName() {\r
132 if (jTextFieldName == null) {\r
133 jTextFieldName = new JTextField();\r
134 jTextFieldName.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
135 }\r
136 return jTextFieldName;\r
137 }\r
138\r
139 /**\r
140 This method initializes jComboBoxUsage \r
141 \r
142 @return javax.swing.JComboBox jComboBoxUsage\r
143 \r
144 **/\r
145 private JComboBox getJComboBoxUsage() {\r
146 if (jComboBoxUsage == null) {\r
147 jComboBoxUsage = new JComboBox();\r
148 jComboBoxUsage.setBounds(new java.awt.Rectangle(160, 85, 320, 20));\r
149 }\r
150 return jComboBoxUsage;\r
151 }\r
152\r
153 /**\r
154 This method initializes jComboBoxHobType \r
155 \r
156 @return javax.swing.JComboBox jComboBoxHobType\r
157 \r
158 **/\r
159 private JComboBox getJComboBoxHobType() {\r
160 if (jComboBoxHobType == null) {\r
161 jComboBoxHobType = new JComboBox();\r
162 jComboBoxHobType.setBounds(new java.awt.Rectangle(160, 110, 320, 20));\r
163 }\r
164 return jComboBoxHobType;\r
165 }\r
166\r
167 /**\r
168 This method initializes jRadioButtonEnable \r
169 \r
170 @return javax.swing.JRadioButton jRadioButtonHobEnable\r
171 \r
172 **/\r
173 private JRadioButton getJRadioButtonHobEnable() {\r
174 if (jRadioButtonHobEnable == null) {\r
175 jRadioButtonHobEnable = new JRadioButton();\r
176 jRadioButtonHobEnable.setText("Enable");\r
177 jRadioButtonHobEnable.setBounds(new java.awt.Rectangle(160, 135, 90, 20));\r
178 jRadioButtonHobEnable.setSelected(true);\r
179 jRadioButtonHobEnable.addActionListener(this);\r
180 }\r
181 return jRadioButtonHobEnable;\r
182 }\r
183\r
184 /**\r
185 This method initializes jRadioButtonDisable \r
186 \r
187 @return javax.swing.JRadioButton jRadioButtonHobDisable\r
188 \r
189 **/\r
190 private JRadioButton getJRadioButtonHobDisable() {\r
191 if (jRadioButtonHobDisable == null) {\r
192 jRadioButtonHobDisable = new JRadioButton();\r
193 jRadioButtonHobDisable.setText("Disable");\r
194 jRadioButtonHobDisable.setBounds(new java.awt.Rectangle(320, 135, 90, 20));\r
195 jRadioButtonHobDisable.addActionListener(this);\r
196 }\r
197 return jRadioButtonHobDisable;\r
198 }\r
199\r
200 /**\r
201 This method initializes jButtonOk \r
202 \r
203 @return javax.swing.JButton jButtonOk\r
204 \r
205 **/\r
206 private JButton getJButtonOk() {\r
207 if (jButtonOk == null) {\r
208 jButtonOk = new JButton();\r
209 jButtonOk.setText("OK");\r
210 jButtonOk.setBounds(new java.awt.Rectangle(290, 190, 90, 20));\r
211 jButtonOk.addActionListener(this);\r
212 }\r
213 return jButtonOk;\r
214 }\r
215\r
216 /**\r
217 This method initializes jButtonCancel \r
218 \r
219 @return javax.swing.JButton jButtonCancel\r
220 \r
221 **/\r
222 private JButton getJButtonCancel() {\r
223 if (jButtonCancel == null) {\r
224 jButtonCancel = new JButton();\r
225 jButtonCancel.setText("Cancel");\r
226 jButtonCancel.setBounds(new java.awt.Rectangle(390, 190, 90, 20));\r
227 jButtonCancel.addActionListener(this);\r
228 }\r
229 return jButtonCancel;\r
230 }\r
231\r
232 /**\r
233 This method initializes jButtonGenerateGuid \r
234 \r
235 @return javax.swing.JButton jButtonGenerateGuid\r
236 \r
237 **/\r
238 private JButton getJButtonGenerateGuid() {\r
239 if (jButtonGenerateGuid == null) {\r
240 jButtonGenerateGuid = new JButton();\r
241 jButtonGenerateGuid.setBounds(new java.awt.Rectangle(405, 60, 75, 20));\r
242 jButtonGenerateGuid.setText("GEN");\r
243 jButtonGenerateGuid.addActionListener(this);\r
244 }\r
245 return jButtonGenerateGuid;\r
246 }\r
247\r
248 /**\r
249 This method initializes jTextFieldOverrideID \r
250 \r
251 @return javax.swing.JTextField jTextFieldOverrideID\r
252 \r
253 **/\r
254 private JTextField getJTextFieldOverrideID() {\r
255 if (jTextFieldOverrideID == null) {\r
256 jTextFieldOverrideID = new JTextField();\r
257 jTextFieldOverrideID.setBounds(new java.awt.Rectangle(160, 160, 320, 20));\r
258 }\r
259 return jTextFieldOverrideID;\r
260 }\r
261\r
262 public static void main(String[] args) {\r
263\r
264 }\r
265\r
266 /**\r
267 This is the default constructor\r
268 \r
269 **/\r
270 public ModuleHobs() {\r
271 super();\r
272 init();\r
273 this.setVisible(true);\r
274 }\r
275\r
276 /**\r
277 This is the override edit constructor\r
278 \r
279 @param inHobs The input data of HobsDocument.Hobs\r
280 \r
281 **/\r
282 public ModuleHobs(HobsDocument.Hobs inHobs) {\r
283 super();\r
284 init(inHobs);\r
285 this.setVisible(true);\r
286 }\r
287\r
288 /**\r
289 This is the override edit constructor\r
290 \r
291 @param inHobs The input data of HobsDocument.Hobs\r
292 @param type The input data of node type\r
293 @param index The input data of node index\r
294 \r
295 **/\r
296 public ModuleHobs(HobsDocument.Hobs inHobs, int type, int index) {\r
297 super();\r
298 init(inHobs, type, index);\r
299 this.setVisible(true);\r
300 }\r
301\r
302 /**\r
303 This method initializes this\r
304 \r
305 @param inHobs The input data of HobsDocument.Hobs\r
306 \r
307 **/\r
308 private void init(HobsDocument.Hobs inHobs) {\r
309 init();\r
310 this.setHobs(inHobs);\r
311 }\r
312\r
313 /**\r
314 This method initializes this\r
315 Fill values to all fields if these values are not empty\r
316 \r
317 @param inHobs The input data of HobsDocument.Hobs\r
318 @param type The input data of node type\r
319 @param index The input data of node index\r
320 \r
321 **/\r
322 private void init(HobsDocument.Hobs inHobs, int type, int index) {\r
323 init(inHobs);\r
324 this.location = index;\r
325 if (this.hobs.getHobList().size() > 0) {\r
326 if (this.hobs.getHobArray(index).getName() != null) {\r
327 this.jTextFieldName.setText(this.hobs.getHobArray(index).getName());\r
328 }\r
329 if (this.hobs.getHobArray(index).getCName() != null) {\r
330 this.jTextFieldC_Name.setText(this.hobs.getHobArray(index).getCName());\r
331 }\r
332 if (this.hobs.getHobArray(index).getGuid() != null) {\r
333 this.jTextFieldGuid.setText(this.hobs.getHobArray(index).getGuid().getStringValue());\r
334 }\r
335 if (this.hobs.getHobArray(index).getUsage() != null) {\r
336 this.jComboBoxUsage.setSelectedItem(this.hobs.getHobArray(index).getUsage().toString());\r
337 }\r
338 this.jRadioButtonHobEnable.setSelected(this.hobs.getHobArray(index).getHobEnabled());\r
339 this.jRadioButtonHobDisable.setSelected(!this.hobs.getHobArray(index).getHobEnabled());\r
340 this.jTextFieldOverrideID.setText(String.valueOf(this.hobs.getHobArray(index).getOverrideID()));\r
341 }\r
342 }\r
343\r
344 /**\r
345 This method initializes this\r
346 \r
347 **/\r
348 private void init() {\r
349 this.setSize(500, 515);\r
350 this.setContentPane(getJContentPane());\r
351 this.setTitle("Hobs");\r
352 initFrame();\r
353 this.setViewMode(false);\r
354 }\r
355\r
356 /**\r
357 Disable all components when the mode is view\r
358 \r
359 @param isView true - The view mode; false - The non-view mode\r
360 \r
361 **/\r
362 public void setViewMode(boolean isView) {\r
363 this.jButtonOk.setVisible(false);\r
364 this.jButtonCancel.setVisible(false);\r
365 if (isView) {\r
366 this.jTextFieldName.setEnabled(!isView);\r
367 this.jTextFieldC_Name.setEnabled(!isView);\r
368 this.jTextFieldGuid.setEnabled(!isView);\r
369 this.jComboBoxUsage.setEnabled(!isView);\r
370 this.jComboBoxHobType.setEnabled(!isView);\r
371 this.jRadioButtonHobEnable.setEnabled(!isView);\r
372 this.jRadioButtonHobDisable.setEnabled(!isView);\r
373 this.jTextFieldOverrideID.setEnabled(!isView);\r
374 this.jButtonCancel.setEnabled(!isView);\r
375 this.jButtonGenerateGuid.setEnabled(!isView);\r
376 this.jButtonOk.setEnabled(!isView);\r
377 }\r
378 }\r
379\r
380 /**\r
381 This method initializes jContentPane\r
382 \r
383 @return javax.swing.JPanel jContentPane\r
384 \r
385 **/\r
386 public JPanel getJContentPane() {\r
387 if (jContentPane == null) {\r
388 jLabelOverrideID = new JLabel();\r
389 jLabelOverrideID.setBounds(new java.awt.Rectangle(15, 160, 140, 20));\r
390 jLabelOverrideID.setText("Override ID");\r
391 jLabelHobEnabled = new JLabel();\r
392 jLabelHobEnabled.setText("Hob Enabled");\r
393 jLabelHobEnabled.setBounds(new java.awt.Rectangle(15, 135, 140, 20));\r
394 jLabelHobType = new JLabel();\r
395 jLabelHobType.setText("Hob Type");\r
396 jLabelHobType.setBounds(new java.awt.Rectangle(15, 110, 140, 20));\r
397 jLabelUsage = new JLabel();\r
398 jLabelUsage.setText("Usage");\r
399 jLabelUsage.setBounds(new java.awt.Rectangle(15, 85, 140, 20));\r
400 jLabelName = new JLabel();\r
401 jLabelName.setText("Name");\r
402 jLabelName.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
403 jLabelGuid = new JLabel();\r
404 jLabelGuid.setText("Guid");\r
405 jLabelGuid.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
406 jLabel = new JLabel();\r
407 jLabel.setText("C_Name");\r
408 jLabel.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
409 jContentPane = new JPanel();\r
410 jContentPane.setLayout(null);\r
411 jContentPane.add(jLabel, null);\r
412 jContentPane.add(getJTextFieldC_Name(), null);\r
413 jContentPane.add(getJTextFieldGuid(), null);\r
414 jContentPane.add(jLabelUsage, null);\r
415 jContentPane.add(jLabelName, null);\r
416 jContentPane.add(getJTextFieldName(), null);\r
417 jContentPane.add(jLabelGuid, null);\r
418 jContentPane.add(jLabelHobType, null);\r
419 jContentPane.add(getJComboBoxUsage(), null);\r
420 jContentPane.add(getJComboBoxHobType(), null);\r
421 jContentPane.add(jLabelHobEnabled, null);\r
422 jContentPane.add(getJRadioButtonHobEnable(), null);\r
423 jContentPane.add(getJRadioButtonHobDisable(), null);\r
424 jContentPane.add(getJButtonOk(), null);\r
425 jContentPane.add(getJButtonCancel(), null);\r
426 jContentPane.add(getJButtonGenerateGuid(), null);\r
427 jContentPane.add(jLabelOverrideID, null);\r
428 jContentPane.add(getJTextFieldOverrideID(), null);\r
429\r
430 jStarLabel1 = new StarLabel();\r
431 jStarLabel1.setLocation(new java.awt.Point(0, 10));\r
432 jContentPane.add(jStarLabel1, null);\r
433 }\r
434 return jContentPane;\r
435 }\r
436\r
437 /**\r
438 This method initializes Usage type and Hob type\r
439 \r
440 **/\r
441 private void initFrame() {\r
442 jComboBoxHobType.addItem("PHIT");\r
443 jComboBoxHobType.addItem("MEMORY_ALLOCATION");\r
444 jComboBoxHobType.addItem("RESOURCE_DESCRIPTOR");\r
445 jComboBoxHobType.addItem("GUID_EXTENSION");\r
446 jComboBoxHobType.addItem("FIRMWARE_VOLUME");\r
447 jComboBoxHobType.addItem("CPU");\r
448 jComboBoxHobType.addItem("POOL");\r
449 jComboBoxHobType.addItem("CAPSULE_VOLUME");\r
450\r
451 jComboBoxUsage.addItem("ALWAYS_CONSUMED");\r
452 jComboBoxUsage.addItem("SOMETIMES_CONSUMED");\r
453 jComboBoxUsage.addItem("ALWAYS_PRODUCED");\r
454 jComboBoxUsage.addItem("SOMETIMES_PRODUCED");\r
455 jComboBoxUsage.addItem("PRIVATE");\r
456 }\r
457\r
458 /* (non-Javadoc)\r
459 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
460 *\r
461 * Override actionPerformed to listen all actions\r
462 * \r
463 */\r
464 public void actionPerformed(ActionEvent arg0) {\r
465 if (arg0.getSource() == jButtonOk) {\r
466 this.setEdited(true);\r
467 this.save();\r
468 this.dispose();\r
469 }\r
470 if (arg0.getSource() == jButtonCancel) {\r
471 this.dispose();\r
472 }\r
473\r
474 //\r
475 // Contorl the selected status when click RadionButton\r
476 // Do not use Radio Button Group\r
477 //\r
478 if (arg0.getSource() == jRadioButtonHobEnable) {\r
479 if (jRadioButtonHobEnable.isSelected()) {\r
480 jRadioButtonHobDisable.setSelected(false);\r
481 }\r
482 if (!jRadioButtonHobDisable.isSelected() && !jRadioButtonHobEnable.isSelected()) {\r
483 jRadioButtonHobEnable.setSelected(true);\r
484 }\r
485 }\r
486\r
487 if (arg0.getSource() == jRadioButtonHobDisable) {\r
488 if (jRadioButtonHobDisable.isSelected()) {\r
489 jRadioButtonHobEnable.setSelected(false);\r
490 }\r
491 if (!jRadioButtonHobDisable.isSelected() && !jRadioButtonHobEnable.isSelected()) {\r
492 jRadioButtonHobDisable.setSelected(true);\r
493 }\r
494 }\r
495\r
496 if (arg0.getSource() == jButtonGenerateGuid) {\r
497 jTextFieldGuid.setText(Tools.generateUuidString());\r
498 }\r
499 }\r
500\r
501 /**\r
502 Get HobsDocument.Hobs\r
503 \r
504 @return HobsDocument.Hobs\r
505 \r
506 **/\r
507 public HobsDocument.Hobs getHobs() {\r
508 return hobs;\r
509 }\r
510\r
511 /**\r
512 Set HobsDocument.Hobs\r
513 \r
514 @param hobs The input data of HobsDocument.Hobs\r
515 \r
516 **/\r
517 public void setHobs(HobsDocument.Hobs hobs) {\r
518 this.hobs = hobs;\r
519 }\r
520\r
521 /**\r
522 Data validation for all fields\r
523 \r
524 @retval true - All datas are valid\r
525 @retval false - At least one data is invalid\r
526 \r
527 **/\r
528 public boolean check() {\r
529 //\r
530 // Check if all required fields are not empty\r
531 //\r
532 if (isEmpty(this.jTextFieldName.getText())) {\r
533 Log.err("Name couldn't be empty");\r
534 return false;\r
535 }\r
536\r
537 //\r
538 // Check if all fields have correct data types \r
539 //\r
540 if (!DataValidation.isCName(this.jTextFieldC_Name.getText())) {\r
541 Log.err("Incorrect data type for C_Name");\r
542 return false;\r
543 }\r
544 if (!isEmpty(this.jTextFieldGuid.getText()) && !DataValidation.isGuid(this.jTextFieldGuid.getText())) {\r
545 Log.err("Incorrect data type for Guid");\r
546 return false;\r
547 }\r
548 if (!isEmpty(this.jTextFieldOverrideID.getText())\r
549 && !DataValidation.isOverrideID(this.jTextFieldOverrideID.getText())) {\r
550 Log.err("Incorrect data type for Override ID");\r
551 return false;\r
552 }\r
553\r
554 return true;\r
555 }\r
556\r
557 /**\r
558 Save all components of Hobs\r
559 if exists hobs, set the value directly\r
560 if not exists hobs, new an instance first\r
561 \r
562 **/\r
563 public void save() {\r
564 try {\r
565 if (this.hobs == null) {\r
566 hobs = HobsDocument.Hobs.Factory.newInstance();\r
567 }\r
568 HobsDocument.Hobs.Hob hob = HobsDocument.Hobs.Hob.Factory.newInstance();\r
569 if (!isEmpty(this.jTextFieldName.getText())) {\r
570 hob.setName(this.jTextFieldName.getText());\r
571 }\r
572 if (!isEmpty(this.jTextFieldC_Name.getText())) {\r
573 hob.setCName(this.jTextFieldC_Name.getText());\r
574 }\r
575 if (!isEmpty(this.jTextFieldGuid.getText())) {\r
576 GuidDocument.Guid guid = GuidDocument.Guid.Factory.newInstance();\r
577 guid.setStringValue(this.jTextFieldGuid.getText());\r
578 hob.setGuid(guid);\r
579 }\r
580 hob.setUsage(HobUsage.Enum.forString(jComboBoxUsage.getSelectedItem().toString()));\r
581 hob.setHobType(HobTypes.Enum.forString(jComboBoxHobType.getSelectedItem().toString()));\r
582 hob.setHobEnabled(this.jRadioButtonHobEnable.isSelected());\r
583 if (!isEmpty(this.jTextFieldOverrideID.getText())) {\r
584 hob.setOverrideID(Integer.parseInt(this.jTextFieldOverrideID.getText()));\r
585 }\r
586 if (location > -1) {\r
587 hobs.setHobArray(location, hob);\r
588 } else {\r
589 hobs.addNewHob();\r
590 hobs.setHobArray(hobs.getHobList().size() - 1, hob);\r
591 }\r
592 } catch (Exception e) {\r
593 Log.err("Update Hobs", e.getMessage());\r
594 }\r
595 }\r
596}\r