]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/PackageDepDlg.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 / PackageDepDlg.java
... / ...
CommitLineData
1/** @file\r
2 \r
3 The file is used to create, update Package Dependencies section of the MSA 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.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.Log;\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.PackageDependencies.PackageDependenciesIdentification;\r
37import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
38import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
39\r
40/**\r
41 * The class is used to create, update Package Dependencies section of the MSA file\r
42 * \r
43 * It extends IDialog\r
44 * \r
45 */\r
46public class PackageDepDlg extends IDialog implements ItemListener {\r
47 // /\r
48 // / Define class Serial Version UID\r
49 // /\r
50 private static final long serialVersionUID = 3465193035145152131L;\r
51\r
52 //\r
53 // Define class members\r
54 //\r
55 private JPanel jContentPane = null;\r
56\r
57 private JLabel jLabelPackageName = null;\r
58\r
59 private StarLabel jStarLabel1 = null;\r
60\r
61 private JComboBox jComboBoxPackageName = null;\r
62\r
63 private JLabel jLabelPackageGuid = null;\r
64\r
65 private JTextField jTextFieldPackageGuid = null;\r
66\r
67 private JLabel jLabelPackageVersion = null;\r
68\r
69 private JTextField jTextFieldPackageVersion = null;\r
70\r
71 private JLabel jLabelFeatureFlag = null;\r
72\r
73 private JTextField jTextFieldFeatureFlag = null;\r
74\r
75 private JScrollPane jScrollPane = null;\r
76\r
77 private JLabel jLabelArch = null;\r
78\r
79 private ArchCheckBox jArchCheckBox = null;\r
80\r
81 private JButton jButtonOk = null;\r
82\r
83 private JButton jButtonCancel = null;\r
84\r
85 //\r
86 // Not used by UI\r
87 //\r
88 private PackageDependenciesIdentification pdid = null;\r
89\r
90 private WorkspaceTools wt = new WorkspaceTools();\r
91\r
92 private Vector<PackageIdentification> vPackage = wt.getAllPackages();\r
93\r
94 /**\r
95 * This method initializes jComboBoxPackageName\r
96 * \r
97 * @return javax.swing.JComboBox\r
98 */\r
99 private JComboBox getJComboBoxPackageName() {\r
100 if (jComboBoxPackageName == null) {\r
101 jComboBoxPackageName = new JComboBox();\r
102 jComboBoxPackageName.setBounds(new java.awt.Rectangle(168, 12, 320, 20));\r
103 jComboBoxPackageName.setPreferredSize(new java.awt.Dimension(320, 20));\r
104 jComboBoxPackageName.setToolTipText("If your Module requires a package list that here.");\r
105 jComboBoxPackageName.addItemListener(this);\r
106 }\r
107 return jComboBoxPackageName;\r
108 }\r
109\r
110 /**\r
111 * This method initializes jTextFieldPackageGuid\r
112 * \r
113 * @return javax.swing.JTextField\r
114 */\r
115 private JTextField getJTextFieldPackageGuid() {\r
116 if (jTextFieldPackageGuid == null) {\r
117 jTextFieldPackageGuid = new JTextField();\r
118 jTextFieldPackageGuid.setBounds(new java.awt.Rectangle(168, 37, 320, 20));\r
119 jTextFieldPackageGuid.setPreferredSize(new java.awt.Dimension(320, 20));\r
120 jTextFieldPackageGuid.setEditable(false);\r
121 jTextFieldPackageGuid.setVisible(false);\r
122 }\r
123 return jTextFieldPackageGuid;\r
124 }\r
125\r
126 /**\r
127 * This method initializes jTextFieldPackageVersion\r
128 * \r
129 * @return javax.swing.JTextField\r
130 */\r
131 private JTextField getJTextFieldPackageVersion() {\r
132 if (jTextFieldPackageVersion == null) {\r
133 jTextFieldPackageVersion = new JTextField();\r
134 jTextFieldPackageVersion.setBounds(new java.awt.Rectangle(168, 37, 320, 20));\r
135 jTextFieldPackageVersion.setPreferredSize(new java.awt.Dimension(320, 20));\r
136 jTextFieldPackageVersion\r
137 .setToolTipText("<html>If this module depends on a specific version of a package, <br>"\r
138 + "enter the package version here. <br>"\r
139 + "If the module can use the latest version <br>"\r
140 + "that does not break backward compatibility, <br>"\r
141 + "leave this field blank</html>");\r
142 }\r
143 return jTextFieldPackageVersion;\r
144 }\r
145\r
146 /**\r
147 * This method initializes jTextFieldFeatureFlag\r
148 * \r
149 * @return javax.swing.JTextField\r
150 */\r
151 private JTextField getJTextFieldFeatureFlag() {\r
152 if (jTextFieldFeatureFlag == null) {\r
153 jTextFieldFeatureFlag = new JTextField();\r
154 jTextFieldFeatureFlag.setBounds(new java.awt.Rectangle(168, 62, 320, 20));\r
155 jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(320, 20));\r
156 }\r
157 return jTextFieldFeatureFlag;\r
158 }\r
159\r
160 /**\r
161 * This method initializes jScrollPane\r
162 * \r
163 * @return javax.swing.JScrollPane\r
164 */\r
165 private JScrollPane getJScrollPane() {\r
166 if (jScrollPane == null) {\r
167 jScrollPane = new JScrollPane();\r
168 jScrollPane.setViewportView(getJContentPane());\r
169 }\r
170 return jScrollPane;\r
171 }\r
172\r
173 /**\r
174 * This method initializes jButtonOk\r
175 * \r
176 * @return javax.swing.JButton\r
177 * \r
178 */\r
179 private JButton getJButtonOk() {\r
180 if (jButtonOk == null) {\r
181 jButtonOk = new JButton();\r
182 jButtonOk.setBounds(new java.awt.Rectangle(290, 122, 90, 20));\r
183 jButtonOk.setText("Ok");\r
184 jButtonOk.addActionListener(this);\r
185 }\r
186 return jButtonOk;\r
187 }\r
188\r
189 /**\r
190 * This method initializes jButtonCancel\r
191 * \r
192 * @return javax.swing.JButton\r
193 * \r
194 */\r
195 private JButton getJButtonCancel() {\r
196 if (jButtonCancel == null) {\r
197 jButtonCancel = new JButton();\r
198 jButtonCancel.setBounds(new java.awt.Rectangle(390, 122, 90, 20));\r
199 jButtonCancel.setText("Cancel");\r
200 jButtonCancel.addActionListener(this);\r
201 }\r
202 return jButtonCancel;\r
203 }\r
204\r
205 public static void main(String[] args) {\r
206\r
207 }\r
208\r
209 /**\r
210 * This method initializes this\r
211 * \r
212 */\r
213 private void init() {\r
214 this.setSize(505, 216);\r
215 this.setContentPane(getJScrollPane());\r
216 this.setTitle("Package Dependencies");\r
217 initFrame();\r
218 this.setViewMode(false);\r
219 this.centerWindow();\r
220 }\r
221\r
222 /**\r
223 * This method initializes this\r
224 * \r
225 */\r
226 private void init(PackageDependenciesIdentification inPackageDependenciesIdentification) {\r
227 init();\r
228 this.pdid = inPackageDependenciesIdentification;\r
229 if (pdid != null) {\r
230 this.jComboBoxPackageName.setSelectedItem(pdid.getName());\r
231 this.jTextFieldPackageVersion.setText(pdid.getVersion());\r
232 this.jTextFieldPackageGuid.setText(pdid.getGuid());\r
233 jTextFieldFeatureFlag.setText(pdid.getFeatureFlag());\r
234 this.jArchCheckBox.setSelectedItems(pdid.getSupArchList());\r
235 }\r
236 }\r
237\r
238 /**\r
239 * This is the default constructor\r
240 * \r
241 */\r
242 public PackageDepDlg(PackageDependenciesIdentification inPackageDependenciesIdentification, IFrame iFrame) {\r
243 super(iFrame, true);\r
244 init(inPackageDependenciesIdentification);\r
245 }\r
246\r
247 /**\r
248 * Disable all components when the mode is view\r
249 * \r
250 * @param isView\r
251 * true - The view mode; false - The non-view mode\r
252 * \r
253 */\r
254 public void setViewMode(boolean isView) {\r
255 if (isView) {\r
256 this.jComboBoxPackageName.setEnabled(!isView);\r
257 }\r
258 }\r
259\r
260 /**\r
261 * This method initializes jContentPane\r
262 * \r
263 * @return javax.swing.JPanel jContentPane\r
264 * \r
265 */\r
266 private JPanel getJContentPane() {\r
267 if (jContentPane == null) {\r
268 jStarLabel1 = new StarLabel();\r
269 jStarLabel1.setLocation(new java.awt.Point(2, 12));\r
270 jLabelPackageName = new JLabel();\r
271 jLabelPackageName.setBounds(new java.awt.Rectangle(12, 12, 168, 20));\r
272 jLabelPackageName.setText("Package Name");\r
273\r
274 jLabelPackageVersion = new JLabel();\r
275 jLabelPackageVersion.setBounds(new java.awt.Rectangle(12, 37, 168, 20));\r
276 jLabelPackageVersion.setText("Package Version");\r
277\r
278 jLabelPackageGuid = new JLabel();\r
279 jLabelPackageGuid.setBounds(new java.awt.Rectangle(12, 37, 168, 20));\r
280 jLabelPackageGuid.setText("Package Guid");\r
281 jLabelPackageGuid.setVisible(false);\r
282\r
283 jLabelFeatureFlag = new JLabel();\r
284 jLabelFeatureFlag.setBounds(new java.awt.Rectangle(12, 62, 168, 20));\r
285 jLabelFeatureFlag.setText("Feature Flag Expression");\r
286\r
287 jLabelArch = new JLabel();\r
288 jLabelArch.setBounds(new java.awt.Rectangle(12, 87, 168, 20));\r
289 jLabelArch.setText("Supported Architectures");\r
290 jArchCheckBox = new ArchCheckBox();\r
291 jArchCheckBox.setBounds(new java.awt.Rectangle(168, 87, 320, 20));\r
292 jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\r
293\r
294 jContentPane = new JPanel();\r
295 jContentPane.setLayout(null);\r
296 jContentPane.setPreferredSize(new java.awt.Dimension(485, 170));\r
297\r
298 jContentPane.add(jStarLabel1, null);\r
299 jContentPane.add(jLabelPackageName, null);\r
300 jContentPane.add(getJComboBoxPackageName(), null);\r
301 jContentPane.add(jLabelPackageGuid, null);\r
302 jContentPane.add(getJTextFieldPackageGuid(), null);\r
303 jContentPane.add(jLabelPackageVersion, null);\r
304 jContentPane.add(getJTextFieldPackageVersion(), null);\r
305 // LAH Not Used here\r
306 // jContentPane.add(getJButtonGenerateGuid(), null);\r
307 jContentPane.add(jLabelFeatureFlag, null);\r
308 jContentPane.add(getJTextFieldFeatureFlag(), null);\r
309 jContentPane.add(jLabelArch, null);\r
310 jContentPane.add(jArchCheckBox, null);\r
311 jContentPane.add(getJButtonOk(), null);\r
312 jContentPane.add(getJButtonCancel(), null);\r
313 }\r
314 return jContentPane;\r
315 }\r
316\r
317 /*\r
318 * (non-Javadoc)\r
319 * \r
320 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
321 * \r
322 * Override actionPerformed to listen all actions\r
323 * \r
324 */\r
325 public void actionPerformed(ActionEvent arg0) {\r
326 if (arg0.getSource() == jButtonOk) {\r
327 if (checkAdd()) {\r
328 getCurrentPackageDependencies();\r
329 this.returnType = DataType.RETURN_TYPE_OK;\r
330 this.setVisible(false);\r
331 }\r
332 }\r
333\r
334 if (arg0.getSource() == jButtonCancel) {\r
335 this.returnType = DataType.RETURN_TYPE_CANCEL;\r
336 this.setVisible(false);\r
337 }\r
338 }\r
339\r
340 /**\r
341 * This method initializes Usage type, Package type and Arch type\r
342 * \r
343 */\r
344 private void initFrame() {\r
345 for (int index = 0; index < vPackage.size(); index++) {\r
346 jComboBoxPackageName.addItem(vPackage.elementAt(index).getName());\r
347 }\r
348 }\r
349\r
350 /**\r
351 * Data validation for all fields before add current item to Vector\r
352 * \r
353 * @retval true - All datas are valid\r
354 * @retval false - At least one data is invalid\r
355 * \r
356 */\r
357 public boolean checkAdd() {\r
358 //\r
359 // Check if all fields have correct data types\r
360 //\r
361\r
362 //\r
363 // Check PackageGuid\r
364 //\r
365 // if (!isEmpty(this.jTextFieldPackageGuid.getText())) {\r
366 // if (!DataValidation.isGuid(this.jTextFieldPackageGuid.getText())) {\r
367 // Log.err("Incorrect data type for Package Guid");\r
368 // return false;\r
369 // }\r
370 // }\r
371\r
372 //\r
373 // Check PackageVersion\r
374 //\r
375 if (!isEmpty(this.jTextFieldPackageVersion.getText())) {\r
376 if (!DataValidation.isVersion(this.jTextFieldPackageVersion.getText())) {\r
377 Log.wrn("Update Package Dependencies", "Incorrect data type for Package Version");\r
378 return false;\r
379 }\r
380 }\r
381\r
382 //\r
383 // Check FeatureFlag\r
384 //\r
385 if (!isEmpty(this.jTextFieldFeatureFlag.getText())) {\r
386 if (!DataValidation.isFeatureFlag(this.jTextFieldFeatureFlag.getText())) {\r
387 Log.wrn("Update Package Dependencies", "Incorrect data type for Feature Flag");\r
388 return false;\r
389 }\r
390 }\r
391\r
392 return true;\r
393 }\r
394\r
395 private PackageDependenciesIdentification getCurrentPackageDependencies() {\r
396 String arg0 = this.jComboBoxPackageName.getSelectedItem().toString();\r
397 String arg1 = this.jTextFieldPackageVersion.getText();\r
398 String arg2 = this.jTextFieldPackageGuid.getText();\r
399\r
400 String arg3 = this.jTextFieldFeatureFlag.getText();\r
401 Vector<String> arg4 = this.jArchCheckBox.getSelectedItemsVector();\r
402 pdid = new PackageDependenciesIdentification(arg0, arg1, arg2, arg3, arg4);\r
403 return pdid;\r
404 }\r
405\r
406 /*\r
407 * (non-Javadoc)\r
408 * \r
409 * @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent)\r
410 * \r
411 * Reflesh the frame when selected item changed\r
412 * \r
413 */\r
414 public void itemStateChanged(ItemEvent arg0) {\r
415 if (arg0.getSource() == this.jComboBoxPackageName && arg0.getStateChange() == ItemEvent.SELECTED) {\r
416 for (int index = 0; index < vPackage.size(); index++) {\r
417 if (this.jComboBoxPackageName.getSelectedItem().toString().equals(vPackage.get(index).getName())) {\r
418 this.jTextFieldPackageGuid.setText(vPackage.get(index).getGuid());\r
419 }\r
420 }\r
421 }\r
422 }\r
423\r
424 public PackageDependenciesIdentification getPdid() {\r
425 return pdid;\r
426 }\r
427\r
428 public void setPdid(PackageDependenciesIdentification pdid) {\r
429 this.pdid = pdid;\r
430 }\r
431\r
432}\r