]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/ExternsDlg.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 / ExternsDlg.java
CommitLineData
06a19cee 1/** @file\r
2 \r
c6344823 3 The file is used to create, update Externs 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
15package org.tianocore.frameworkwizard.module.ui.dialog;\r
16\r
17import java.awt.event.ActionEvent;\r
18import java.awt.event.ItemEvent;\r
19import java.awt.event.ItemListener;\r
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
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.module.Identifications.Externs.ExternsIdentification;\r
38\r
39/**\r
9e857952 40 * The class is used to create, update Externs section of the MSA file\r
41 * \r
42 * It extends IDialog\r
43 * \r
44 */\r
06a19cee 45public class ExternsDlg extends IDialog implements ItemListener {\r
46\r
47 ///\r
48 /// Define class Serial Version UID\r
49 ///\r
50 private static final long serialVersionUID = -7382008402932047191L;\r
51\r
52 //\r
53 //Define class members\r
54 //\r
55 private JPanel jContentPane = null;\r
56\r
57 private JLabel jLabelName = null;\r
58\r
59 private JComboBox jComboBoxType = null;\r
60\r
61 private JScrollPane jScrollPane = null;\r
62\r
63 private JComboBox jComboBoxPcdIsDriver = null;\r
64\r
65 private JLabel jLabelC_Name = null;\r
66\r
67 private JTextField jTextFieldC_Name = null;\r
68\r
69 private JLabel jLabelFeatureFlag = null;\r
70\r
71 private JLabel jLabelArch = null;\r
72\r
73 private JTextField jTextFieldFeatureFlag = null;\r
74\r
75 private ArchCheckBox jArchCheckBox = null;\r
76\r
77 private JButton jButtonOk = null;\r
78\r
79 private JButton jButtonCancel = null;\r
80\r
81 //\r
82 // Not used by UI\r
83 //\r
84 private ExternsIdentification id = null;\r
85\r
86 private EnumerationData ed = new EnumerationData();\r
87\r
88 /**\r
89 This method initializes jComboBoxType \r
90 \r
91 @return javax.swing.JComboBox jComboBoxType\r
92 \r
93 **/\r
94 private JComboBox getJComboBoxType() {\r
95 if (jComboBoxType == null) {\r
96 jComboBoxType = new JComboBox();\r
c6344823 97 jComboBoxType.setBounds(new java.awt.Rectangle(168, 12, 320, 20));\r
06a19cee 98 jComboBoxType.setPreferredSize(new java.awt.Dimension(320, 20));\r
99 jComboBoxType.addItemListener(this);\r
100 }\r
101 return jComboBoxType;\r
102 }\r
103\r
104 /**\r
105 This method initializes jScrollPane \r
106 \r
107 @return javax.swing.JScrollPane \r
108 */\r
109 private JScrollPane getJScrollPane() {\r
110 if (jScrollPane == null) {\r
111 jScrollPane = new JScrollPane();\r
112 jScrollPane.setViewportView(getJContentPane());\r
113 }\r
114 return jScrollPane;\r
115 }\r
116\r
117 /**\r
118 * This method initializes jComboBoxPcdIsDriver \r
119 * \r
120 * @return javax.swing.JComboBox \r
121 */\r
122 private JComboBox getJComboBoxPcdIsDriver() {\r
123 if (jComboBoxPcdIsDriver == null) {\r
124 jComboBoxPcdIsDriver = new JComboBox();\r
c6344823 125 jComboBoxPcdIsDriver.setLocation(new java.awt.Point(168, 37));\r
06a19cee 126 jComboBoxPcdIsDriver.setPreferredSize(new java.awt.Dimension(320, 20));\r
127 jComboBoxPcdIsDriver.setSize(new java.awt.Dimension(320, 20));\r
128 jComboBoxPcdIsDriver.addItemListener(this);\r
129 }\r
130 return jComboBoxPcdIsDriver;\r
131 }\r
132\r
133 /**\r
134 This method initializes jTextFieldC_Name \r
135 \r
136 @return javax.swing.JTextField \r
137 \r
138 **/\r
139 private JTextField getJTextFieldC_Name() {\r
140 if (jTextFieldC_Name == null) {\r
141 jTextFieldC_Name = new JTextField();\r
c6344823 142 jTextFieldC_Name.setBounds(new java.awt.Rectangle(168, 37, 320, 20));\r
06a19cee 143 jTextFieldC_Name.setPreferredSize(new java.awt.Dimension(320, 20));\r
144 }\r
145 return jTextFieldC_Name;\r
146 }\r
147\r
148 /**\r
149 This method initializes jTextFieldFeatureFlag \r
150 \r
151 @return javax.swing.JTextField \r
152 \r
153 **/\r
154 private JTextField getJTextFieldFeatureFlag() {\r
155 if (jTextFieldFeatureFlag == null) {\r
156 jTextFieldFeatureFlag = new JTextField();\r
c6344823 157 jTextFieldFeatureFlag.setBounds(new java.awt.Rectangle(168, 62, 320, 20));\r
06a19cee 158 jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(320, 20));\r
159 }\r
160 return jTextFieldFeatureFlag;\r
161 }\r
162\r
163 /**\r
164 This method initializes jButtonOk \r
165 \r
166 @return javax.swing.JButton \r
167 \r
168 **/\r
169 private JButton getJButtonOk() {\r
170 if (jButtonOk == null) {\r
171 jButtonOk = new JButton();\r
c6344823 172 jButtonOk.setBounds(new java.awt.Rectangle(300, 122, 90, 20));\r
06a19cee 173 jButtonOk.setText("Ok");\r
174 jButtonOk.addActionListener(this);\r
175 }\r
176 return jButtonOk;\r
177 }\r
178\r
179 /**\r
180 This method initializes jButtonCancel \r
181 \r
182 @return javax.swing.JButton \r
183 \r
184 **/\r
185 private JButton getJButtonCancel() {\r
186 if (jButtonCancel == null) {\r
187 jButtonCancel = new JButton();\r
c6344823 188 jButtonCancel.setBounds(new java.awt.Rectangle(400, 122, 90, 20));\r
06a19cee 189 jButtonCancel.setText("Cancel");\r
190 jButtonCancel.addActionListener(this);\r
191 }\r
192 return jButtonCancel;\r
193 }\r
194\r
195 public static void main(String[] args) {\r
196\r
197 }\r
198\r
199 /**\r
200 This method initializes this\r
201 \r
202 **/\r
203 private void init() {\r
c6344823 204 this.setSize(515, 200);\r
06a19cee 205 this.setContentPane(getJScrollPane());\r
206 this.setTitle("Externs");\r
207 initFrame();\r
208 this.centerWindow();\r
209 }\r
210\r
211 /**\r
212 This method initializes this\r
213 Fill values to all fields if these values are not empty\r
214 \r
215 @param inExternsId\r
216\r
217 **/\r
218 private void init(ExternsIdentification inExternsId) {\r
219 init();\r
220 this.id = inExternsId;\r
221\r
222 if (this.id != null) {\r
223 if (id.getType().equals(EnumerationData.EXTERNS_PCD_IS_DRIVER)) {\r
224 this.jComboBoxPcdIsDriver.setSelectedItem(id.getName());\r
225 } else {\r
a929458e 226 this.jTextFieldC_Name.setText(id.getName());\r
06a19cee 227 }\r
228 this.jComboBoxType.setSelectedItem(id.getType());\r
229 this.jTextFieldFeatureFlag.setText(id.getFeatureFlag());\r
230 this.jArchCheckBox.setSelectedItems(id.getSupArchList());\r
231 }\r
232 }\r
233\r
234 /**\r
235 This is the override edit constructor\r
236 \r
237 @param inBootModesIdentification\r
238 @param iFrame\r
239 \r
240 **/\r
241 public ExternsDlg(ExternsIdentification inExternsIdentification, IFrame iFrame) {\r
242 super(iFrame, true);\r
243 init(inExternsIdentification);\r
244 }\r
245\r
246 /**\r
247 This method initializes jContentPane\r
248 \r
249 @return javax.swing.JPanel jContentPane\r
250 \r
251 **/\r
252 private JPanel getJContentPane() {\r
253 if (jContentPane == null) {\r
254 jArchCheckBox = new ArchCheckBox();\r
c6344823 255 jArchCheckBox.setBounds(new java.awt.Rectangle(168, 87, 320, 20));\r
06a19cee 256 jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\r
257 jLabelC_Name = new JLabel();\r
c6344823 258 jLabelC_Name.setBounds(new java.awt.Rectangle(12, 37, 140, 20));\r
ccb063b1 259 jLabelC_Name.setText("Enter Value");\r
06a19cee 260 jLabelName = new JLabel();\r
ccb063b1 261 jLabelName.setText("Choose Extern Type");\r
c6344823 262 jLabelName.setBounds(new java.awt.Rectangle(12, 12, 168, 20));\r
06a19cee 263 jLabelArch = new JLabel();\r
c6344823 264 jLabelArch.setBounds(new java.awt.Rectangle(12, 87, 168, 20));\r
ccb063b1 265 jLabelArch.setText("Supported Architectures");\r
06a19cee 266 jLabelFeatureFlag = new JLabel();\r
c6344823 267 jLabelFeatureFlag.setBounds(new java.awt.Rectangle(12, 62, 168, 20));\r
ccb063b1 268 jLabelFeatureFlag.setText("Feature Flag Expression");\r
06a19cee 269\r
270 jContentPane = new JPanel();\r
271 jContentPane.setLayout(null);\r
c6344823 272 jContentPane.setPreferredSize(new java.awt.Dimension(505, 155));\r
06a19cee 273\r
274 jContentPane.add(jLabelName, null);\r
275 jContentPane.add(getJComboBoxType(), null);\r
276 jContentPane.add(jLabelFeatureFlag, null);\r
277 jContentPane.add(jLabelArch, null);\r
278 jContentPane.add(getJTextFieldFeatureFlag(), null);\r
279\r
280 jContentPane.add(getJComboBoxPcdIsDriver(), null);\r
281 jContentPane.add(jLabelC_Name, null);\r
282 jContentPane.add(getJTextFieldC_Name(), null);\r
283 jContentPane.add(jArchCheckBox, null);\r
284 jContentPane.add(getJButtonOk(), null);\r
285 jContentPane.add(getJButtonCancel(), null);\r
286 }\r
287 return jContentPane;\r
288 }\r
289\r
290 /**\r
291 This method initializes Usage type and Externs type\r
292 \r
293 **/\r
294 private void initFrame() {\r
295 Tools.generateComboBoxByVector(this.jComboBoxType, ed.getVExternTypes());\r
296 Tools.generateComboBoxByVector(this.jComboBoxPcdIsDriver, ed.getVPcdDriverTypes());\r
297 }\r
298\r
299 /* (non-Javadoc)\r
300 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
301 *\r
302 * Override actionPerformed to listen all actions\r
303 * \r
304 */\r
305 public void actionPerformed(ActionEvent arg0) {\r
306 if (arg0.getSource() == jButtonOk) {\r
307 if (checkAdd()) {\r
308 getCurrentExterns();\r
309 this.returnType = DataType.RETURN_TYPE_OK;\r
310 this.setVisible(false);\r
311 }\r
312 }\r
313\r
314 if (arg0.getSource() == jButtonCancel) {\r
315 this.returnType = DataType.RETURN_TYPE_CANCEL;\r
316 this.setVisible(false);\r
317 }\r
318 }\r
319\r
320 /**\r
321 Data validation for all fields\r
322 \r
323 @retval true - All datas are valid\r
324 @retval false - At least one data is invalid\r
325 \r
326 **/\r
327 public boolean checkAdd() {\r
328 //\r
329 // Check if all fields have correct data types \r
330 //\r
331\r
332 //\r
333 // When and only When type is not "Pcd Is Driver"\r
334 //\r
335 if (!this.jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_PCD_IS_DRIVER)) {\r
336 //\r
337 // Check CName \r
338 //\r
339 if (isEmpty(this.jTextFieldC_Name.getText())) {\r
ed1665f2 340 Log.wrn("Update Externs", "Value couldn't be empty");\r
06a19cee 341 return false;\r
342 }\r
343\r
344 if (!isEmpty(this.jTextFieldC_Name.getText())) {\r
345 if (this.jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_SPECIFICATION)) {\r
346 if (!DataValidation.isSentence(this.jTextFieldC_Name.getText())) {\r
ed1665f2 347 Log.wrn("Update Externs", "Incorrect data type for Specification");\r
06a19cee 348 return false;\r
349 }\r
350 } else {\r
351 if (!DataValidation.isC_NameType(this.jTextFieldC_Name.getText())) {\r
f51ee52b 352 Log.wrn("Update Externs", "Incorrect data type for C Name");\r
06a19cee 353 return false;\r
354 }\r
355 }\r
356 }\r
357\r
358 //\r
359 // Check FeatureFlag\r
360 //\r
361 if (!isEmpty(this.jTextFieldFeatureFlag.getText())) {\r
362 if (!DataValidation.isFeatureFlag(this.jTextFieldFeatureFlag.getText())) {\r
ed1665f2 363 Log.wrn("Update Externs", "Incorrect data type for Feature Flag");\r
06a19cee 364 return false;\r
365 }\r
366 }\r
367 } else {\r
368 if (this.jComboBoxPcdIsDriver.getSelectedItem().toString().equals(DataType.EMPTY_SELECT_ITEM)) {\r
ed1665f2 369 Log.wrn("Update Externs", "You must select one PCD DRIVER type");\r
06a19cee 370 return false;\r
371 }\r
372 }\r
373\r
374 return true;\r
375 }\r
376\r
377 private ExternsIdentification getCurrentExterns() {\r
378 String arg0 = "";\r
379 if (this.jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_PCD_IS_DRIVER)) {\r
380 arg0 = this.jComboBoxPcdIsDriver.getSelectedItem().toString();\r
381 } else {\r
a929458e 382 arg0 = this.jTextFieldC_Name.getText();\r
06a19cee 383 }\r
384 String arg1 = this.jComboBoxType.getSelectedItem().toString();\r
385\r
386 String arg2 = this.jTextFieldFeatureFlag.getText();\r
387 Vector<String> arg3 = this.jArchCheckBox.getSelectedItemsVector();\r
388\r
389 id = new ExternsIdentification(arg0, arg1, arg2, arg3);\r
390 return id;\r
391 }\r
392\r
393 /* (non-Javadoc)\r
394 * @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent)\r
395 *\r
396 * Reflesh the frame when selected item changed\r
397 * \r
398 */\r
399 public void itemStateChanged(ItemEvent arg0) {\r
400 if (arg0.getSource() == jComboBoxType && arg0.getStateChange() == ItemEvent.SELECTED) {\r
401 if (jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_PCD_IS_DRIVER)) {\r
402 this.jComboBoxPcdIsDriver.setVisible(true);\r
403 this.jTextFieldC_Name.setVisible(false);\r
404 } else {\r
405 this.jComboBoxPcdIsDriver.setVisible(false);\r
406 this.jTextFieldC_Name.setVisible(true);\r
407 }\r
408 }\r
409 }\r
410\r
411 public ExternsIdentification getId() {\r
412 return id;\r
413 }\r
414\r
415 public void setId(ExternsIdentification id) {\r
416 this.id = id;\r
417 }\r
418}\r