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