]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/HobsDlg.java
Changed spelling to manifest
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / module / ui / dialog / HobsDlg.java
CommitLineData
06a19cee 1/** @file\r
2 \r
9e857952 3 The file is used to create, update Hob section of the MSA file\r
06a19cee 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.frameworkwizard.module.ui.dialog;\r
16\r
17import java.awt.event.ActionEvent;\r
18import java.util.Vector;\r
19\r
20import javax.swing.JButton;\r
21import javax.swing.JComboBox;\r
22import javax.swing.JLabel;\r
23import javax.swing.JPanel;\r
24import javax.swing.JScrollPane;\r
25import javax.swing.JTextField;\r
5101eff9 26import javax.swing.JTextArea;\r
06a19cee 27\r
28import org.tianocore.frameworkwizard.common.DataType;\r
29import org.tianocore.frameworkwizard.common.DataValidation;\r
30import org.tianocore.frameworkwizard.common.EnumerationData;\r
31import org.tianocore.frameworkwizard.common.Log;\r
32import org.tianocore.frameworkwizard.common.Tools;\r
33import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;\r
34import org.tianocore.frameworkwizard.common.ui.IDialog;\r
35import org.tianocore.frameworkwizard.common.ui.IFrame;\r
36import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
e08433ef 37import org.tianocore.frameworkwizard.module.Identifications.ModuleIdentification;\r
06a19cee 38import org.tianocore.frameworkwizard.module.Identifications.Hobs.HobsIdentification;\r
d48c170d 39import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
06a19cee 40import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
41\r
42/**\r
9e857952 43 * The class is used to create, update Hob of the MSA file \r
44 * \r
45 * It extends IDialog\r
5101eff9 46 * \r
47 */\r
06a19cee 48public class HobsDlg extends IDialog {\r
49\r
a929458e 50 // /\r
51 // / Define class Serial Version UID\r
52 // /\r
53 private static final long serialVersionUID = -553473437579358325L;\r
06a19cee 54\r
a929458e 55 //\r
56 // Define class members\r
57 //\r
58 private JPanel jContentPane = null;\r
06a19cee 59\r
a929458e 60 private JLabel jLabelC_Name = null;\r
06a19cee 61\r
a929458e 62 private JComboBox jComboBoxGuidC_Name = null;\r
06a19cee 63\r
a929458e 64 private JLabel jLabelUsage = null;\r
06a19cee 65\r
a929458e 66 private JLabel jLabelHobType = null;\r
06a19cee 67\r
a929458e 68 private JComboBox jComboBoxUsage = null;\r
06a19cee 69\r
a929458e 70 private JComboBox jComboBoxHobType = null;\r
06a19cee 71\r
a929458e 72 private StarLabel jStarLabel1 = null;\r
06a19cee 73\r
a929458e 74 private StarLabel jStarLabel2 = null;\r
06a19cee 75\r
a929458e 76 private StarLabel jStarLabel3 = null;\r
06a19cee 77\r
a929458e 78 private JLabel jLabelArch = null;\r
06a19cee 79\r
a929458e 80 private JScrollPane jScrollPane = null;\r
06a19cee 81\r
a929458e 82 private JLabel jLabelFeatureFlag = null;\r
06a19cee 83\r
a929458e 84 private JTextField jTextFieldFeatureFlag = null;\r
06a19cee 85\r
a929458e 86 private JLabel jLabelHelpText = null;\r
06a19cee 87\r
a929458e 88 private JTextArea jTextAreaHelpText = null;\r
06a19cee 89\r
a929458e 90 private JScrollPane jScrollPaneHelpText = null;\r
06a19cee 91\r
a929458e 92 private ArchCheckBox jArchCheckBox = null;\r
06a19cee 93\r
a929458e 94 private JButton jButtonOk = null;\r
06a19cee 95\r
a929458e 96 private JButton jButtonCancel = null;\r
06a19cee 97\r
a929458e 98 //\r
99 // Not used by UI\r
100 //\r
101 private HobsIdentification id = null;\r
102\r
103 private EnumerationData ed = new EnumerationData();\r
104\r
105 private WorkspaceTools wt = new WorkspaceTools();\r
106\r
107 /**\r
108 * This method initializes jTextField\r
109 * \r
110 * @return javax.swing.JTextField jTextFieldC_Name\r
111 * \r
112 */\r
113 private JComboBox getJComboBoxGuidC_Name() {\r
114 if (jComboBoxGuidC_Name == null) {\r
115 jComboBoxGuidC_Name = new JComboBox();\r
3f62225f 116 jComboBoxGuidC_Name.setBounds(new java.awt.Rectangle(168, 12, 320, 20));\r
a929458e 117 jComboBoxGuidC_Name.setPreferredSize(new java.awt.Dimension(320, 20));\r
118 jComboBoxGuidC_Name.setToolTipText("Select the GUID C Name of the Hob");\r
119 }\r
120 return jComboBoxGuidC_Name;\r
121 }\r
06a19cee 122\r
a929458e 123 /**\r
124 * This method initializes jComboBoxHobType\r
125 * \r
126 * @return javax.swing.JComboBox jComboBoxHobType\r
127 * \r
128 */\r
129 private JComboBox getJComboBoxHobType() {\r
130 if (jComboBoxHobType == null) {\r
131 jComboBoxHobType = new JComboBox();\r
3f62225f 132 jComboBoxHobType.setBounds(new java.awt.Rectangle(168, 37, 320, 20));\r
a929458e 133 jComboBoxHobType.setPreferredSize(new java.awt.Dimension(320, 20));\r
134 jComboBoxHobType\r
135 .setToolTipText("<html><table>"\r
136 + "<tr><td>PHIT</td><td>EFI_HOB_TYPE_HANDOFF</td></tr>"\r
137 + "<tr><td>MEMORY_ALLOCATION</td><td>EFI_HOB_TYPE_MEMORY_ALLOCATION and $BaseName</td></tr>"\r
138 + "<tr><td>RESOURCE_DESCRIPTOR</td><td>EFI_HOB_TYPE_RESOURCE_DESCRIPTOR</td></tr>"\r
139 + "<tr><td>GUID_EXTENTION</td><td>EFI_HOB_TYPE_GUID_EXTENSION and BaseName of GUID</td></tr>"\r
140 + "<tr><td>FIRMWARE_VOLUME</td><td>EFI_HOB_TYPE_FV</td></tr>"\r
141 + "<tr><td>CPU</td><td>EFI_HOB_TYPE_CPU</td></tr>"\r
142 + "<tr><td>POOL</td><td>EFI_HOB_TYPE_PEI_MEMORY_POOL</td></tr>"\r
143 + "<tr><td>CAPSULE_VOLUME</td><td>EFI_HOB_TYPE_CV</td></tr>"\r
144 + "</table></html>");\r
145 }\r
146 return jComboBoxHobType;\r
147 }\r
06a19cee 148\r
a929458e 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
3f62225f 158 jComboBoxUsage.setBounds(new java.awt.Rectangle(168, 62, 320, 20));\r
a929458e 159 jComboBoxUsage.setPreferredSize(new java.awt.Dimension(320, 20));\r
160 jComboBoxUsage\r
161 .setToolTipText("<html><table>"\r
162 + "<tr><td>ALWAYS_CONSUMED</td><td>HOB must be present in the system</td></tr>"\r
163 + "<tr><td>SOMETIMES_CONSUMED</td><td>HOB will be used if it's present</td></tr>"\r
164 + "<tr><td>ALWAYS_PRODUCED</td><td>HOB is always produced</td></tr>"\r
165 + "<tr><td>SOMETIMES_PRODUCED</td><td>HOB will sometimes be produced by the module</td></tr>"\r
166 + "</table></html>");\r
167 }\r
168 return jComboBoxUsage;\r
169 }\r
06a19cee 170\r
a929458e 171 /**\r
172 * This method initializes jScrollPane\r
173 * \r
174 * @return javax.swing.JScrollPane\r
175 */\r
176 private JScrollPane getJScrollPane() {\r
177 if (jScrollPane == null) {\r
178 jScrollPane = new JScrollPane();\r
179 jScrollPane.setViewportView(getJContentPane());\r
180 }\r
181 return jScrollPane;\r
06a19cee 182 }\r
a929458e 183\r
184 /**\r
185 * This method initializes jTextFieldFeatureFlag\r
186 * \r
187 * @return javax.swing.JTextField\r
188 */\r
189 private JTextField getJTextFieldFeatureFlag() {\r
190 if (jTextFieldFeatureFlag == null) {\r
191 jTextFieldFeatureFlag = new JTextField();\r
21b42c66 192 jTextFieldFeatureFlag.setBounds(new java.awt.Rectangle(168, 157, 320, 20));\r
a929458e 193 jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(320, 20));\r
194 jTextFieldFeatureFlag.setToolTipText("Postfix expression that must evaluate to TRUE or FALSE");\r
21b42c66 195 jTextFieldFeatureFlag.setEnabled(false);\r
a929458e 196 }\r
197 return jTextFieldFeatureFlag;\r
06a19cee 198 }\r
a929458e 199\r
200 /**\r
201 * This method initializes jTextFieldHelpText\r
202 * \r
203 * @return javax.swing.JTextField\r
204 * \r
205 */\r
206 private JTextArea getJTextAreaHelpText() {\r
207 if (jTextAreaHelpText == null) {\r
208 jTextAreaHelpText = new JTextArea();\r
209 jTextAreaHelpText.setLineWrap(true);\r
210 jTextAreaHelpText.setWrapStyleWord(true);\r
211 }\r
212 return jTextAreaHelpText;\r
06a19cee 213 }\r
a929458e 214\r
215 /**\r
216 * This method initializes jScrollPaneHelpText\r
217 * \r
218 * @return javax.swing.JScrollPane\r
219 */\r
220 private JScrollPane getJScrollPaneHelpText() {\r
221 if (jScrollPaneHelpText == null) {\r
222 jScrollPaneHelpText = new JScrollPane();\r
223 jScrollPaneHelpText.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);\r
224 jScrollPaneHelpText.setSize(new java.awt.Dimension(320, 40));\r
225 jScrollPaneHelpText.setPreferredSize(new java.awt.Dimension(320, 40));\r
3f62225f 226 jScrollPaneHelpText.setLocation(new java.awt.Point(168, 87));\r
a929458e 227 jScrollPaneHelpText.setViewportView(getJTextAreaHelpText());\r
228 }\r
229 return jScrollPaneHelpText;\r
06a19cee 230 }\r
a929458e 231\r
232 /**\r
233 * This method initializes jButtonOk\r
234 * \r
235 * @return javax.swing.JButton\r
236 * \r
237 */\r
238 private JButton getJButtonOk() {\r
239 if (jButtonOk == null) {\r
240 jButtonOk = new JButton();\r
3f62225f 241 jButtonOk.setBounds(new java.awt.Rectangle(290, 187, 90, 20));\r
a929458e 242 jButtonOk.setText("Ok");\r
243 jButtonOk.addActionListener(this);\r
244 }\r
245 return jButtonOk;\r
06a19cee 246 }\r
a929458e 247\r
248 /**\r
249 * This method initializes jButtonCancel\r
250 * \r
251 * @return javax.swing.JButton\r
252 * \r
253 */\r
254 private JButton getJButtonCancel() {\r
255 if (jButtonCancel == null) {\r
256 jButtonCancel = new JButton();\r
3f62225f 257 jButtonCancel.setBounds(new java.awt.Rectangle(390, 187, 90, 20));\r
a929458e 258 jButtonCancel.setText("Cancel");\r
259 jButtonCancel.addActionListener(this);\r
260 }\r
261 return jButtonCancel;\r
06a19cee 262 }\r
a929458e 263\r
264 public static void main(String[] args) {\r
265\r
06a19cee 266 }\r
a929458e 267\r
268 /**\r
269 * This method initializes this\r
270 * \r
271 */\r
272 private void init() {\r
3f62225f 273 this.setSize(505, 260);\r
a929458e 274 this.setContentPane(getJScrollPane());\r
275 this.setTitle("Hobs");\r
276 initFrame();\r
277 this.setViewMode(false);\r
278 this.centerWindow();\r
06a19cee 279 }\r
a929458e 280\r
281 /**\r
282 * This method initializes this Fill values to all fields if these values are\r
283 * not empty\r
284 * \r
285 * @param inHobsId\r
286 * \r
287 */\r
e08433ef 288 private void init(HobsIdentification inHobsId, ModuleIdentification mid) {\r
a929458e 289 init();\r
290 this.id = inHobsId;\r
e08433ef 291 \r
292 //\r
293 // Init arch with module's arch\r
294 //\r
295 this.jArchCheckBox.setEnabledItems(wt.getModuleArch(mid));\r
296 \r
d48c170d 297 //\r
298 // Get defined guids from dependent packages\r
299 //\r
300 Vector<PackageIdentification> vpid = wt.getPackageDependenciesOfModule(mid);\r
301 if (vpid.size() <= 0) {\r
302 Log\r
303 .wrn("Init Guid",\r
304 "This module hasn't defined any package dependency, so there is no guid value can be added for hob");\r
305 }\r
306 //\r
307 // Init guids drop down list\r
308 //\r
309 Tools\r
310 .generateComboBoxByVector(jComboBoxGuidC_Name,\r
311 wt.getAllGuidDeclarationsFromPackages(vpid, EnumerationData.GUID_TYPE_HOB));\r
312\r
313\r
a929458e 314 if (this.id != null) {\r
315 this.jComboBoxGuidC_Name.setSelectedItem(id.getName());\r
316 this.jComboBoxHobType.setSelectedItem(id.getType());\r
317 this.jComboBoxUsage.setSelectedItem(id.getUsage());\r
318 this.jTextAreaHelpText.setText(id.getHelp());\r
319 this.jTextFieldFeatureFlag.setText(id.getFeatureFlag());\r
320 this.jArchCheckBox.setSelectedItems(id.getSupArchList());\r
321 }\r
06a19cee 322 }\r
a929458e 323\r
324 /**\r
325 * This is the override edit constructor\r
326 * \r
327 * @param inHobsIdentification\r
328 * @param iFrame\r
329 * \r
330 */\r
e08433ef 331 public HobsDlg(HobsIdentification inHobsIdentification, IFrame iFrame, ModuleIdentification mid) {\r
a929458e 332 super(iFrame, true);\r
e08433ef 333 init(inHobsIdentification, mid);\r
06a19cee 334 }\r
a929458e 335\r
336 /**\r
337 * Disable all components when the mode is view\r
338 * \r
339 * @param isView\r
340 * true - The view mode; false - The non-view mode\r
341 * \r
342 */\r
343 public void setViewMode(boolean isView) {\r
344 if (isView) {\r
345 this.jComboBoxGuidC_Name.setEnabled(!isView);\r
346 this.jComboBoxUsage.setEnabled(!isView);\r
347 this.jComboBoxHobType.setEnabled(!isView);\r
348 }\r
5101eff9 349 }\r
a929458e 350\r
351 /**\r
352 * This method initializes jContentPane\r
353 * \r
354 * @return javax.swing.JPanel jContentPane\r
355 * \r
356 */\r
357 public JPanel getJContentPane() {\r
358 if (jContentPane == null) {\r
359 jStarLabel1 = new StarLabel();\r
3f62225f 360 jStarLabel1.setLocation(new java.awt.Point(2, 12));\r
a929458e 361 jLabelC_Name = new JLabel();\r
362 jLabelC_Name.setText("Hob's Guid C Name");\r
3f62225f 363 jLabelC_Name.setBounds(new java.awt.Rectangle(12, 12, 155, 20));\r
a929458e 364\r
365 jStarLabel2 = new StarLabel();\r
3f62225f 366 jStarLabel2.setLocation(new java.awt.Point(2, 37));\r
a929458e 367 jLabelHobType = new JLabel();\r
368 jLabelHobType.setText("Hob Type");\r
3f62225f 369 jLabelHobType.setBounds(new java.awt.Rectangle(12, 37, 155, 20));\r
a929458e 370\r
371 jStarLabel3 = new StarLabel();\r
3f62225f 372 jStarLabel3.setLocation(new java.awt.Point(2, 62));\r
a929458e 373 jLabelUsage = new JLabel();\r
374 jLabelUsage.setText("Usage");\r
3f62225f 375 jLabelUsage.setBounds(new java.awt.Rectangle(12, 62, 155, 20));\r
a929458e 376\r
377 jLabelHelpText = new JLabel();\r
3f62225f 378 jLabelHelpText.setBounds(new java.awt.Rectangle(12, 87, 155, 20));\r
a929458e 379 jLabelHelpText.setText("Help Text");\r
380\r
381 jLabelFeatureFlag = new JLabel();\r
21b42c66 382 jLabelFeatureFlag.setBounds(new java.awt.Rectangle(12, 157, 155, 20));\r
a929458e 383 jLabelFeatureFlag.setText("Feature Flag Expression");\r
21b42c66 384 jLabelFeatureFlag.setEnabled(false);\r
a929458e 385\r
386 jLabelArch = new JLabel();\r
21b42c66 387 jLabelArch.setBounds(new java.awt.Rectangle(12, 132, 155, 20));\r
a929458e 388 jLabelArch.setText("Supported Architectures");\r
389 jArchCheckBox = new ArchCheckBox();\r
21b42c66 390 jArchCheckBox.setBounds(new java.awt.Rectangle(168, 132, 320, 20));\r
a929458e 391 jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\r
392\r
393 jContentPane = new JPanel();\r
394 jContentPane.setLayout(null);\r
3f62225f 395 jContentPane.setPreferredSize(new java.awt.Dimension(485, 215));\r
a929458e 396\r
397 jContentPane.add(jStarLabel1, null);\r
398 jContentPane.add(jLabelC_Name, null);\r
399 jContentPane.add(getJComboBoxGuidC_Name(), null);\r
400 jContentPane.add(jStarLabel2, null);\r
401 jContentPane.add(jLabelHobType, null);\r
402 jContentPane.add(getJComboBoxHobType(), null);\r
403 jContentPane.add(jStarLabel3, null);\r
404 jContentPane.add(jLabelUsage, null);\r
405 jContentPane.add(getJComboBoxUsage(), null);\r
406 jContentPane.add(jLabelHelpText, null);\r
407 jContentPane.add(getJScrollPaneHelpText(), null);\r
408 jContentPane.add(jLabelFeatureFlag, null);\r
409 jContentPane.add(getJTextFieldFeatureFlag(), null);\r
410 jContentPane.add(jLabelArch, null);\r
411 jContentPane.add(jArchCheckBox, null);\r
412 jContentPane.add(getJButtonOk(), null);\r
413 jContentPane.add(getJButtonCancel(), null);\r
414 }\r
415 return jContentPane;\r
5101eff9 416 }\r
a929458e 417\r
418 /**\r
419 * This method initializes Usage type and Hob type\r
420 * \r
421 */\r
422 private void initFrame() {\r
423 Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVHobUsage());\r
424 Tools.generateComboBoxByVector(jComboBoxHobType, ed.getVHobType());\r
06a19cee 425 }\r
426\r
a929458e 427 /*\r
428 * (non-Javadoc)\r
429 * \r
430 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
431 * \r
432 * Override actionPerformed to listen all actions\r
433 * \r
434 */\r
435 public void actionPerformed(ActionEvent arg0) {\r
436 if (arg0.getSource() == jButtonOk) {\r
437 if (checkAdd()) {\r
438 getCurrentHobs();\r
439 this.returnType = DataType.RETURN_TYPE_OK;\r
440 this.setVisible(false);\r
441 }\r
442 }\r
443\r
444 if (arg0.getSource() == jButtonCancel) {\r
445 this.returnType = DataType.RETURN_TYPE_CANCEL;\r
446 this.setVisible(false);\r
447 }\r
5101eff9 448 }\r
06a19cee 449\r
a929458e 450 /**\r
451 * Data validation for all fields\r
452 * \r
453 * @retval true - All datas are valid\r
454 * @retval false - At least one data is invalid\r
455 * \r
456 */\r
457 public boolean checkAdd() {\r
458 //\r
459 // Check if all fields have correct data types\r
460 //\r
d48c170d 461 \r
462 //\r
463 // Check Name\r
464 //\r
465 if (this.jComboBoxGuidC_Name.getSelectedItem() == null) {\r
466 Log.wrn("Update Guids", "Please select one Hob Name");\r
467 return false;\r
468 }\r
a929458e 469 //\r
470 // Check Name\r
471 //\r
472 if (isEmpty(this.jComboBoxGuidC_Name.getSelectedItem().toString())) {\r
623db5ca 473 Log.wrn("Update Hobs", "Hob Guid C Name must be entered!");\r
a929458e 474 return false;\r
475 }\r
476\r
477 if (!isEmpty(this.jComboBoxGuidC_Name.getSelectedItem().toString())) {\r
478 if (!DataValidation.isC_NameType(this.jComboBoxGuidC_Name.getSelectedItem().toString())) {\r
479 Log.wrn("Update Hobs", "Incorrect data type for Hob Name");\r
480 return false;\r
481 }\r
482 }\r
483\r
484 //\r
485 // Check FeatureFlag\r
486 //\r
487 if (!isEmpty(this.jTextFieldFeatureFlag.getText())) {\r
488 if (!DataValidation.isFeatureFlag(this.jTextFieldFeatureFlag.getText())) {\r
489 Log.wrn("Update Hobs", "Incorrect data type for Feature Flag");\r
490 return false;\r
491 }\r
492 }\r
493\r
494 return true;\r
06a19cee 495 }\r
496\r
a929458e 497 private HobsIdentification getCurrentHobs() {\r
498 String arg0 = this.jComboBoxGuidC_Name.getSelectedItem().toString();\r
499 String arg1 = this.jComboBoxHobType.getSelectedItem().toString();\r
500 String arg2 = this.jComboBoxUsage.getSelectedItem().toString();\r
501\r
502 String arg3 = this.jTextFieldFeatureFlag.getText();\r
503 Vector<String> arg4 = this.jArchCheckBox.getSelectedItemsVector();\r
504 String arg5 = this.jTextAreaHelpText.getText();\r
505 id = new HobsIdentification(arg0, arg1, arg2, arg3, arg4, arg5);\r
506 return id;\r
06a19cee 507 }\r
508\r
a929458e 509 public HobsIdentification getId() {\r
510 return id;\r
06a19cee 511 }\r
5101eff9 512\r
a929458e 513 public void setId(HobsIdentification id) {\r
514 this.id = id;\r
515 }\r
06a19cee 516}\r