3 The file is used to create, update Include of MSA/MBD file
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
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.
15 package org
.tianocore
.frameworkwizard
.module
.ui
.dialog
;
17 import java
.awt
.event
.ActionEvent
;
18 import java
.awt
.event
.ItemEvent
;
19 import java
.awt
.event
.ItemListener
;
20 import java
.util
.Vector
;
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
;
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
;
41 * The class is used to create, update Include of MSA/MBD file It extends
47 public class PackageDepDlg
extends IDialog
implements ItemListener
{
49 // / Define class Serial Version UID
51 private static final long serialVersionUID
= 3465193035145152131L;
54 // Define class members
56 private JPanel jContentPane
= null;
58 private JLabel jLabelPackageName
= null;
60 private StarLabel jStarLabel1
= null;
62 private JComboBox jComboBoxPackageName
= null;
64 private JLabel jLabelPackageGuid
= null;
66 private JTextField jTextFieldPackageGuid
= null;
68 private JButton jButtonGenerateGuid
= null;
70 private JLabel jLabelPackageVersion
= null;
72 private JTextField jTextFieldPackageVersion
= null;
74 private JLabel jLabelFeatureFlag
= null;
76 private JTextField jTextFieldFeatureFlag
= null;
78 private JScrollPane jScrollPane
= null;
80 private JLabel jLabelArch
= null;
82 private ArchCheckBox jArchCheckBox
= null;
84 private JButton jButtonOk
= null;
86 private JButton jButtonCancel
= null;
91 private PackageDependenciesIdentification pdid
= null;
93 private WorkspaceTools wt
= new WorkspaceTools();
95 private Vector
<PackageIdentification
> vPackage
= wt
.getAllPackages();
98 * This method initializes jComboBoxPackageName
100 * @return javax.swing.JComboBox
102 private JComboBox
getJComboBoxPackageName() {
103 if (jComboBoxPackageName
== null) {
104 jComboBoxPackageName
= new JComboBox();
105 jComboBoxPackageName
.setBounds(new java
.awt
.Rectangle(160, 10, 320, 20));
106 jComboBoxPackageName
.setPreferredSize(new java
.awt
.Dimension(320, 20));
107 jComboBoxPackageName
.setToolTipText("If your Module requires a package list that here.");
108 jComboBoxPackageName
.addItemListener(this);
110 return jComboBoxPackageName
;
114 * This method initializes jTextFieldPackageGuid
116 * @return javax.swing.JTextField
118 private JTextField
getJTextFieldPackageGuid() {
119 if (jTextFieldPackageGuid
== null) {
120 jTextFieldPackageGuid
= new JTextField();
121 jTextFieldPackageGuid
.setBounds(new java
.awt
.Rectangle(160, 35, 320, 20));
122 jTextFieldPackageGuid
.setPreferredSize(new java
.awt
.Dimension(320, 20));
123 jTextFieldPackageGuid
.setEditable(false);
124 jTextFieldPackageGuid
.setVisible(false);
126 return jTextFieldPackageGuid
;
130 * This method initializes jButtonGenerateGuid
132 * @return javax.swing.JButton
134 private JButton
getJButtonGenerateGuid() {
135 if (jButtonGenerateGuid
== null) {
136 jButtonGenerateGuid
= new JButton();
137 jButtonGenerateGuid
.setBounds(new java
.awt
.Rectangle(415, 35, 65, 20));
138 jButtonGenerateGuid
.setPreferredSize(new java
.awt
.Dimension(65, 20));
139 jButtonGenerateGuid
.setText("GEN");
140 jButtonGenerateGuid
.addActionListener(this);
141 jButtonGenerateGuid
.setVisible(false);
143 return jButtonGenerateGuid
;
147 * This method initializes jTextFieldPackageVersion
149 * @return javax.swing.JTextField
151 private JTextField
getJTextFieldPackageVersion() {
152 if (jTextFieldPackageVersion
== null) {
153 jTextFieldPackageVersion
= new JTextField();
154 jTextFieldPackageVersion
.setBounds(new java
.awt
.Rectangle(160, 35, 320, 20));
155 jTextFieldPackageVersion
.setPreferredSize(new java
.awt
.Dimension(320, 20));
156 jTextFieldPackageVersion
157 .setToolTipText("If this module depends on a specific version of a package, enter the package version here. If the module can use the latest version that does not break backward compatibility, leave this field blank");
159 return jTextFieldPackageVersion
;
163 * This method initializes jTextFieldFeatureFlag
165 * @return javax.swing.JTextField
167 private JTextField
getJTextFieldFeatureFlag() {
168 if (jTextFieldFeatureFlag
== null) {
169 jTextFieldFeatureFlag
= new JTextField();
170 jTextFieldFeatureFlag
.setBounds(new java
.awt
.Rectangle(160, 60, 320, 20));
171 jTextFieldFeatureFlag
.setPreferredSize(new java
.awt
.Dimension(320, 20));
173 return jTextFieldFeatureFlag
;
177 * This method initializes jScrollPane
179 * @return javax.swing.JScrollPane
181 private JScrollPane
getJScrollPane() {
182 if (jScrollPane
== null) {
183 jScrollPane
= new JScrollPane();
184 jScrollPane
.setViewportView(getJContentPane());
190 * This method initializes jButtonOk
192 * @return javax.swing.JButton
195 private JButton
getJButtonOk() {
196 if (jButtonOk
== null) {
197 jButtonOk
= new JButton();
198 jButtonOk
.setBounds(new java
.awt
.Rectangle(290, 115, 90, 20));
199 jButtonOk
.setText("Ok");
200 jButtonOk
.addActionListener(this);
206 * This method initializes jButtonCancel
208 * @return javax.swing.JButton
211 private JButton
getJButtonCancel() {
212 if (jButtonCancel
== null) {
213 jButtonCancel
= new JButton();
214 jButtonCancel
.setBounds(new java
.awt
.Rectangle(390, 115, 90, 20));
215 jButtonCancel
.setText("Cancel");
216 jButtonCancel
.addActionListener(this);
218 return jButtonCancel
;
221 public static void main(String
[] args
) {
226 * This method initializes this
229 private void init() {
230 this.setSize(508, 188);
231 this.setContentPane(getJScrollPane());
232 this.setTitle("Package Dependencies");
234 this.setViewMode(false);
239 * This method initializes this
242 private void init(PackageDependenciesIdentification inPackageDependenciesIdentification
) {
244 this.pdid
= inPackageDependenciesIdentification
;
246 this.jComboBoxPackageName
.setSelectedItem(pdid
.getName());
247 this.jTextFieldPackageVersion
.setText(pdid
.getVersion());
248 this.jTextFieldPackageGuid
.setText(pdid
.getGuid());
249 jTextFieldFeatureFlag
.setText(pdid
.getFeatureFlag());
250 this.jArchCheckBox
.setSelectedItems(pdid
.getSupArchList());
255 * This is the default constructor
258 public PackageDepDlg(PackageDependenciesIdentification inPackageDependenciesIdentification
, IFrame iFrame
) {
260 init(inPackageDependenciesIdentification
);
264 * Disable all components when the mode is view
267 * true - The view mode; false - The non-view mode
270 public void setViewMode(boolean isView
) {
272 this.jComboBoxPackageName
.setEnabled(!isView
);
277 * This method initializes jContentPane
279 * @return javax.swing.JPanel jContentPane
282 private JPanel
getJContentPane() {
283 if (jContentPane
== null) {
284 jStarLabel1
= new StarLabel();
285 jStarLabel1
.setLocation(new java
.awt
.Point(2, 10));
286 jLabelPackageName
= new JLabel();
287 jLabelPackageName
.setBounds(new java
.awt
.Rectangle(15, 10, 145, 20));
288 jLabelPackageName
.setText("Package Name");
290 jLabelPackageVersion
= new JLabel();
291 jLabelPackageVersion
.setBounds(new java
.awt
.Rectangle(15, 35, 145, 20));
292 jLabelPackageVersion
.setText("Package Version");
294 jLabelPackageGuid
= new JLabel();
295 jLabelPackageGuid
.setBounds(new java
.awt
.Rectangle(15, 35, 145, 20));
296 jLabelPackageGuid
.setText("Package Guid");
297 jLabelPackageGuid
.setVisible(false);
299 jLabelFeatureFlag
= new JLabel();
300 jLabelFeatureFlag
.setBounds(new java
.awt
.Rectangle(15, 60, 145, 20));
301 jLabelFeatureFlag
.setText("Feature Flag Expression");
303 jLabelArch
= new JLabel();
304 jLabelArch
.setBounds(new java
.awt
.Rectangle(15, 85, 145, 20));
305 jLabelArch
.setText("Supported Architectures");
306 jArchCheckBox
= new ArchCheckBox();
307 jArchCheckBox
.setBounds(new java
.awt
.Rectangle(160, 85, 320, 20));
308 jArchCheckBox
.setPreferredSize(new java
.awt
.Dimension(320, 20));
310 jContentPane
= new JPanel();
311 jContentPane
.setLayout(null);
312 jContentPane
.setPreferredSize(new java
.awt
.Dimension(485, 145));
314 jContentPane
.add(jStarLabel1
, null);
315 jContentPane
.add(jLabelPackageName
, null);
316 jContentPane
.add(getJComboBoxPackageName(), null);
317 jContentPane
.add(jLabelPackageGuid
, null);
318 jContentPane
.add(getJTextFieldPackageGuid(), null);
319 jContentPane
.add(jLabelPackageVersion
, null);
320 jContentPane
.add(getJTextFieldPackageVersion(), null);
322 // jContentPane.add(getJButtonGenerateGuid(), null);
323 jContentPane
.add(jLabelFeatureFlag
, null);
324 jContentPane
.add(getJTextFieldFeatureFlag(), null);
325 jContentPane
.add(jLabelArch
, null);
326 jContentPane
.add(jArchCheckBox
, null);
327 jContentPane
.add(getJButtonOk(), null);
328 jContentPane
.add(getJButtonCancel(), null);
336 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
338 * Override actionPerformed to listen all actions
341 public void actionPerformed(ActionEvent arg0
) {
342 if (arg0
.getSource() == jButtonOk
) {
344 getCurrentPackageDependencies();
345 this.returnType
= DataType
.RETURN_TYPE_OK
;
346 this.setVisible(false);
350 if (arg0
.getSource() == jButtonCancel
) {
351 this.returnType
= DataType
.RETURN_TYPE_CANCEL
;
352 this.setVisible(false);
357 * This method initializes Usage type, Package type and Arch type
360 private void initFrame() {
361 for (int index
= 0; index
< vPackage
.size(); index
++) {
362 jComboBoxPackageName
.addItem(vPackage
.elementAt(index
).getName());
367 * Data validation for all fields before add current item to Vector
369 * @retval true - All datas are valid
370 * @retval false - At least one data is invalid
373 public boolean checkAdd() {
375 // Check if all fields have correct data types
381 // if (!isEmpty(this.jTextFieldPackageGuid.getText())) {
382 // if (!DataValidation.isGuid(this.jTextFieldPackageGuid.getText())) {
383 // Log.err("Incorrect data type for Package Guid");
389 // Check PackageVersion
391 if (!isEmpty(this.jTextFieldPackageVersion
.getText())) {
392 if (!DataValidation
.isVersion(this.jTextFieldPackageVersion
.getText())) {
393 Log
.wrn("Update Package Dependencies", "Incorrect data type for Package Version");
401 if (!isEmpty(this.jTextFieldFeatureFlag
.getText())) {
402 if (!DataValidation
.isFeatureFlag(this.jTextFieldFeatureFlag
.getText())) {
403 Log
.wrn("Update Package Dependencies", "Incorrect data type for Feature Flag");
412 private PackageDependenciesIdentification
getCurrentPackageDependencies() {
413 String arg0
= this.jComboBoxPackageName
.getSelectedItem().toString();
414 String arg1
= this.jTextFieldPackageVersion
.getText();
415 String arg2
= this.jTextFieldPackageGuid
.getText();
417 String arg3
= this.jTextFieldFeatureFlag
.getText();
418 Vector
<String
> arg4
= this.jArchCheckBox
.getSelectedItemsVector();
419 pdid
= new PackageDependenciesIdentification(arg0
, arg1
, arg2
, arg3
, arg4
);
426 * @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent)
428 * Reflesh the frame when selected item changed
431 public void itemStateChanged(ItemEvent arg0
) {
432 if (arg0
.getSource() == this.jComboBoxPackageName
&& arg0
.getStateChange() == ItemEvent
.SELECTED
) {
433 for (int index
= 0; index
< vPackage
.size(); index
++) {
434 if (this.jComboBoxPackageName
.getSelectedItem().toString().equals(vPackage
.get(index
).getName())) {
435 this.jTextFieldPackageGuid
.setText(vPackage
.get(index
).getGuid());
441 public PackageDependenciesIdentification
getPdid() {
445 public void setPdid(PackageDependenciesIdentification pdid
) {