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