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