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