]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/PCDsDlg.java
Fixes for Linux builds.
[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
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
26\r
27import org.tianocore.frameworkwizard.common.DataType;\r
28import org.tianocore.frameworkwizard.common.DataValidation;\r
29import org.tianocore.frameworkwizard.common.EnumerationData;\r
30import org.tianocore.frameworkwizard.common.Log;\r
31import org.tianocore.frameworkwizard.common.Tools;\r
32import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;\r
33import org.tianocore.frameworkwizard.common.ui.IDialog;\r
34import org.tianocore.frameworkwizard.common.ui.IFrame;\r
35import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
36import org.tianocore.frameworkwizard.module.Identifications.PcdCoded.PcdCodedIdentification;\r
37import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
38\r
39/**\r
40 The class is used to create, update PCD of MSA/MBD file\r
41 It extends IInternalFrame\r
42 \r
43\r
44\r
45 **/\r
46public class PCDsDlg extends IDialog {\r
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
103 private EnumerationData ed = new EnumerationData();\r
104\r
105 private WorkspaceTools wt = new WorkspaceTools();\r
106\r
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
133 }\r
134 return jComboBoxCName;\r
135 }\r
136\r
137 /**\r
138 This method initializes jTextFieldDefaultValue \r
139 \r
140 @return javax.swing.JTextField jTextFieldDefaultValue\r
141 \r
142 **/\r
143 private JTextField getJTextFieldDefaultValue() {\r
144 if (jTextFieldDefaultValue == null) {\r
145 jTextFieldDefaultValue = new JTextField();\r
146 jTextFieldDefaultValue.setBounds(new java.awt.Rectangle(160, 60, 320, 20));\r
147 jTextFieldDefaultValue.setPreferredSize(new java.awt.Dimension(320, 20));\r
148 }\r
149 return jTextFieldDefaultValue;\r
150 }\r
151\r
152 /**\r
153 * This method initializes jTextFieldHelpText \r
154 * \r
155 * @return javax.swing.JTextField \r
156 */\r
157 private JTextField getJTextFieldHelpText() {\r
158 if (jTextFieldHelpText == null) {\r
159 jTextFieldHelpText = new JTextField();\r
160 jTextFieldHelpText.setBounds(new java.awt.Rectangle(160, 85, 320, 20));\r
161 jTextFieldHelpText.setPreferredSize(new java.awt.Dimension(320, 20));\r
162 }\r
163 return jTextFieldHelpText;\r
164 }\r
165\r
166 /**\r
167 This method initializes jScrollPane \r
168 \r
169 @return javax.swing.JScrollPane \r
170 */\r
171 private JScrollPane getJScrollPane() {\r
172 if (jScrollPane == null) {\r
173 jScrollPane = new JScrollPane();\r
174 jScrollPane.setViewportView(getJContentPane());\r
175 }\r
176 return jScrollPane;\r
177 }\r
178\r
179 /**\r
180 * This method initializes jTextFieldTokenSpaceGuid \r
181 * \r
182 * @return javax.swing.JTextField \r
183 */\r
184 private JTextField getJTextFieldTokenSpaceGuid() {\r
185 if (jTextFieldTokenSpaceGuid == null) {\r
186 jTextFieldTokenSpaceGuid = new JTextField();\r
187 jTextFieldTokenSpaceGuid.setBounds(new java.awt.Rectangle(160, 60, 320, 20));\r
188 jTextFieldTokenSpaceGuid.setPreferredSize(new java.awt.Dimension(320, 20));\r
189 jTextFieldTokenSpaceGuid.setVisible(false);\r
190 }\r
191 return jTextFieldTokenSpaceGuid;\r
192 }\r
193\r
194 /**\r
195 * This method initializes jTextFieldFeatureFlag \r
196 * \r
197 * @return javax.swing.JTextField \r
198 */\r
199 private JTextField getJTextFieldFeatureFlag() {\r
200 if (jTextFieldFeatureFlag == null) {\r
201 jTextFieldFeatureFlag = new JTextField();\r
202 jTextFieldFeatureFlag.setBounds(new java.awt.Rectangle(160, 110, 320, 20));\r
203 jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(320, 20));\r
204 }\r
205 return jTextFieldFeatureFlag;\r
206 }\r
207\r
208 /**\r
209 This method initializes jButtonOk \r
210 \r
211 @return javax.swing.JButton \r
212 \r
213 **/\r
214 private JButton getJButtonOk() {\r
215 if (jButtonOk == null) {\r
216 jButtonOk = new JButton();\r
217 jButtonOk.setBounds(new java.awt.Rectangle(290, 165, 90, 20));\r
218 jButtonOk.setText("Ok");\r
219 jButtonOk.addActionListener(this);\r
220 }\r
221 return jButtonOk;\r
222 }\r
223\r
224 /**\r
225 This method initializes jButtonCancel \r
226 \r
227 @return javax.swing.JButton \r
228 \r
229 **/\r
230 private JButton getJButtonCancel() {\r
231 if (jButtonCancel == null) {\r
232 jButtonCancel = new JButton();\r
233 jButtonCancel.setBounds(new java.awt.Rectangle(390, 165, 90, 20));\r
234 jButtonCancel.setText("Cancel");\r
235 jButtonCancel.addActionListener(this);\r
236 }\r
237 return jButtonCancel;\r
238 }\r
239\r
240 public static void main(String[] args) {\r
241\r
242 }\r
243\r
244 /**\r
245 This method initializes this\r
246 \r
247 **/\r
248 private void init() {\r
249 this.setSize(500, 225);\r
250 this.setContentPane(getJScrollPane());\r
251 this.setTitle("Pcd Coded");\r
252 initFrame();\r
253 this.setViewMode(false);\r
254 this.centerWindow();\r
255 }\r
256\r
257 /**\r
258 This method initializes this\r
259 Fill values to all fields if these values are not empty\r
260 \r
261 @param inPcdCodedId\r
262\r
263 **/\r
264 private void init(PcdCodedIdentification inPcdCodedId) {\r
265 init();\r
266 this.id = inPcdCodedId;\r
267\r
268 if (this.id != null) {\r
269 this.jComboBoxCName.setSelectedItem(id.getName());\r
270 this.jTextFieldTokenSpaceGuid.setText(id.getGuid());\r
271 this.jTextFieldDefaultValue.setText(id.getValue());\r
272 this.jTextFieldHelpText.setText(id.getHelp());\r
273 this.jComboBoxItemType.setSelectedItem(id.getType());\r
274 this.jTextFieldFeatureFlag.setText(id.getFeatureFlag());\r
275 this.jArchCheckBox.setSelectedItems(id.getSupArchList());\r
276 }\r
277 }\r
278\r
279 /**\r
280 This is the override edit constructor\r
281 \r
282 @param inPcdCodedId\r
283 @param iFrame\r
284 \r
285 **/\r
286 public PCDsDlg(PcdCodedIdentification inPcdCodedId, IFrame iFrame) {\r
287 super(iFrame, true);\r
288 init(inPcdCodedId);\r
289 }\r
290\r
291 /**\r
292 Disable all components when the mode is view\r
293 \r
294 @param isView true - The view mode; false - The non-view mode\r
295 \r
296 **/\r
297 public void setViewMode(boolean isView) {\r
298 if (isView) {\r
299 this.jTextFieldDefaultValue.setEnabled(!isView);\r
300 this.jComboBoxItemType.setEnabled(!isView);\r
301 }\r
302 }\r
303\r
304 /**\r
305 This method initializes jContentPane\r
306 \r
307 @return javax.swing.JPanel jContentPane\r
308 \r
309 **/\r
310 private JPanel getJContentPane() {\r
311 if (jContentPane == null) {\r
312 jArchCheckBox = new ArchCheckBox();\r
313 jArchCheckBox.setBounds(new java.awt.Rectangle(160, 135, 320, 20));\r
314 jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\r
315 jLabelArch = new JLabel();\r
316 jLabelArch.setBounds(new java.awt.Rectangle(15, 135, 140, 20));\r
317 jLabelArch.setText("Sup Arch List");\r
318 jLabelFeatureFlag = new JLabel();\r
319 jLabelFeatureFlag.setBounds(new java.awt.Rectangle(15, 110, 140, 20));\r
320 jLabelFeatureFlag.setText("Feature Flag");\r
321 jLabelTokenSpaceGuid = new JLabel();\r
322 jLabelTokenSpaceGuid.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
323 jLabelTokenSpaceGuid.setText("Token Space C_Name");\r
324 jLabelTokenSpaceGuid.setVisible(false);\r
325 jLabelHelpText = new JLabel();\r
326 jLabelHelpText.setBounds(new java.awt.Rectangle(15, 85, 140, 20));\r
327 jLabelHelpText.setText("Help Text");\r
328 jLabelC_Name = new JLabel();\r
329 jLabelC_Name.setText("C_Name");\r
330 jLabelC_Name.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
331 jLabelDefaultValue = new JLabel();\r
332 jLabelDefaultValue.setText("Default Value");\r
333 jLabelDefaultValue.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
334 jLabelItemType = new JLabel();\r
335 jLabelItemType.setText("Item Type");\r
336 jLabelItemType.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
337\r
338 jContentPane = new JPanel();\r
339 jContentPane.setLayout(null);\r
340 jContentPane.setPreferredSize(new java.awt.Dimension(490, 190));\r
341\r
342 jContentPane.add(jLabelItemType, null);\r
343 jContentPane.add(jLabelC_Name, null);\r
344 jContentPane.add(getJComboBoxCName(), null);\r
345 jContentPane.add(jLabelDefaultValue, null);\r
346 jContentPane.add(getJTextFieldDefaultValue(), null);\r
347 jContentPane.add(getJComboBoxItemType(), null);\r
348 jStarLabel1 = new StarLabel();\r
349 jStarLabel1.setLocation(new java.awt.Point(0, 10));\r
350 jStarLabel2 = new StarLabel();\r
351 jStarLabel2.setLocation(new java.awt.Point(0, 35));\r
352 jStarLabel3 = new StarLabel();\r
353 jStarLabel3.setLocation(new java.awt.Point(0, 85));\r
354 jContentPane.add(jStarLabel1, null);\r
355 jContentPane.add(jStarLabel2, null);\r
356 jContentPane.add(jStarLabel3, null);\r
357 jContentPane.add(jLabelHelpText, null);\r
358 jContentPane.add(getJTextFieldHelpText(), null);\r
359\r
360 jContentPane.add(jLabelTokenSpaceGuid, null);\r
361 jContentPane.add(getJTextFieldTokenSpaceGuid(), null);\r
362 jContentPane.add(jLabelFeatureFlag, null);\r
363 jContentPane.add(getJTextFieldFeatureFlag(), null);\r
364 jContentPane.add(jLabelArch, null);\r
365 jContentPane.add(jArchCheckBox, null);\r
366 jContentPane.add(getJButtonOk(), null);\r
367 jContentPane.add(getJButtonCancel(), null);\r
368 }\r
369 return jContentPane;\r
370 }\r
371\r
372 /**\r
373 This method initializes Usage type, Item type and Datum type\r
374 \r
375 **/\r
376 private void initFrame() {\r
377 Tools.generateComboBoxByVector(jComboBoxCName, wt.getAllPcdDeclarationsFromWorkspace());\r
378 Tools.generateComboBoxByVector(jComboBoxItemType, ed.getVPcdItemTypes());\r
379 }\r
380\r
381 /* (non-Javadoc)\r
382 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
383 *\r
384 * Override actionPerformed to listen all actions\r
385 * \r
386 */\r
387 public void actionPerformed(ActionEvent arg0) {\r
388 if (arg0.getSource() == jButtonOk) {\r
389 if (checkAdd()) {\r
390 getCurrentPcdCoded();\r
391 this.returnType = DataType.RETURN_TYPE_OK;\r
392 this.setVisible(false);\r
393 }\r
394 }\r
395\r
396 if (arg0.getSource() == jButtonCancel) {\r
397 this.returnType = DataType.RETURN_TYPE_CANCEL;\r
398 this.setVisible(false);\r
399 }\r
400 }\r
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 C_Name \r
416 //\r
417 if (!isEmpty(this.jComboBoxCName.getSelectedItem().toString())) {\r
418 if (!DataValidation.isC_NameType(this.jComboBoxCName.getSelectedItem().toString())) {\r
419 Log.err("Incorrect data type for C_Name");\r
420 return false;\r
421 }\r
422 }\r
423\r
424 //\r
425 // Check TokenSpaceGuid\r
426 //\r
427 // if (!isEmpty(this.jTextFieldTokenSpaceGuid.getText())) {\r
428 // if (!DataValidation.isC_NameType(this.jTextFieldTokenSpaceGuid.getText())) {\r
429 // Log.err("Incorrect data type for Token Space C_Name");\r
430 // return false;\r
431 // }\r
432 // }\r
433\r
434 //\r
435 // Check DefaultValue\r
436 //\r
437 if (!isEmpty(this.jTextFieldDefaultValue.getText())) {\r
438 if (!DataValidation.isDefaultValueType(this.jTextFieldDefaultValue.getText())) {\r
439 Log.err("Incorrect data type for Default Value");\r
440 return false;\r
441 }\r
442 }\r
443\r
444 //\r
445 // Check HelpText\r
446 //\r
447 if (isEmpty(this.jTextFieldHelpText.getText())) {\r
448 Log.err("Help Text couldn't be empty");\r
449 return false;\r
450 }\r
451\r
452 //\r
453 // Check FeatureFlag\r
454 //\r
455 if (!isEmpty(this.jTextFieldFeatureFlag.getText())) {\r
456 if (!DataValidation.isFeatureFlag(this.jTextFieldFeatureFlag.getText())) {\r
457 Log.err("Incorrect data type for Feature Flag");\r
458 return false;\r
459 }\r
460 }\r
461\r
462 return true;\r
463 }\r
464\r
465 private PcdCodedIdentification getCurrentPcdCoded() {\r
466 String arg0 = this.jComboBoxCName.getSelectedItem().toString();\r
467 String arg1 = this.jTextFieldTokenSpaceGuid.getText();\r
468\r
469 String arg2 = this.jTextFieldFeatureFlag.getText();\r
470 Vector<String> arg3 = this.jArchCheckBox.getSelectedItemsVector();\r
471\r
472 String arg4 = this.jTextFieldDefaultValue.getText();\r
473 String arg5 = this.jTextFieldHelpText.getText();\r
474 String arg6 = this.jComboBoxItemType.getSelectedItem().toString();\r
475 id = new PcdCodedIdentification(arg0, arg1, arg2, arg3, arg4, arg5, arg6);\r
476 return id;\r
477 }\r
478\r
479 public PcdCodedIdentification getId() {\r
480 return id;\r
481 }\r
482\r
483 public void setId(PcdCodedIdentification id) {\r
484 this.id = id;\r
485 }\r
486}\r