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