]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/PCDsDlg.java
Adjusted the Help Text field to be a Text Area inside of a Scroll Pane, with line...
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / module / ui / dialog / PCDsDlg.java
CommitLineData
06a19cee 1/** @file\r
2 \r
3 The file is used to create, update PCD 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
15package org.tianocore.frameworkwizard.module.ui.dialog;\r
16\r
17import java.awt.event.ActionEvent;\r
9a8d6d9f 18import java.awt.event.ItemEvent;\r
19import java.awt.event.ItemListener;\r
06a19cee 20import java.util.Vector;\r
21\r
22import javax.swing.JButton;\r
23import javax.swing.JComboBox;\r
24import javax.swing.JLabel;\r
25import javax.swing.JPanel;\r
26import javax.swing.JScrollPane;\r
27import javax.swing.JTextField;\r
747e1504 28import javax.swing.JTextArea;\r
06a19cee 29\r
30import org.tianocore.frameworkwizard.common.DataType;\r
31import org.tianocore.frameworkwizard.common.DataValidation;\r
06a19cee 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.PcdCoded.PcdCodedIdentification;\r
9a8d6d9f 39import org.tianocore.frameworkwizard.module.Identifications.PcdCoded.PcdVector;\r
06a19cee 40import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
41\r
42/**\r
43 The class is used to create, update PCD of MSA/MBD file\r
44 It extends IInternalFrame\r
45 \r
06a19cee 46 **/\r
9a8d6d9f 47public class PCDsDlg extends IDialog implements ItemListener {\r
06a19cee 48\r
49 ///\r
50 /// Define class Serial Version UID\r
51 ///\r
52 private static final long serialVersionUID = 2227717658188438696L;\r
53\r
54 //\r
55 //Define class members\r
56 //\r
57 private JPanel jContentPane = null;\r
58\r
59 private JLabel jLabelItemType = null;\r
60\r
61 private JLabel jLabelC_Name = null;\r
62\r
63 private JComboBox jComboBoxItemType = null;\r
64\r
65 private JComboBox jComboBoxCName = null;\r
66\r
67 private JLabel jLabelDefaultValue = null;\r
68\r
69 private JTextField jTextFieldDefaultValue = null;\r
70\r
71 private StarLabel jStarLabel1 = null;\r
72\r
73 private StarLabel jStarLabel2 = null;\r
74\r
75 private StarLabel jStarLabel3 = null;\r
76\r
77 private JLabel jLabelHelpText = null;\r
78\r
747e1504 79 private JTextArea jTextAreaHelpText = null;\r
06a19cee 80\r
81 private JScrollPane jScrollPane = null;\r
82\r
83 private JLabel jLabelTokenSpaceGuid = null;\r
84\r
85 private JTextField jTextFieldTokenSpaceGuid = null;\r
86\r
87 private JLabel jLabelFeatureFlag = null;\r
88\r
89 private JTextField jTextFieldFeatureFlag = null;\r
90\r
91 private JLabel jLabelArch = null;\r
92\r
93 private ArchCheckBox jArchCheckBox = null;\r
94\r
95 private JButton jButtonOk = null;\r
96\r
97 private JButton jButtonCancel = null;\r
98\r
747e1504 99 private JScrollPane jScrollPaneHelpText = null;\r
06a19cee 100 //\r
101 // Not used by UI\r
102 //\r
103 private PcdCodedIdentification id = null;\r
104\r
06a19cee 105 private WorkspaceTools wt = new WorkspaceTools();\r
106\r
9a8d6d9f 107 private PcdVector pcd = wt.getAllPcdDeclarationsFromWorkspace();\r
108 \r
06a19cee 109 /**\r
110 This method initializes jComboBoxItemType \r
111 \r
112 @return javax.swing.JComboBox jComboBoxItemType\r
113 \r
114 **/\r
115 private JComboBox getJComboBoxItemType() {\r
116 if (jComboBoxItemType == null) {\r
117 jComboBoxItemType = new JComboBox();\r
118 jComboBoxItemType.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
119 jComboBoxItemType.setPreferredSize(new java.awt.Dimension(320, 20));\r
120 }\r
121 return jComboBoxItemType;\r
122 }\r
123\r
124 /**\r
125 This method initializes jTextFieldC_Name \r
126 \r
127 @return javax.swing.JTextField jTextFieldC_Name\r
128 \r
129 **/\r
130 private JComboBox getJComboBoxCName() {\r
131 if (jComboBoxCName == null) {\r
132 jComboBoxCName = new JComboBox();\r
133 jComboBoxCName.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
134 jComboBoxCName.setPreferredSize(new java.awt.Dimension(320, 20));\r
9a8d6d9f 135 jComboBoxCName.addItemListener(this);\r
136 //jComboBoxCName.addActionListener(this);\r
06a19cee 137 }\r
138 return jComboBoxCName;\r
139 }\r
140\r
141 /**\r
142 This method initializes jTextFieldDefaultValue \r
143 \r
144 @return javax.swing.JTextField jTextFieldDefaultValue\r
145 \r
146 **/\r
147 private JTextField getJTextFieldDefaultValue() {\r
148 if (jTextFieldDefaultValue == null) {\r
149 jTextFieldDefaultValue = new JTextField();\r
150 jTextFieldDefaultValue.setBounds(new java.awt.Rectangle(160, 60, 320, 20));\r
151 jTextFieldDefaultValue.setPreferredSize(new java.awt.Dimension(320, 20));\r
152 }\r
153 return jTextFieldDefaultValue;\r
154 }\r
155\r
156 /**\r
747e1504 157 * This method initializes jTextAreaHelpText \r
06a19cee 158 * \r
747e1504 159 * @return javax.swing.JTextArea \r
06a19cee 160 */\r
747e1504 161 private JTextArea getJTextAreaHelpText() {\r
162 if (jTextAreaHelpText == null) {\r
163 jTextAreaHelpText = new JTextArea();\r
164 jTextAreaHelpText.setLineWrap(true);\r
165 jTextAreaHelpText.setWrapStyleWord(true);\r
166// jTextAreaHelpText.setBounds(new java.awt.Rectangle(160, 85, 320, 20));\r
167// jTextAreaHelpText.setPreferredSize(new java.awt.Dimension(320, 20));\r
06a19cee 168 }\r
747e1504 169 return jTextAreaHelpText;\r
170 }\r
171 private JScrollPane getJScrollPaneHelpText() {\r
172 if (jScrollPaneHelpText == null ) {\r
173 jScrollPaneHelpText = new JScrollPane();\r
174 jScrollPaneHelpText.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);\r
175 jScrollPaneHelpText.setSize(new java.awt.Dimension(320, 40));\r
176 jScrollPaneHelpText.setPreferredSize(new java.awt.Dimension(320, 40));\r
177 jScrollPaneHelpText.setLocation(new java.awt.Point(160, 85));\r
178 jScrollPaneHelpText.setViewportView(getJTextAreaHelpText());\r
179\r
180 }\r
181 return jScrollPaneHelpText;\r
06a19cee 182 }\r
183\r
747e1504 184\r
06a19cee 185 /**\r
186 This method initializes jScrollPane \r
187 \r
188 @return javax.swing.JScrollPane \r
189 */\r
190 private JScrollPane getJScrollPane() {\r
191 if (jScrollPane == null) {\r
192 jScrollPane = new JScrollPane();\r
193 jScrollPane.setViewportView(getJContentPane());\r
194 }\r
195 return jScrollPane;\r
196 }\r
197\r
198 /**\r
199 * This method initializes jTextFieldTokenSpaceGuid \r
200 * \r
201 * @return javax.swing.JTextField \r
202 */\r
203 private JTextField getJTextFieldTokenSpaceGuid() {\r
204 if (jTextFieldTokenSpaceGuid == null) {\r
205 jTextFieldTokenSpaceGuid = new JTextField();\r
206 jTextFieldTokenSpaceGuid.setBounds(new java.awt.Rectangle(160, 60, 320, 20));\r
207 jTextFieldTokenSpaceGuid.setPreferredSize(new java.awt.Dimension(320, 20));\r
208 jTextFieldTokenSpaceGuid.setVisible(false);\r
209 }\r
210 return jTextFieldTokenSpaceGuid;\r
211 }\r
212\r
213 /**\r
214 * This method initializes jTextFieldFeatureFlag \r
215 * \r
216 * @return javax.swing.JTextField \r
217 */\r
218 private JTextField getJTextFieldFeatureFlag() {\r
219 if (jTextFieldFeatureFlag == null) {\r
220 jTextFieldFeatureFlag = new JTextField();\r
747e1504 221 jTextFieldFeatureFlag.setBounds(new java.awt.Rectangle(160, 130, 320, 20));\r
06a19cee 222 jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(320, 20));\r
747e1504 223 //jLabelFeatureFlag.setBounds(new java.awt.Rectangle(15, 130, 140, 20));\r
06a19cee 224 }\r
225 return jTextFieldFeatureFlag;\r
226 }\r
227\r
228 /**\r
229 This method initializes jButtonOk \r
230 \r
231 @return javax.swing.JButton \r
232 \r
233 **/\r
234 private JButton getJButtonOk() {\r
235 if (jButtonOk == null) {\r
236 jButtonOk = new JButton();\r
747e1504 237 jButtonOk.setBounds(new java.awt.Rectangle(290, 185, 90, 20));\r
06a19cee 238 jButtonOk.setText("Ok");\r
239 jButtonOk.addActionListener(this);\r
240 }\r
241 return jButtonOk;\r
242 }\r
243\r
244 /**\r
245 This method initializes jButtonCancel \r
246 \r
247 @return javax.swing.JButton \r
248 \r
249 **/\r
250 private JButton getJButtonCancel() {\r
251 if (jButtonCancel == null) {\r
252 jButtonCancel = new JButton();\r
747e1504 253 jButtonCancel.setBounds(new java.awt.Rectangle(390, 185, 90, 20));\r
06a19cee 254 jButtonCancel.setText("Cancel");\r
255 jButtonCancel.addActionListener(this);\r
256 }\r
257 return jButtonCancel;\r
258 }\r
259\r
260 public static void main(String[] args) {\r
261\r
262 }\r
263\r
264 /**\r
265 This method initializes this\r
266 \r
267 **/\r
268 private void init() {\r
747e1504 269 this.setSize(508, 260);\r
06a19cee 270 this.setContentPane(getJScrollPane());\r
271 this.setTitle("Pcd Coded");\r
272 initFrame();\r
273 this.setViewMode(false);\r
274 this.centerWindow();\r
275 }\r
276\r
277 /**\r
278 This method initializes this\r
279 Fill values to all fields if these values are not empty\r
280 \r
281 @param inPcdCodedId\r
282\r
283 **/\r
284 private void init(PcdCodedIdentification inPcdCodedId) {\r
285 init();\r
286 this.id = inPcdCodedId;\r
287\r
288 if (this.id != null) {\r
289 this.jComboBoxCName.setSelectedItem(id.getName());\r
290 this.jTextFieldTokenSpaceGuid.setText(id.getGuid());\r
291 this.jTextFieldDefaultValue.setText(id.getValue());\r
747e1504 292 this.jTextAreaHelpText.setText(id.getHelp());\r
06a19cee 293 this.jComboBoxItemType.setSelectedItem(id.getType());\r
294 this.jTextFieldFeatureFlag.setText(id.getFeatureFlag());\r
295 this.jArchCheckBox.setSelectedItems(id.getSupArchList());\r
296 }\r
297 }\r
298\r
299 /**\r
300 This is the override edit constructor\r
301 \r
302 @param inPcdCodedId\r
303 @param iFrame\r
304 \r
305 **/\r
306 public PCDsDlg(PcdCodedIdentification inPcdCodedId, IFrame iFrame) {\r
307 super(iFrame, true);\r
308 init(inPcdCodedId);\r
309 }\r
310\r
311 /**\r
312 Disable all components when the mode is view\r
313 \r
314 @param isView true - The view mode; false - The non-view mode\r
315 \r
316 **/\r
317 public void setViewMode(boolean isView) {\r
318 if (isView) {\r
319 this.jTextFieldDefaultValue.setEnabled(!isView);\r
320 this.jComboBoxItemType.setEnabled(!isView);\r
321 }\r
322 }\r
323\r
324 /**\r
325 This method initializes jContentPane\r
326 \r
327 @return javax.swing.JPanel jContentPane\r
328 \r
329 **/\r
330 private JPanel getJContentPane() {\r
331 if (jContentPane == null) {\r
332 jArchCheckBox = new ArchCheckBox();\r
06a19cee 333 jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\r
334 jLabelArch = new JLabel();\r
06a19cee 335 jLabelArch.setText("Sup Arch List");\r
336 jLabelFeatureFlag = new JLabel();\r
06a19cee 337 jLabelFeatureFlag.setText("Feature Flag");\r
338 jLabelTokenSpaceGuid = new JLabel();\r
f51ee52b 339 jLabelTokenSpaceGuid.setText("Token Space C Name");\r
06a19cee 340 jLabelTokenSpaceGuid.setVisible(false);\r
341 jLabelHelpText = new JLabel();\r
06a19cee 342 jLabelHelpText.setText("Help Text");\r
343 jLabelC_Name = new JLabel();\r
f51ee52b 344 jLabelC_Name.setText("C Name");\r
06a19cee 345 jLabelDefaultValue = new JLabel();\r
346 jLabelDefaultValue.setText("Default Value");\r
06a19cee 347 jLabelItemType = new JLabel();\r
348 jLabelItemType.setText("Item Type");\r
747e1504 349\r
350 jLabelC_Name.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
351 jLabelItemType.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
352 jLabelDefaultValue.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
353 jLabelHelpText.setBounds(new java.awt.Rectangle(15, 85, 140, 20));\r
354 jLabelFeatureFlag.setBounds(new java.awt.Rectangle(15, 130, 140, 20));\r
355 jLabelArch.setBounds(new java.awt.Rectangle(15, 155, 140, 20));\r
356\r
357 jArchCheckBox.setBounds(new java.awt.Rectangle(160, 155, 320, 20));\r
358 jLabelTokenSpaceGuid.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
06a19cee 359\r
360 jContentPane = new JPanel();\r
361 jContentPane.setLayout(null);\r
362 jContentPane.setPreferredSize(new java.awt.Dimension(490, 190));\r
363\r
364 jContentPane.add(jLabelItemType, null);\r
365 jContentPane.add(jLabelC_Name, null);\r
366 jContentPane.add(getJComboBoxCName(), null);\r
367 jContentPane.add(jLabelDefaultValue, null);\r
368 jContentPane.add(getJTextFieldDefaultValue(), null);\r
747e1504 369 jContentPane.add(getJScrollPaneHelpText(), null);\r
06a19cee 370 jContentPane.add(getJComboBoxItemType(), null);\r
371 jStarLabel1 = new StarLabel();\r
372 jStarLabel1.setLocation(new java.awt.Point(0, 10));\r
373 jStarLabel2 = new StarLabel();\r
374 jStarLabel2.setLocation(new java.awt.Point(0, 35));\r
375 jStarLabel3 = new StarLabel();\r
376 jStarLabel3.setLocation(new java.awt.Point(0, 85));\r
377 jContentPane.add(jStarLabel1, null);\r
378 jContentPane.add(jStarLabel2, null);\r
379 jContentPane.add(jStarLabel3, null);\r
380 jContentPane.add(jLabelHelpText, null);\r
747e1504 381// jContentPane.add(getJTextFieldHelpText(), null);\r
06a19cee 382\r
383 jContentPane.add(jLabelTokenSpaceGuid, null);\r
384 jContentPane.add(getJTextFieldTokenSpaceGuid(), null);\r
385 jContentPane.add(jLabelFeatureFlag, null);\r
386 jContentPane.add(getJTextFieldFeatureFlag(), null);\r
387 jContentPane.add(jLabelArch, null);\r
388 jContentPane.add(jArchCheckBox, null);\r
389 jContentPane.add(getJButtonOk(), null);\r
390 jContentPane.add(getJButtonCancel(), null);\r
391 }\r
392 return jContentPane;\r
393 }\r
394\r
395 /**\r
396 This method initializes Usage type, Item type and Datum type\r
397 \r
398 **/\r
399 private void initFrame() {\r
9a8d6d9f 400 for (int index = 0; index < pcd.size(); index++) {\r
401 jComboBoxCName.addItem(pcd.getPcd(index));\r
402 }\r
403 \r
404 //Tools.generateComboBoxByVector(jComboBoxItemType, ed.getVPcdItemTypes());\r
06a19cee 405 }\r
406\r
407 /* (non-Javadoc)\r
408 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
409 *\r
410 * Override actionPerformed to listen all actions\r
411 * \r
412 */\r
413 public void actionPerformed(ActionEvent arg0) {\r
414 if (arg0.getSource() == jButtonOk) {\r
415 if (checkAdd()) {\r
416 getCurrentPcdCoded();\r
417 this.returnType = DataType.RETURN_TYPE_OK;\r
418 this.setVisible(false);\r
419 }\r
420 }\r
421\r
422 if (arg0.getSource() == jButtonCancel) {\r
423 this.returnType = DataType.RETURN_TYPE_CANCEL;\r
424 this.setVisible(false);\r
425 }\r
426 }\r
427\r
428 /**\r
429 Data validation for all fields\r
430 \r
431 @retval true - All datas are valid\r
432 @retval false - At least one data is invalid\r
433 \r
434 **/\r
435 public boolean checkAdd() {\r
436 //\r
437 // Check if all fields have correct data types \r
438 //\r
439\r
440 //\r
441 // Check C_Name \r
442 //\r
443 if (!isEmpty(this.jComboBoxCName.getSelectedItem().toString())) {\r
444 if (!DataValidation.isC_NameType(this.jComboBoxCName.getSelectedItem().toString())) {\r
f51ee52b 445 Log.wrn("Update PcdCoded", "Incorrect data type for C Name");\r
06a19cee 446 return false;\r
447 }\r
448 }\r
449\r
450 //\r
451 // Check TokenSpaceGuid\r
452 //\r
9a8d6d9f 453 if (!isEmpty(this.jTextFieldTokenSpaceGuid.getText())) {\r
454 if (!DataValidation.isC_NameType(this.jTextFieldTokenSpaceGuid.getText())) {\r
ed1665f2 455 Log.wrn("Update PcdCoded", "Incorrect data type for the selected pcd entry, please check in in spd file");\r
9a8d6d9f 456 return false;\r
457 }\r
458 }\r
06a19cee 459\r
460 //\r
461 // Check DefaultValue\r
462 //\r
463 if (!isEmpty(this.jTextFieldDefaultValue.getText())) {\r
464 if (!DataValidation.isDefaultValueType(this.jTextFieldDefaultValue.getText())) {\r
ed1665f2 465 Log.wrn("Update PcdCoded", "Incorrect data type for Default Value");\r
06a19cee 466 return false;\r
467 }\r
468 }\r
469\r
470 //\r
471 // Check HelpText\r
472 //\r
747e1504 473 if (isEmpty(this.jTextAreaHelpText.getText())) {\r
474 Log.wrn("Update PcdCoded", "Help Text should not be empty");\r
06a19cee 475 return false;\r
476 }\r
477\r
478 //\r
479 // Check FeatureFlag\r
480 //\r
481 if (!isEmpty(this.jTextFieldFeatureFlag.getText())) {\r
482 if (!DataValidation.isFeatureFlag(this.jTextFieldFeatureFlag.getText())) {\r
ed1665f2 483 Log.wrn("Update PcdCoded", "Incorrect data type for Feature Flag");\r
06a19cee 484 return false;\r
485 }\r
486 }\r
487\r
488 return true;\r
489 }\r
490\r
491 private PcdCodedIdentification getCurrentPcdCoded() {\r
492 String arg0 = this.jComboBoxCName.getSelectedItem().toString();\r
493 String arg1 = this.jTextFieldTokenSpaceGuid.getText();\r
494\r
495 String arg2 = this.jTextFieldFeatureFlag.getText();\r
496 Vector<String> arg3 = this.jArchCheckBox.getSelectedItemsVector();\r
497\r
498 String arg4 = this.jTextFieldDefaultValue.getText();\r
747e1504 499 String arg5 = this.jTextAreaHelpText.getText();\r
06a19cee 500 String arg6 = this.jComboBoxItemType.getSelectedItem().toString();\r
501 id = new PcdCodedIdentification(arg0, arg1, arg2, arg3, arg4, arg5, arg6);\r
502 return id;\r
503 }\r
504\r
505 public PcdCodedIdentification getId() {\r
506 return id;\r
507 }\r
508\r
509 public void setId(PcdCodedIdentification id) {\r
510 this.id = id;\r
511 }\r
9a8d6d9f 512\r
513 /* (non-Javadoc)\r
514 * @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent)\r
515 *\r
516 * Reflesh the frame when selected item changed\r
517 * \r
518 */\r
519 public void itemStateChanged(ItemEvent arg0) {\r
520 int index = this.jComboBoxCName.getSelectedIndex();\r
521 if (arg0.getSource() == this.jComboBoxCName && arg0.getStateChange() == ItemEvent.SELECTED ) {\r
522 if (pcd.getPcd(index).getGuidCName() == null || isEmpty(pcd.getPcd(index).getGuidCName())\r
523 || pcd.getPcd(index).getType() == null || pcd.getPcd(index).getHelp() == null || isEmpty(pcd.getPcd(index).getHelp())) {\r
ed1665f2 524 Log.wrn("select pcd entry when editing msa", "The selected is defined incorrectly.\r\nPlease check it in spd file");\r
9a8d6d9f 525 } else {\r
526 this.jTextFieldTokenSpaceGuid.setText(pcd.getPcd(index).getGuidCName());\r
527 Tools.generateComboBoxByVector(this.jComboBoxItemType, pcd.getPcd(index).getType());\r
747e1504 528 this.jTextAreaHelpText.setText(pcd.getPcd(index).getHelp());\r
529 this.jTextAreaHelpText.setSelectionStart(0);\r
530 this.jTextAreaHelpText.setSelectionEnd(0);\r
9a8d6d9f 531 }\r
532 }\r
533 }\r
06a19cee 534}\r