]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/BootModesDlg.java
Fixed spacing for Linux and iMac display
[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
5b38b75b 45 * The class is used to create, update BootModes of MSA/MBD file It extends\r
46 * IDialog\r
47 * \r
48 * \r
49 * \r
50 */\r
06a19cee 51public class BootModesDlg extends IDialog {\r
52\r
a929458e 53 // /\r
54 // / Define class Serial Version UID\r
55 // /\r
56 private static final long serialVersionUID = -3888558623432442561L;\r
06a19cee 57\r
a929458e 58 //\r
59 // Define class members\r
60 //\r
61 private JPanel jContentPane = null;\r
06a19cee 62\r
a929458e 63 private JLabel jLabelBootModeName = null;\r
06a19cee 64\r
a929458e 65 private JComboBox jComboBoxBootModeName = null;\r
06a19cee 66\r
a929458e 67 private JLabel jLabelUsage = null;\r
06a19cee 68\r
a929458e 69 private JComboBox jComboBoxUsage = null;\r
06a19cee 70\r
a929458e 71 private StarLabel jStarLabel1 = null;\r
06a19cee 72\r
a929458e 73 private StarLabel jStarLabel2 = null;\r
06a19cee 74\r
a929458e 75 private JLabel jLabelFeatureFlag = null;\r
06a19cee 76\r
a929458e 77 private JTextField jTextFieldFeatureFlag = null;\r
06a19cee 78\r
a929458e 79 private JLabel jLabelArch = null;\r
5262e237 80\r
a929458e 81 private JScrollPane jScrollPane = null;\r
06a19cee 82\r
a929458e 83 private JLabel jLabelHelpText = null;\r
06a19cee 84\r
a929458e 85 private JTextArea jTextAreaHelpText = null;\r
06a19cee 86\r
a929458e 87 private JScrollPane jScrollPaneHelpText = null;\r
06a19cee 88\r
a929458e 89 private ArchCheckBox jArchCheckBox = null;\r
06a19cee 90\r
a929458e 91 private JButton jButtonOk = null;\r
06a19cee 92\r
a929458e 93 private JButton jButtonCancel = null;\r
06a19cee 94\r
a929458e 95 //\r
96 // Not used by UI\r
97 //\r
98 private BootModesIdentification id = null;\r
99\r
100 private EnumerationData ed = new EnumerationData();\r
101\r
102 /**\r
103 * This method initializes jComboBoxBootModeName\r
104 * \r
105 * @return javax.swing.JComboBox jComboBoxBootModeName\r
106 * \r
107 */\r
108 private JComboBox getJComboBoxBootModeName() {\r
109 if (jComboBoxBootModeName == null) {\r
110 jComboBoxBootModeName = new JComboBox();\r
111 jComboBoxBootModeName.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
112 jComboBoxBootModeName.setPreferredSize(new java.awt.Dimension(320, 20));\r
113 jComboBoxBootModeName\r
114 .setToolTipText("<html><table>"\r
115 + "<tr><td>FULL</td><td>Boot with full configuration</td></tr>"\r
116 + "<tr><td>MINIMAL</td><td>Boot with minimal configuration</td></tr>"\r
117 + "<tr><td>NO_CHANGE</td><td>Boot assuming no configuration changes</td></tr>"\r
118 + "<tr><td>DIAGNOSTICS</td><td>Boot with full configuration plus diagnostics</td></tr>"\r
119 + "<tr><td>DEFAULT</td><td>Boot with default settings</td></tr>"\r
120 + "<tr><td>BOOT_ON_S#_RESUME</td><td>where # is 2, 3, 4 or 5</td></tr>"\r
121 + "<tr><td>FLASH_UPDATE</td><td>Boot on flash update</td></tr>"\r
122 + "<tr><td>RECOVERY</td><td>Boot in recovery mode</td></tr>"\r
123 + "</table></html>");\r
124 }\r
125 return jComboBoxBootModeName;\r
126 }\r
06a19cee 127\r
a929458e 128 /**\r
129 * This method initializes jComboBoxUsage\r
130 * \r
131 * @return javax.swing.JComboBox jComboBoxUsage\r
132 * \r
133 */\r
134 private JComboBox getJComboBoxUsage() {\r
135 if (jComboBoxUsage == null) {\r
136 jComboBoxUsage = new JComboBox();\r
137 jComboBoxUsage.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
138 jComboBoxUsage.setPreferredSize(new java.awt.Dimension(320, 20));\r
139 jComboBoxUsage\r
140 .setToolTipText("<html><table>"\r
141 + "<tr><td>ALWAYS_CONSUMED</td><td>Indicates Supports the specified boot mode</td></tr>"\r
142 + "<tr><td>SOMETIMES_CONSUMED</td><td>Indicates Supports the specified boot mode on some execution paths</td></tr>"\r
143 + "<tr><td>ALWAYS_PRODUCED</td><td>Always changes the boot mode</td></tr>"\r
144 + "<tr><td>SOMETIMES_PRODUCED</td><td>Change the boot mode sometimes</td></tr>"\r
145 + "</table></html>");\r
146 }\r
147 return jComboBoxUsage;\r
148 }\r
5262e237 149\r
a929458e 150 /**\r
151 * This method initializes jTextFieldFeatureFlag\r
152 * \r
153 * @return javax.swing.JTextField\r
154 */\r
155 private JTextField getJTextFieldFeatureFlag() {\r
156 if (jTextFieldFeatureFlag == null) {\r
157 jTextFieldFeatureFlag = new JTextField();\r
158 jTextFieldFeatureFlag.setBounds(new java.awt.Rectangle(160, 105, 320, 20));\r
159 jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(320, 20));\r
160 jTextFieldFeatureFlag.setToolTipText("Postfix expression that must evaluate to TRUE or FALSE");\r
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
205 jScrollPaneHelpText.setLocation(new java.awt.Point(160, 60));\r
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
220 jButtonOk.setBounds(new java.awt.Rectangle(290, 157, 90, 20));\r
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
236 jButtonCancel.setBounds(new java.awt.Rectangle(390, 157, 90, 20));\r
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
251 this.setSize(500, 230);\r
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
314 jStarLabel1.setLocation(new java.awt.Point(2, 10));\r
315 jLabelBootModeName = new JLabel();\r
316 jLabelBootModeName.setText("Boot Mode Name");\r
317 jLabelBootModeName.setBounds(new java.awt.Rectangle(15, 10, 145, 20));\r
318 jStarLabel2 = new StarLabel();\r
319 jStarLabel2.setLocation(new java.awt.Point(2, 35));\r
320 jLabelUsage = new JLabel();\r
321 jLabelUsage.setText("Usage");\r
322 jLabelUsage.setBounds(new java.awt.Rectangle(15, 35, 145, 20));\r
323 jLabelHelpText = new JLabel();\r
324 jLabelHelpText.setBounds(new java.awt.Rectangle(15, 60, 145, 20));\r
325 jLabelHelpText.setText("Help Text");\r
326 jLabelFeatureFlag = new JLabel();\r
327 jLabelFeatureFlag.setBounds(new java.awt.Rectangle(15, 105, 145, 20));\r
328 jLabelFeatureFlag.setText("Feature Flag Expression");\r
329 jLabelArch = new JLabel();\r
330 jLabelArch.setBounds(new java.awt.Rectangle(15, 130, 145, 20));\r
331 jLabelArch.setText("Supported Archectures");\r
332 jArchCheckBox = new ArchCheckBox();\r
333 jArchCheckBox.setBounds(new java.awt.Rectangle(160, 130, 320, 20));\r
334 jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\r
335\r
336 jContentPane = new JPanel();\r
337 jContentPane.setLayout(null);\r
338 jContentPane.setPreferredSize(new java.awt.Dimension(485, 185));\r
339\r
340 jContentPane.add(jLabelBootModeName, null);\r
341 jContentPane.add(getJComboBoxBootModeName(), null);\r
342 jContentPane.add(jLabelUsage, null);\r
343 jContentPane.add(getJComboBoxUsage(), null);\r
344\r
345 jContentPane.add(jStarLabel1, null);\r
346 jContentPane.add(jStarLabel2, null);\r
347 jContentPane.add(jLabelFeatureFlag, null);\r
348 jContentPane.add(getJTextFieldFeatureFlag(), null);\r
349 jContentPane.add(jLabelArch, null);\r
350\r
351 jContentPane.add(jLabelHelpText, null);\r
352 jContentPane.add(getJScrollPaneHelpText(), null);\r
353 jContentPane.add(jArchCheckBox, null);\r
354 jContentPane.add(getJButtonOk(), null);\r
355 jContentPane.add(getJButtonCancel(), null);\r
356 }\r
357 return jContentPane;\r
06a19cee 358 }\r
359\r
a929458e 360 /**\r
361 * This method initializes BootModeName groups and Usage type\r
362 * \r
363 */\r
364 private void initFrame() {\r
365 Tools.generateComboBoxByVector(jComboBoxBootModeName, ed.getVBootModeNames());\r
366 Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVPpiUsage());\r
06a19cee 367 }\r
368\r
a929458e 369 /*\r
370 * (non-Javadoc)\r
371 * \r
372 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
373 * \r
374 * Override actionPerformed to listen all actions\r
375 * \r
376 */\r
377 public void actionPerformed(ActionEvent arg0) {\r
378 if (arg0.getSource() == jButtonOk) {\r
379 if (checkAdd()) {\r
380 getCurrentBootModes();\r
381 this.returnType = DataType.RETURN_TYPE_OK;\r
382 this.setVisible(false);\r
383 }\r
384 }\r
385\r
386 if (arg0.getSource() == jButtonCancel) {\r
387 this.returnType = DataType.RETURN_TYPE_CANCEL;\r
388 this.setVisible(false);\r
389 }\r
390 }\r
391\r
392 /**\r
393 * Data validation for all fields\r
394 * \r
395 * @retval true - All datas are valid\r
396 * @retval false - At least one data is invalid\r
397 * \r
398 */\r
399 public boolean checkAdd() {\r
400 //\r
401 // Check if all fields have correct data types\r
402 //\r
403\r
404 //\r
405 // Check FeatureFlag\r
406 //\r
407 if (!isEmpty(this.jTextFieldFeatureFlag.getText())) {\r
408 if (!DataValidation.isFeatureFlag(this.jTextFieldFeatureFlag.getText())) {\r
409 Log.wrn("Update Boot Modes", "Incorrect data type for Feature Flag");\r
410 return false;\r
411 }\r
412 }\r
413\r
414 return true;\r
415 }\r
416\r
417 private BootModesIdentification getCurrentBootModes() {\r
418 String arg0 = this.jComboBoxBootModeName.getSelectedItem().toString();\r
419 String arg1 = this.jComboBoxUsage.getSelectedItem().toString();\r
420\r
421 String arg2 = this.jTextFieldFeatureFlag.getText();\r
422 Vector<String> arg3 = this.jArchCheckBox.getSelectedItemsVector();\r
423 String arg4 = this.jTextAreaHelpText.getText();\r
424 id = new BootModesIdentification(arg0, arg1, arg2, arg3, arg4);\r
425 return id;\r
06a19cee 426 }\r
427\r
a929458e 428 public BootModesIdentification getId() {\r
429 return id;\r
430 }\r
431\r
432 public void setId(BootModesIdentification id) {\r
433 this.id = id;\r
434 }\r
06a19cee 435}\r