]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/BootModesDlg.java
Adjusted sizes to accommodate Windows, iMac and Linux GUI
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / module / ui / dialog / BootModesDlg.java
... / ...
CommitLineData
1/** @file\r
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
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
15 Package Name: Tools\r
16 Module Name: FrameworkWizard\r
17 \r
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
31import javax.swing.JTextArea;\r
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
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
51public class BootModesDlg extends IDialog {\r
52\r
53 // /\r
54 // / Define class Serial Version UID\r
55 // /\r
56 private static final long serialVersionUID = -3888558623432442561L;\r
57\r
58 //\r
59 // Define class members\r
60 //\r
61 private JPanel jContentPane = null;\r
62private JLabel jLabelTest = null;\r
63 private JLabel jLabelBootModeName = null;\r
64\r
65 private JComboBox jComboBoxBootModeName = null;\r
66\r
67 private JLabel jLabelUsage = null;\r
68\r
69 private JComboBox jComboBoxUsage = null;\r
70\r
71 private StarLabel jStarLabel1 = null;\r
72\r
73 private StarLabel jStarLabel2 = null;\r
74\r
75 private JLabel jLabelFeatureFlag = null;\r
76\r
77 private JTextField jTextFieldFeatureFlag = null;\r
78\r
79 private JLabel jLabelArch = null;\r
80\r
81 private JScrollPane jScrollPane = null;\r
82\r
83 private JLabel jLabelHelpText = null;\r
84\r
85 private JTextArea jTextAreaHelpText = null;\r
86\r
87 private JScrollPane jScrollPaneHelpText = null;\r
88\r
89 private ArchCheckBox jArchCheckBox = null;\r
90\r
91 private JButton jButtonOk = null;\r
92\r
93 private JButton jButtonCancel = null;\r
94\r
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(168, 12, 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
127\r
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(168, 37, 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
149\r
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(168, 107, 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
163 }\r
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
176 }\r
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
191 }\r
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(168, 62));\r
206 jScrollPaneHelpText.setViewportView(getJTextAreaHelpText());\r
207 }\r
208 return jScrollPaneHelpText;\r
209 }\r
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, 162, 90, 20));\r
221 jButtonOk.setText("Ok");\r
222 jButtonOk.addActionListener(this);\r
223 }\r
224 return jButtonOk;\r
225 }\r
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, 162, 90, 20));\r
237 jButtonCancel.setText("Cancel");\r
238 jButtonCancel.addActionListener(this);\r
239 }\r
240 return jButtonCancel;\r
241 }\r
242\r
243 public static void main(String[] args) {\r
244 }\r
245\r
246 /**\r
247 * This method initializes this\r
248 * \r
249 */\r
250 private void init() {\r
251 this.setSize(505, 235);\r
252 this.setContentPane(getJScrollPane());\r
253 this.setTitle("Boot Modes");\r
254 initFrame();\r
255 this.setViewMode(false);\r
256 this.centerWindow();\r
257 }\r
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
277 }\r
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
289 }\r
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
303 }\r
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, 12));\r
315 jLabelBootModeName = new JLabel();\r
316 jLabelBootModeName.setText("Boot Mode Name");\r
317 jLabelBootModeName.setBounds(new java.awt.Rectangle(12, 12, 155, 20));\r
318 jStarLabel2 = new StarLabel();\r
319 jStarLabel2.setLocation(new java.awt.Point(2, 37));\r
320 jLabelUsage = new JLabel();\r
321 jLabelUsage.setText("Usage");\r
322 jLabelUsage.setBounds(new java.awt.Rectangle(12, 37, 155, 20));\r
323 jLabelHelpText = new JLabel();\r
324 jLabelHelpText.setBounds(new java.awt.Rectangle(12, 62, 155, 20));\r
325 jLabelHelpText.setText("Help Text");\r
326 jLabelFeatureFlag = new JLabel();\r
327 jLabelFeatureFlag.setBounds(new java.awt.Rectangle(12, 107, 155, 20));\r
328 jLabelFeatureFlag.setText("Feature Flag Expression");\r
329 jLabelArch = new JLabel();\r
330 jLabelArch.setBounds(new java.awt.Rectangle(12, 132, 155, 20));\r
331 jLabelArch.setText("Supported Archectures");\r
332 jArchCheckBox = new ArchCheckBox();\r
333 jArchCheckBox.setBounds(new java.awt.Rectangle(168, 132, 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(480, 180));\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
358 }\r
359\r
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
367 }\r
368\r
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
426 }\r
427\r
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
435}\r