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