]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/VariablesDlg.java
Added some additional comments in the files, as well as fixed some of them.
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / module / ui / dialog / VariablesDlg.java
CommitLineData
06a19cee 1/** @file\r
2 \r
3f62225f 3 The file is used to create, update Variables 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
15\r
16package org.tianocore.frameworkwizard.module.ui.dialog;\r
17\r
18import java.awt.event.ActionEvent;\r
19import java.util.Vector;\r
20\r
21import javax.swing.JButton;\r
22import javax.swing.JComboBox;\r
23import javax.swing.JLabel;\r
24import javax.swing.JPanel;\r
25import javax.swing.JScrollPane;\r
26import javax.swing.JTextField;\r
ccb063b1 27import javax.swing.JTextArea;\r
06a19cee 28\r
29import org.tianocore.frameworkwizard.common.DataType;\r
30import org.tianocore.frameworkwizard.common.DataValidation;\r
31import org.tianocore.frameworkwizard.common.EnumerationData;\r
32import org.tianocore.frameworkwizard.common.Log;\r
33import org.tianocore.frameworkwizard.common.Tools;\r
34import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;\r
35import org.tianocore.frameworkwizard.common.ui.IDialog;\r
36import org.tianocore.frameworkwizard.common.ui.IFrame;\r
37import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
38import org.tianocore.frameworkwizard.module.Identifications.Variables.VariablesIdentification;\r
39import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
40\r
41/**\r
9e857952 42 * The class is used to create, update Variables section of the MSA file\r
43 * \r
3f62225f 44 * It extends IDialog\r
ccb063b1 45 * \r
46 */\r
06a19cee 47public class VariablesDlg extends IDialog {\r
48\r
a929458e 49 // /\r
50 // / Define class Serial Version UID\r
51 // /\r
52 private static final long serialVersionUID = -6998982978030439446L;\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 jLabelVariableName = null;\r
06a19cee 60\r
a929458e 61 private JTextField jTextFieldVariableName = 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 StarLabel jStarLabel3 = null;\r
06a19cee 72\r
a929458e 73 private JScrollPane jScrollPane = null;\r
06a19cee 74\r
a929458e 75 private JLabel jLabelGuidCName = null;\r
06a19cee 76\r
a929458e 77 private JComboBox jComboBoxGuidC_Name = null;\r
06a19cee 78\r
a929458e 79 private JTextField jTextFieldFeatureFlag = null;\r
06a19cee 80\r
a929458e 81 private JLabel jLabelFeatureFlag = null;\r
06a19cee 82\r
a929458e 83 private JLabel jLabelArch = null;\r
06a19cee 84\r
a929458e 85 private JLabel jLabelHelpText = null;\r
06a19cee 86\r
a929458e 87 private JTextArea jTextAreaHelpText = null;\r
06a19cee 88\r
a929458e 89 private JScrollPane jScrollPaneHelpText = null;\r
06a19cee 90\r
a929458e 91 private ArchCheckBox jArchCheckBox = null;\r
06a19cee 92\r
a929458e 93 private JButton jButtonOk = null;\r
06a19cee 94\r
a929458e 95 private JButton jButtonCancel = null;\r
06a19cee 96\r
a929458e 97 //\r
98 // Not used by UI\r
99 //\r
100 private VariablesIdentification id = null;\r
101\r
102 private EnumerationData ed = new EnumerationData();\r
103\r
104 private WorkspaceTools wt = new WorkspaceTools();\r
105\r
106 /**\r
107 * This method initializes jTextFieldString\r
108 * \r
109 * @return javax.swing.JTextField jTextFieldString\r
110 * \r
111 */\r
112 private JTextField getJTextFieldString() {\r
113 if (jTextFieldVariableName == null) {\r
114 jTextFieldVariableName = new JTextField();\r
115 jTextFieldVariableName.setSize(new java.awt.Dimension(320, 20));\r
116 jTextFieldVariableName.setPreferredSize(new java.awt.Dimension(320, 20));\r
3f62225f 117 jTextFieldVariableName.setLocation(new java.awt.Point(168, 12));\r
a929458e 118 jTextFieldVariableName\r
119 .setToolTipText("Enter a Hex Word Array, you must provide leading Zeros. 0x000a, 0x0010, 0x00FF");\r
120 }\r
121 return jTextFieldVariableName;\r
122 }\r
06a19cee 123\r
a929458e 124 /**\r
125 * This method initializes jComboBoxUsage\r
126 * \r
127 * @return javax.swing.JComboBox jComboBoxUsage\r
128 * \r
129 */\r
130 private JComboBox getJComboBoxUsage() {\r
131 if (jComboBoxUsage == null) {\r
132 jComboBoxUsage = new JComboBox();\r
3f62225f 133 jComboBoxUsage.setBounds(new java.awt.Rectangle(168, 62, 320, 20));\r
a929458e 134 jComboBoxUsage.setPreferredSize(new java.awt.Dimension(320, 20));\r
135 jComboBoxUsage\r
9e857952 136 .setToolTipText("<html><table>"\r
137 + "<tr><td>ALWAYS_CONSUMED</td><td>The module requires the variable entry to be set</td></tr>"\r
138 + "<tr><td>SOMETIMES_CONSUMED</td><td>The module will use the variable entry if it is set.</td></tr>"\r
139 + "<tr><td>ALWAYS_PRODUCED</td><td>The module will always write the variable.</td></tr>"\r
140 + "<tr><td>SOMETIMES_PRODUCED</td><td>The module will sometimes write the variable.</td></tr>"\r
141 + "</table></html>");\r
a929458e 142 }\r
143 return jComboBoxUsage;\r
144 }\r
06a19cee 145\r
a929458e 146 /**\r
147 * This method initializes jScrollPane\r
148 * \r
149 * @return javax.swing.JScrollPane\r
150 */\r
151 private JScrollPane getJScrollPane() {\r
152 if (jScrollPane == null) {\r
153 jScrollPane = new JScrollPane();\r
154 jScrollPane.setViewportView(getJContentPane());\r
155 }\r
156 return jScrollPane;\r
06a19cee 157 }\r
a929458e 158\r
159 /**\r
160 * This method initializes jTextFieldFeatureFlag\r
161 * \r
162 * @return javax.swing.JTextField jTextFieldFeatureFlag\r
163 * \r
164 */\r
165 private JTextField getJTextFieldFeatureFlag() {\r
166 if (jTextFieldFeatureFlag == null) {\r
167 jTextFieldFeatureFlag = new JTextField();\r
3f62225f 168 jTextFieldFeatureFlag.setBounds(new java.awt.Rectangle(168, 132, 320, 20));\r
a929458e 169 jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(320, 20));\r
170 jTextFieldFeatureFlag.setToolTipText("Postfix expression that must evaluate to TRUE or FALSE");\r
171 }\r
172 return jTextFieldFeatureFlag;\r
06a19cee 173 }\r
a929458e 174\r
175 /**\r
176 * This method initializes jTextFieldHelpText\r
177 * \r
178 * @return javax.swing.JTextField\r
179 * \r
180 */\r
181 private JTextArea getJTextAreaHelpText() {\r
182 if (jTextAreaHelpText == null) {\r
183 jTextAreaHelpText = new JTextArea();\r
184 jTextAreaHelpText.setLineWrap(true);\r
185 jTextAreaHelpText.setWrapStyleWord(true);\r
186 jTextAreaHelpText.setToolTipText("Enter information on how to use this Variable.");\r
187 }\r
188 return jTextAreaHelpText;\r
06a19cee 189 }\r
a929458e 190\r
191 private JScrollPane getJScrollPaneHelpText() {\r
192 if (jScrollPaneHelpText == null) {\r
193 jScrollPaneHelpText = new JScrollPane();\r
194 jScrollPaneHelpText.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);\r
195 jScrollPaneHelpText.setSize(new java.awt.Dimension(320, 40));\r
196 jScrollPaneHelpText.setPreferredSize(new java.awt.Dimension(320, 40));\r
3f62225f 197 jScrollPaneHelpText.setLocation(new java.awt.Point(168, 87));\r
a929458e 198 jScrollPaneHelpText.setViewportView(getJTextAreaHelpText());\r
199 }\r
200 return jScrollPaneHelpText;\r
06a19cee 201 }\r
a929458e 202\r
203 /**\r
204 * This method initializes jComboBoxGuidC_Name\r
205 * \r
206 * @return javax.swing.JComboBox jComboBoxGuidC_Name\r
207 * \r
208 */\r
209 private JComboBox getJComboBoxGuidC_Name() {\r
210 if (jComboBoxGuidC_Name == null) {\r
211 jComboBoxGuidC_Name = new JComboBox();\r
3f62225f 212 jComboBoxGuidC_Name.setBounds(new java.awt.Rectangle(168, 37, 320, 20));\r
a929458e 213 jComboBoxGuidC_Name.setPreferredSize(new java.awt.Dimension(320, 20));\r
214 jComboBoxGuidC_Name.setToolTipText("Select the GUID C Name of the Variable.");\r
215 }\r
216 return jComboBoxGuidC_Name;\r
06a19cee 217 }\r
a929458e 218\r
219 /**\r
220 * This method initializes jButtonOk\r
221 * \r
222 * @return javax.swing.JButton\r
223 * \r
224 */\r
225 private JButton getJButtonOk() {\r
226 if (jButtonOk == null) {\r
227 jButtonOk = new JButton();\r
3f62225f 228 jButtonOk.setBounds(new java.awt.Rectangle(290, 187, 90, 20));\r
a929458e 229 jButtonOk.setText("Ok");\r
230 jButtonOk.addActionListener(this);\r
231 }\r
232 return jButtonOk;\r
06a19cee 233 }\r
a929458e 234\r
235 /**\r
236 * This method initializes jButtonCancel\r
237 * \r
238 * @return javax.swing.JButton\r
239 * \r
240 */\r
241 private JButton getJButtonCancel() {\r
242 if (jButtonCancel == null) {\r
243 jButtonCancel = new JButton();\r
3f62225f 244 jButtonCancel.setBounds(new java.awt.Rectangle(390, 187, 90, 20));\r
a929458e 245 jButtonCancel.setText("Cancel");\r
246 jButtonCancel.addActionListener(this);\r
247 }\r
248 return jButtonCancel;\r
249 }\r
250\r
251 public static void main(String[] args) {\r
252\r
06a19cee 253 }\r
a929458e 254\r
255 /**\r
256 * This method initializes this\r
257 * \r
258 */\r
259 private void init() {\r
3f62225f 260 this.setSize(505, 260);\r
a929458e 261 this.setContentPane(getJScrollPane());\r
262 this.setTitle("Variables");\r
263 initFrame();\r
264 this.setViewMode(false);\r
265 this.centerWindow();\r
06a19cee 266 }\r
a929458e 267\r
268 /**\r
269 * This method initializes this Fill values to all fields if these values are\r
270 * not empty\r
271 * \r
272 * @param inVariablesId\r
273 * \r
274 */\r
275 private void init(VariablesIdentification inVariablesId) {\r
276 init();\r
277 this.id = inVariablesId;\r
278\r
279 if (this.id != null) {\r
280 this.jTextFieldVariableName.setText(id.getName());\r
281 this.jComboBoxGuidC_Name.setSelectedItem(id.getGuid());\r
282 this.jComboBoxUsage.setSelectedItem(id.getUsage());\r
283 this.jTextAreaHelpText.setText(id.getHelp());\r
284 this.jTextFieldFeatureFlag.setText(id.getFeatureFlag());\r
285 this.jArchCheckBox.setSelectedItems(id.getSupArchList());\r
286 }\r
06a19cee 287 }\r
a929458e 288\r
289 /**\r
290 * This is the override edit constructor\r
291 * \r
292 * @param inVariablesIdentification\r
293 * @param iFrame\r
294 * \r
295 */\r
296 public VariablesDlg(VariablesIdentification inVariablesIdentification, IFrame iFrame) {\r
297 super(iFrame, true);\r
298 init(inVariablesIdentification);\r
06a19cee 299 }\r
a929458e 300\r
301 /**\r
302 * Disable all components when the mode is view\r
303 * \r
304 * @param isView\r
305 * true - The view mode; false - The non-view mode\r
306 * \r
307 */\r
308 public void setViewMode(boolean isView) {\r
309 if (isView) {\r
310 this.jTextFieldVariableName.setEnabled(!isView);\r
311 this.jComboBoxUsage.setEnabled(!isView);\r
312 }\r
06a19cee 313 }\r
a929458e 314\r
315 /**\r
316 * This method initializes jContentPane\r
317 * \r
318 * @return javax.swing.JPanel jContentPane\r
319 * \r
320 */\r
321 private JPanel getJContentPane() {\r
322 if (jContentPane == null) {\r
323 jStarLabel1 = new StarLabel();\r
3f62225f 324 jStarLabel1.setLocation(new java.awt.Point(2, 12));\r
a929458e 325 jLabelVariableName = new JLabel();\r
326 jLabelVariableName.setText("Variable Name");\r
3f62225f 327 jLabelVariableName.setBounds(new java.awt.Rectangle(12, 12, 168, 20));\r
a929458e 328\r
329 jStarLabel2 = new StarLabel();\r
3f62225f 330 jStarLabel2.setLocation(new java.awt.Point(2, 37));\r
a929458e 331 jLabelGuidCName = new JLabel();\r
3f62225f 332 jLabelGuidCName.setBounds(new java.awt.Rectangle(12, 37, 168, 20));\r
a929458e 333 jLabelGuidCName.setText("Variable Guid C Name");\r
334\r
335 jStarLabel3 = new StarLabel();\r
3f62225f 336 jStarLabel3.setLocation(new java.awt.Point(2, 62));\r
a929458e 337 jLabelUsage = new JLabel();\r
338 jLabelUsage.setText("Usage");\r
3f62225f 339 jLabelUsage.setBounds(new java.awt.Rectangle(12, 62, 168, 20));\r
a929458e 340\r
341 jLabelHelpText = new JLabel();\r
3f62225f 342 jLabelHelpText.setBounds(new java.awt.Rectangle(12, 87, 168, 20));\r
a929458e 343 jLabelHelpText.setText("Help Text");\r
344\r
345 jLabelFeatureFlag = new JLabel();\r
346 jLabelFeatureFlag.setText("Feature Flag Expression");\r
3f62225f 347 jLabelFeatureFlag.setBounds(new java.awt.Rectangle(12, 132, 168, 20));\r
a929458e 348\r
349 jLabelArch = new JLabel();\r
3f62225f 350 jLabelArch.setBounds(new java.awt.Rectangle(12, 157, 168, 20));\r
a929458e 351 jLabelArch.setText("Supported Architectures");\r
352 jArchCheckBox = new ArchCheckBox();\r
3f62225f 353 jArchCheckBox.setBounds(new java.awt.Rectangle(168, 157, 320, 20));\r
a929458e 354 jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\r
355\r
356 jContentPane = new JPanel();\r
357 jContentPane.setLayout(null);\r
3f62225f 358 jContentPane.setPreferredSize(new java.awt.Dimension(485, 215));\r
a929458e 359\r
360 jContentPane.add(jStarLabel1, null);\r
361 jContentPane.add(jLabelVariableName, null);\r
362 jContentPane.add(getJTextFieldString(), null);\r
363 jContentPane.add(jStarLabel2, null);\r
364 jContentPane.add(jLabelGuidCName, null);\r
365 jContentPane.add(getJComboBoxGuidC_Name(), null);\r
366 jContentPane.add(jStarLabel3, null);\r
367 jContentPane.add(jLabelUsage, null);\r
368 jContentPane.add(getJComboBoxUsage(), null);\r
369 jContentPane.add(jLabelHelpText, null);\r
370 jContentPane.add(getJScrollPaneHelpText(), null);\r
371 jContentPane.add(jLabelFeatureFlag, null);\r
372 jContentPane.add(getJTextFieldFeatureFlag(), null);\r
373 jContentPane.add(jLabelArch, null);\r
374 jContentPane.add(jArchCheckBox, null);\r
375 jContentPane.add(getJButtonOk(), null);\r
376 jContentPane.add(getJButtonCancel(), null);\r
377 }\r
378 return jContentPane;\r
06a19cee 379 }\r
a929458e 380\r
381 /*\r
382 * (non-Javadoc)\r
383 * \r
384 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
385 * \r
386 * Override actionPerformed to listen all actions\r
387 * \r
388 */\r
389 public void actionPerformed(ActionEvent arg0) {\r
390 if (arg0.getSource() == jButtonOk) {\r
391 if (checkAdd()) {\r
392 getCurrentVariables();\r
393 this.returnType = DataType.RETURN_TYPE_OK;\r
394 this.setVisible(false);\r
395 }\r
396 }\r
397\r
398 if (arg0.getSource() == jButtonCancel) {\r
399 this.returnType = DataType.RETURN_TYPE_CANCEL;\r
400 this.setVisible(false);\r
401 }\r
06a19cee 402 }\r
403\r
a929458e 404 /**\r
405 * This method initializes Usage type\r
406 * \r
407 */\r
408 private void initFrame() {\r
409 Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVPpiUsage());\r
410 Tools.generateComboBoxByVector(jComboBoxGuidC_Name, wt.getAllGuidDeclarationsFromWorkspace());\r
ccb063b1 411 }\r
06a19cee 412\r
a929458e 413 /**\r
414 * Data validation for all fields\r
415 * \r
416 * @retval true - All datas are valid\r
417 * @retval false - At least one data is invalid\r
418 * \r
419 */\r
420 public boolean checkAdd() {\r
421 //\r
422 // Check if all fields have correct data types\r
423 //\r
424\r
425 //\r
426 // Check VariableName\r
427 //\r
428 if (isEmpty(this.jTextFieldVariableName.getText())) {\r
429 Log.wrn("Update Variables", "Variable Name must not be empty");\r
430 return false;\r
431 }\r
432\r
433 if (!isEmpty(this.jTextFieldVariableName.getText())) {\r
434 if (!DataValidation.isHexWordArrayType(this.jTextFieldVariableName.getText())) {\r
435 Log.wrn("Update Variables", "Incorrect data type for Variable Name");\r
436 return false;\r
437 }\r
438 }\r
439\r
440 //\r
441 // Check FeatureFlag\r
442 //\r
443 if (!isEmpty(this.jTextFieldFeatureFlag.getText())) {\r
444 if (!DataValidation.isFeatureFlag(this.jTextFieldFeatureFlag.getText())) {\r
445 Log.wrn("Update Variables", "Incorrect data type for Feature Flag");\r
446 return false;\r
447 }\r
448 }\r
449\r
450 return true;\r
06a19cee 451 }\r
452\r
a929458e 453 private VariablesIdentification getCurrentVariables() {\r
454 String arg0 = this.jTextFieldVariableName.getText();\r
455 String arg1 = this.jComboBoxGuidC_Name.getSelectedItem().toString();\r
456 String arg2 = this.jComboBoxUsage.getSelectedItem().toString();\r
457\r
458 String arg3 = this.jTextFieldFeatureFlag.getText();\r
459 Vector<String> arg4 = this.jArchCheckBox.getSelectedItemsVector();\r
460 String arg5 = this.jTextAreaHelpText.getText();\r
461\r
462 id = new VariablesIdentification(arg0, arg1, arg2, arg3, arg4, arg5);\r
463 return id;\r
06a19cee 464 }\r
465\r
a929458e 466 public VariablesIdentification getId() {\r
467 return id;\r
06a19cee 468 }\r
ccb063b1 469\r
a929458e 470 public void setId(VariablesIdentification id) {\r
471 this.id = id;\r
472 }\r
06a19cee 473}\r