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