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