]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/BootModesDlg.java
Fixed grammar in messages.
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / module / ui / dialog / BootModesDlg.java
CommitLineData
06a19cee 1/** @file\r
5b38b75b 2 <<The file is used to create, update BootModes of MSA file>>\r
3\r
4 <<The BootModesDlg is called to add or edit a Module's Boot Modes definitions.>>\r
06a19cee 5 \r
6 Copyright (c) 2006, Intel Corporation\r
7 All rights reserved. This program and the accompanying materials\r
8 are licensed and made available under the terms and conditions of the BSD License\r
9 which accompanies this distribution. The full text of the license may be found at\r
10 http://opensource.org/licenses/bsd-license.php\r
11 \r
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
14 \r
5b38b75b 15 Package Name: Tools\r
16 Module Name: FrameworkWizard\r
17 \r
06a19cee 18 **/\r
19\r
20package org.tianocore.frameworkwizard.module.ui.dialog;\r
21\r
22import java.awt.event.ActionEvent;\r
23import java.util.Vector;\r
24\r
25import javax.swing.JButton;\r
26import javax.swing.JComboBox;\r
27import javax.swing.JLabel;\r
28import javax.swing.JPanel;\r
29import javax.swing.JScrollPane;\r
30import javax.swing.JTextField;\r
5262e237 31import javax.swing.JTextArea;\r
06a19cee 32\r
33import org.tianocore.frameworkwizard.common.DataType;\r
34import org.tianocore.frameworkwizard.common.DataValidation;\r
35import org.tianocore.frameworkwizard.common.EnumerationData;\r
36import org.tianocore.frameworkwizard.common.Log;\r
37import org.tianocore.frameworkwizard.common.Tools;\r
38import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;\r
39import org.tianocore.frameworkwizard.common.ui.IDialog;\r
40import org.tianocore.frameworkwizard.common.ui.IFrame;\r
41import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
42import org.tianocore.frameworkwizard.module.Identifications.BootModes.BootModesIdentification;\r
43\r
44/**\r
9e857952 45 * The class is used to create, update BootModes of MSA/MBD file\r
46 * \r
47 * It extends IDialog\r
5b38b75b 48 * \r
49 */\r
06a19cee 50public class BootModesDlg extends IDialog {\r
51\r
a929458e 52 // /\r
53 // / Define class Serial Version UID\r
54 // /\r
55 private static final long serialVersionUID = -3888558623432442561L;\r
06a19cee 56\r
a929458e 57 //\r
58 // Define class members\r
59 //\r
60 private JPanel jContentPane = null;\r
9e857952 61\r
a929458e 62 private JLabel jLabelBootModeName = null;\r
06a19cee 63\r
a929458e 64 private JComboBox jComboBoxBootModeName = null;\r
06a19cee 65\r
a929458e 66 private JLabel jLabelUsage = null;\r
06a19cee 67\r
a929458e 68 private JComboBox jComboBoxUsage = null;\r
06a19cee 69\r
a929458e 70 private StarLabel jStarLabel1 = null;\r
06a19cee 71\r
a929458e 72 private StarLabel jStarLabel2 = null;\r
06a19cee 73\r
a929458e 74 private JLabel jLabelFeatureFlag = null;\r
06a19cee 75\r
a929458e 76 private JTextField jTextFieldFeatureFlag = null;\r
06a19cee 77\r
a929458e 78 private JLabel jLabelArch = null;\r
5262e237 79\r
a929458e 80 private JScrollPane jScrollPane = 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 BootModesIdentification id = null;\r
98\r
99 private EnumerationData ed = new EnumerationData();\r
100\r
101 /**\r
102 * This method initializes jComboBoxBootModeName\r
103 * \r
104 * @return javax.swing.JComboBox jComboBoxBootModeName\r
105 * \r
106 */\r
107 private JComboBox getJComboBoxBootModeName() {\r
108 if (jComboBoxBootModeName == null) {\r
109 jComboBoxBootModeName = new JComboBox();\r
3f62225f 110 jComboBoxBootModeName.setBounds(new java.awt.Rectangle(168, 12, 320, 20));\r
a929458e 111 jComboBoxBootModeName.setPreferredSize(new java.awt.Dimension(320, 20));\r
112 jComboBoxBootModeName\r
113 .setToolTipText("<html><table>"\r
114 + "<tr><td>FULL</td><td>Boot with full configuration</td></tr>"\r
115 + "<tr><td>MINIMAL</td><td>Boot with minimal configuration</td></tr>"\r
116 + "<tr><td>NO_CHANGE</td><td>Boot assuming no configuration changes</td></tr>"\r
117 + "<tr><td>DIAGNOSTICS</td><td>Boot with full configuration plus diagnostics</td></tr>"\r
118 + "<tr><td>DEFAULT</td><td>Boot with default settings</td></tr>"\r
119 + "<tr><td>BOOT_ON_S#_RESUME</td><td>where # is 2, 3, 4 or 5</td></tr>"\r
120 + "<tr><td>FLASH_UPDATE</td><td>Boot on flash update</td></tr>"\r
121 + "<tr><td>RECOVERY</td><td>Boot in recovery mode</td></tr>"\r
122 + "</table></html>");\r
123 }\r
124 return jComboBoxBootModeName;\r
125 }\r
06a19cee 126\r
a929458e 127 /**\r
128 * This method initializes jComboBoxUsage\r
129 * \r
130 * @return javax.swing.JComboBox jComboBoxUsage\r
131 * \r
132 */\r
133 private JComboBox getJComboBoxUsage() {\r
134 if (jComboBoxUsage == null) {\r
135 jComboBoxUsage = new JComboBox();\r
3f62225f 136 jComboBoxUsage.setBounds(new java.awt.Rectangle(168, 37, 320, 20));\r
a929458e 137 jComboBoxUsage.setPreferredSize(new java.awt.Dimension(320, 20));\r
138 jComboBoxUsage\r
139 .setToolTipText("<html><table>"\r
140 + "<tr><td>ALWAYS_CONSUMED</td><td>Indicates Supports the specified boot mode</td></tr>"\r
141 + "<tr><td>SOMETIMES_CONSUMED</td><td>Indicates Supports the specified boot mode on some execution paths</td></tr>"\r
142 + "<tr><td>ALWAYS_PRODUCED</td><td>Always changes the boot mode</td></tr>"\r
143 + "<tr><td>SOMETIMES_PRODUCED</td><td>Change the boot mode sometimes</td></tr>"\r
144 + "</table></html>");\r
145 }\r
146 return jComboBoxUsage;\r
147 }\r
5262e237 148\r
a929458e 149 /**\r
150 * This method initializes jTextFieldFeatureFlag\r
151 * \r
152 * @return javax.swing.JTextField\r
153 */\r
154 private JTextField getJTextFieldFeatureFlag() {\r
155 if (jTextFieldFeatureFlag == null) {\r
156 jTextFieldFeatureFlag = new JTextField();\r
21b42c66 157 jTextFieldFeatureFlag.setBounds(new java.awt.Rectangle(168, 132, 320, 20));\r
a929458e 158 jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(320, 20));\r
159 jTextFieldFeatureFlag.setToolTipText("Postfix expression that must evaluate to TRUE or FALSE");\r
21b42c66 160 jTextFieldFeatureFlag.setEnabled(false);\r
a929458e 161 }\r
162 return jTextFieldFeatureFlag;\r
06a19cee 163 }\r
a929458e 164\r
165 /**\r
166 * This method initializes jScrollPane\r
167 * \r
168 * @return javax.swing.JScrollPane\r
169 */\r
170 private JScrollPane getJScrollPane() {\r
171 if (jScrollPane == null) {\r
172 jScrollPane = new JScrollPane();\r
173 jScrollPane.setViewportView(getJContentPane());\r
174 }\r
175 return jScrollPane;\r
06a19cee 176 }\r
a929458e 177\r
178 /**\r
179 * This method initializes jTextAreaHelpText\r
180 * \r
181 * @return javax.swing.JTextArea\r
182 * \r
183 */\r
184 private JTextArea getJTextAreaHelpText() {\r
185 if (jTextAreaHelpText == null) {\r
186 jTextAreaHelpText = new JTextArea();\r
187 jTextAreaHelpText.setLineWrap(true);\r
188 jTextAreaHelpText.setWrapStyleWord(true);\r
189 }\r
190 return jTextAreaHelpText;\r
06a19cee 191 }\r
a929458e 192\r
193 /**\r
194 * This method initializes jScrollPaneHelpText\r
195 * \r
196 * @return javax.swing.JScrollPane\r
197 * \r
198 */\r
199 private JScrollPane getJScrollPaneHelpText() {\r
200 if (jScrollPaneHelpText == null) {\r
201 jScrollPaneHelpText = new JScrollPane();\r
202 jScrollPaneHelpText.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);\r
203 jScrollPaneHelpText.setSize(new java.awt.Dimension(320, 40));\r
204 jScrollPaneHelpText.setPreferredSize(new java.awt.Dimension(320, 40));\r
3f62225f 205 jScrollPaneHelpText.setLocation(new java.awt.Point(168, 62));\r
a929458e 206 jScrollPaneHelpText.setViewportView(getJTextAreaHelpText());\r
207 }\r
208 return jScrollPaneHelpText;\r
06a19cee 209 }\r
a929458e 210\r
211 /**\r
212 * This method initializes jButtonOk\r
213 * \r
214 * @return javax.swing.JButton\r
215 * \r
216 */\r
217 private JButton getJButtonOk() {\r
218 if (jButtonOk == null) {\r
219 jButtonOk = new JButton();\r
3f62225f 220 jButtonOk.setBounds(new java.awt.Rectangle(290, 162, 90, 20));\r
a929458e 221 jButtonOk.setText("Ok");\r
222 jButtonOk.addActionListener(this);\r
223 }\r
224 return jButtonOk;\r
06a19cee 225 }\r
a929458e 226\r
227 /**\r
228 * This method initializes jButtonCancel\r
229 * \r
230 * @return javax.swing.JButton\r
231 * \r
232 */\r
233 private JButton getJButtonCancel() {\r
234 if (jButtonCancel == null) {\r
235 jButtonCancel = new JButton();\r
3f62225f 236 jButtonCancel.setBounds(new java.awt.Rectangle(390, 162, 90, 20));\r
a929458e 237 jButtonCancel.setText("Cancel");\r
238 jButtonCancel.addActionListener(this);\r
239 }\r
240 return jButtonCancel;\r
06a19cee 241 }\r
a929458e 242\r
243 public static void main(String[] args) {\r
06a19cee 244 }\r
a929458e 245\r
246 /**\r
247 * This method initializes this\r
248 * \r
249 */\r
250 private void init() {\r
3f62225f 251 this.setSize(505, 235);\r
a929458e 252 this.setContentPane(getJScrollPane());\r
253 this.setTitle("Boot Modes");\r
254 initFrame();\r
255 this.setViewMode(false);\r
256 this.centerWindow();\r
06a19cee 257 }\r
a929458e 258\r
259 /**\r
260 * This method initializes this Fill values to all fields if these values are\r
261 * not empty\r
262 * \r
263 * @param inBootModesId\r
264 * \r
265 */\r
266 private void init(BootModesIdentification inBootModesId) {\r
267 init();\r
268 this.id = inBootModesId;\r
269\r
270 if (this.id != null) {\r
271 this.jComboBoxBootModeName.setSelectedItem(id.getName());\r
272 this.jComboBoxUsage.setSelectedItem(id.getUsage());\r
273 this.jTextAreaHelpText.setText(id.getHelp());\r
274 this.jTextFieldFeatureFlag.setText(id.getFeatureFlag());\r
275 this.jArchCheckBox.setSelectedItems(id.getSupArchList());\r
276 }\r
06a19cee 277 }\r
a929458e 278\r
279 /**\r
280 * This is the override edit constructor\r
281 * \r
282 * @param inBootModesIdentification\r
283 * @param iFrame\r
284 * \r
285 */\r
286 public BootModesDlg(BootModesIdentification inBootModesIdentification, IFrame iFrame) {\r
287 super(iFrame, true);\r
288 init(inBootModesIdentification);\r
06a19cee 289 }\r
a929458e 290\r
291 /**\r
292 * Disable all components when the mode is view\r
293 * \r
294 * @param isView\r
295 * true - The view mode; false - The non-view mode\r
296 * \r
297 */\r
298 public void setViewMode(boolean isView) {\r
299 if (isView) {\r
300 this.jComboBoxBootModeName.setEnabled(!isView);\r
301 this.jComboBoxUsage.setEnabled(!isView);\r
302 }\r
06a19cee 303 }\r
a929458e 304\r
305 /**\r
306 * This method initializes jContentPane\r
307 * \r
308 * @return javax.swing.JPanel jContentPane\r
309 * \r
310 */\r
311 private JPanel getJContentPane() {\r
312 if (jContentPane == null) {\r
313 jStarLabel1 = new StarLabel();\r
3f62225f 314 jStarLabel1.setLocation(new java.awt.Point(2, 12));\r
a929458e 315 jLabelBootModeName = new JLabel();\r
316 jLabelBootModeName.setText("Boot Mode Name");\r
3f62225f 317 jLabelBootModeName.setBounds(new java.awt.Rectangle(12, 12, 155, 20));\r
a929458e 318 jStarLabel2 = new StarLabel();\r
3f62225f 319 jStarLabel2.setLocation(new java.awt.Point(2, 37));\r
a929458e 320 jLabelUsage = new JLabel();\r
321 jLabelUsage.setText("Usage");\r
3f62225f 322 jLabelUsage.setBounds(new java.awt.Rectangle(12, 37, 155, 20));\r
a929458e 323 jLabelHelpText = new JLabel();\r
3f62225f 324 jLabelHelpText.setBounds(new java.awt.Rectangle(12, 62, 155, 20));\r
a929458e 325 jLabelHelpText.setText("Help Text");\r
326 jLabelFeatureFlag = new JLabel();\r
21b42c66 327 jLabelFeatureFlag.setBounds(new java.awt.Rectangle(12, 132, 155, 20));\r
a929458e 328 jLabelFeatureFlag.setText("Feature Flag Expression");\r
21b42c66 329 jLabelFeatureFlag.setEnabled(false);\r
a929458e 330 jLabelArch = new JLabel();\r
21b42c66 331 jLabelArch.setBounds(new java.awt.Rectangle(12, 107, 155, 20));\r
a929458e 332 jLabelArch.setText("Supported Archectures");\r
333 jArchCheckBox = new ArchCheckBox();\r
21b42c66 334 jArchCheckBox.setBounds(new java.awt.Rectangle(168, 107, 320, 20));\r
a929458e 335 jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\r
336\r
337 jContentPane = new JPanel();\r
338 jContentPane.setLayout(null);\r
3f62225f 339 jContentPane.setPreferredSize(new java.awt.Dimension(480, 180));\r
a929458e 340\r
341 jContentPane.add(jLabelBootModeName, null);\r
342 jContentPane.add(getJComboBoxBootModeName(), null);\r
343 jContentPane.add(jLabelUsage, null);\r
344 jContentPane.add(getJComboBoxUsage(), null);\r
345\r
346 jContentPane.add(jStarLabel1, null);\r
347 jContentPane.add(jStarLabel2, null);\r
348 jContentPane.add(jLabelFeatureFlag, null);\r
349 jContentPane.add(getJTextFieldFeatureFlag(), null);\r
350 jContentPane.add(jLabelArch, null);\r
351\r
352 jContentPane.add(jLabelHelpText, null);\r
353 jContentPane.add(getJScrollPaneHelpText(), null);\r
354 jContentPane.add(jArchCheckBox, null);\r
355 jContentPane.add(getJButtonOk(), null);\r
356 jContentPane.add(getJButtonCancel(), null);\r
357 }\r
358 return jContentPane;\r
06a19cee 359 }\r
360\r
a929458e 361 /**\r
362 * This method initializes BootModeName groups and Usage type\r
363 * \r
364 */\r
365 private void initFrame() {\r
366 Tools.generateComboBoxByVector(jComboBoxBootModeName, ed.getVBootModeNames());\r
367 Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVPpiUsage());\r
06a19cee 368 }\r
369\r
a929458e 370 /*\r
371 * (non-Javadoc)\r
372 * \r
373 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
374 * \r
375 * Override actionPerformed to listen all actions\r
376 * \r
377 */\r
378 public void actionPerformed(ActionEvent arg0) {\r
379 if (arg0.getSource() == jButtonOk) {\r
380 if (checkAdd()) {\r
381 getCurrentBootModes();\r
382 this.returnType = DataType.RETURN_TYPE_OK;\r
383 this.setVisible(false);\r
384 }\r
385 }\r
386\r
387 if (arg0.getSource() == jButtonCancel) {\r
388 this.returnType = DataType.RETURN_TYPE_CANCEL;\r
389 this.setVisible(false);\r
390 }\r
391 }\r
392\r
393 /**\r
394 * Data validation for all fields\r
395 * \r
396 * @retval true - All datas are valid\r
397 * @retval false - At least one data is invalid\r
398 * \r
399 */\r
400 public boolean checkAdd() {\r
401 //\r
402 // Check if all fields have correct data types\r
403 //\r
404\r
405 //\r
406 // Check FeatureFlag\r
407 //\r
408 if (!isEmpty(this.jTextFieldFeatureFlag.getText())) {\r
409 if (!DataValidation.isFeatureFlag(this.jTextFieldFeatureFlag.getText())) {\r
410 Log.wrn("Update Boot Modes", "Incorrect data type for Feature Flag");\r
411 return false;\r
412 }\r
413 }\r
414\r
415 return true;\r
416 }\r
417\r
418 private BootModesIdentification getCurrentBootModes() {\r
419 String arg0 = this.jComboBoxBootModeName.getSelectedItem().toString();\r
420 String arg1 = this.jComboBoxUsage.getSelectedItem().toString();\r
421\r
422 String arg2 = this.jTextFieldFeatureFlag.getText();\r
423 Vector<String> arg3 = this.jArchCheckBox.getSelectedItemsVector();\r
424 String arg4 = this.jTextAreaHelpText.getText();\r
425 id = new BootModesIdentification(arg0, arg1, arg2, arg3, arg4);\r
426 return id;\r
06a19cee 427 }\r
428\r
a929458e 429 public BootModesIdentification getId() {\r
430 return id;\r
431 }\r
432\r
433 public void setId(BootModesIdentification id) {\r
434 this.id = id;\r
435 }\r
06a19cee 436}\r