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 JLabel jLabelPackageVersion
= null;
70 private JTextField jTextFieldPackageVersion
= null;
72 private JLabel jLabelFeatureFlag
= null;
74 private JTextField jTextFieldFeatureFlag
= null;
76 private JScrollPane jScrollPane
= null;
78 private JLabel jLabelArch
= null;
80 private ArchCheckBox jArchCheckBox
= null;
82 private JButton jButtonOk
= null;
84 private JButton jButtonCancel
= null;
89 private PackageDependenciesIdentification pdid
= null;
91 private WorkspaceTools wt
= new WorkspaceTools();
93 private Vector
<PackageIdentification
> vPackage
= wt
.getAllPackages();
96 * This method initializes jComboBoxPackageName
98 * @return javax.swing.JComboBox
100 private JComboBox
getJComboBoxPackageName() {
101 if (jComboBoxPackageName
== null) {
102 jComboBoxPackageName
= new JComboBox();
103 jComboBoxPackageName
.setBounds(new java
.awt
.Rectangle(160, 10, 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);
108 return jComboBoxPackageName
;
112 * This method initializes jTextFieldPackageGuid
114 * @return javax.swing.JTextField
116 private JTextField
getJTextFieldPackageGuid() {
117 if (jTextFieldPackageGuid
== null) {
118 jTextFieldPackageGuid
= new JTextField();
119 jTextFieldPackageGuid
.setBounds(new java
.awt
.Rectangle(160, 35, 320, 20));
120 jTextFieldPackageGuid
.setPreferredSize(new java
.awt
.Dimension(320, 20));
121 jTextFieldPackageGuid
.setEditable(false);
122 jTextFieldPackageGuid
.setVisible(false);
124 return jTextFieldPackageGuid
;
128 * This method initializes jTextFieldPackageVersion
130 * @return javax.swing.JTextField
132 private JTextField
getJTextFieldPackageVersion() {
133 if (jTextFieldPackageVersion
== null) {
134 jTextFieldPackageVersion
= new JTextField();
135 jTextFieldPackageVersion
.setBounds(new java
.awt
.Rectangle(160, 35, 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>");
144 return jTextFieldPackageVersion
;
148 * This method initializes jTextFieldFeatureFlag
150 * @return javax.swing.JTextField
152 private JTextField
getJTextFieldFeatureFlag() {
153 if (jTextFieldFeatureFlag
== null) {
154 jTextFieldFeatureFlag
= new JTextField();
155 jTextFieldFeatureFlag
.setBounds(new java
.awt
.Rectangle(160, 60, 320, 20));
156 jTextFieldFeatureFlag
.setPreferredSize(new java
.awt
.Dimension(320, 20));
158 return jTextFieldFeatureFlag
;
162 * This method initializes jScrollPane
164 * @return javax.swing.JScrollPane
166 private JScrollPane
getJScrollPane() {
167 if (jScrollPane
== null) {
168 jScrollPane
= new JScrollPane();
169 jScrollPane
.setViewportView(getJContentPane());
175 * This method initializes jButtonOk
177 * @return javax.swing.JButton
180 private JButton
getJButtonOk() {
181 if (jButtonOk
== null) {
182 jButtonOk
= new JButton();
183 jButtonOk
.setBounds(new java
.awt
.Rectangle(290, 115, 90, 20));
184 jButtonOk
.setText("Ok");
185 jButtonOk
.addActionListener(this);
191 * This method initializes jButtonCancel
193 * @return javax.swing.JButton
196 private JButton
getJButtonCancel() {
197 if (jButtonCancel
== null) {
198 jButtonCancel
= new JButton();
199 jButtonCancel
.setBounds(new java
.awt
.Rectangle(390, 115, 90, 20));
200 jButtonCancel
.setText("Cancel");
201 jButtonCancel
.addActionListener(this);
203 return jButtonCancel
;
206 public static void main(String
[] args
) {
211 * This method initializes this
214 private void init() {
215 this.setSize(508, 188);
216 this.setContentPane(getJScrollPane());
217 this.setTitle("Package Dependencies");
219 this.setViewMode(false);
224 * This method initializes this
227 private void init(PackageDependenciesIdentification inPackageDependenciesIdentification
) {
229 this.pdid
= inPackageDependenciesIdentification
;
231 this.jComboBoxPackageName
.setSelectedItem(pdid
.getName());
232 this.jTextFieldPackageVersion
.setText(pdid
.getVersion());
233 this.jTextFieldPackageGuid
.setText(pdid
.getGuid());
234 jTextFieldFeatureFlag
.setText(pdid
.getFeatureFlag());
235 this.jArchCheckBox
.setSelectedItems(pdid
.getSupArchList());
240 * This is the default constructor
243 public PackageDepDlg(PackageDependenciesIdentification inPackageDependenciesIdentification
, IFrame iFrame
) {
245 init(inPackageDependenciesIdentification
);
249 * Disable all components when the mode is view
252 * true - The view mode; false - The non-view mode
255 public void setViewMode(boolean isView
) {
257 this.jComboBoxPackageName
.setEnabled(!isView
);
262 * This method initializes jContentPane
264 * @return javax.swing.JPanel jContentPane
267 private JPanel
getJContentPane() {
268 if (jContentPane
== null) {
269 jStarLabel1
= new StarLabel();
270 jStarLabel1
.setLocation(new java
.awt
.Point(2, 10));
271 jLabelPackageName
= new JLabel();
272 jLabelPackageName
.setBounds(new java
.awt
.Rectangle(15, 10, 145, 20));
273 jLabelPackageName
.setText("Package Name");
275 jLabelPackageVersion
= new JLabel();
276 jLabelPackageVersion
.setBounds(new java
.awt
.Rectangle(15, 35, 145, 20));
277 jLabelPackageVersion
.setText("Package Version");
279 jLabelPackageGuid
= new JLabel();
280 jLabelPackageGuid
.setBounds(new java
.awt
.Rectangle(15, 35, 145, 20));
281 jLabelPackageGuid
.setText("Package Guid");
282 jLabelPackageGuid
.setVisible(false);
284 jLabelFeatureFlag
= new JLabel();
285 jLabelFeatureFlag
.setBounds(new java
.awt
.Rectangle(15, 60, 145, 20));
286 jLabelFeatureFlag
.setText("Feature Flag Expression");
288 jLabelArch
= new JLabel();
289 jLabelArch
.setBounds(new java
.awt
.Rectangle(15, 85, 145, 20));
290 jLabelArch
.setText("Supported Architectures");
291 jArchCheckBox
= new ArchCheckBox();
292 jArchCheckBox
.setBounds(new java
.awt
.Rectangle(160, 85, 320, 20));
293 jArchCheckBox
.setPreferredSize(new java
.awt
.Dimension(320, 20));
295 jContentPane
= new JPanel();
296 jContentPane
.setLayout(null);
297 jContentPane
.setPreferredSize(new java
.awt
.Dimension(485, 145));
299 jContentPane
.add(jStarLabel1
, null);
300 jContentPane
.add(jLabelPackageName
, null);
301 jContentPane
.add(getJComboBoxPackageName(), null);
302 jContentPane
.add(jLabelPackageGuid
, null);
303 jContentPane
.add(getJTextFieldPackageGuid(), null);
304 jContentPane
.add(jLabelPackageVersion
, null);
305 jContentPane
.add(getJTextFieldPackageVersion(), null);
307 // jContentPane.add(getJButtonGenerateGuid(), null);
308 jContentPane
.add(jLabelFeatureFlag
, null);
309 jContentPane
.add(getJTextFieldFeatureFlag(), null);
310 jContentPane
.add(jLabelArch
, null);
311 jContentPane
.add(jArchCheckBox
, null);
312 jContentPane
.add(getJButtonOk(), null);
313 jContentPane
.add(getJButtonCancel(), null);
321 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
323 * Override actionPerformed to listen all actions
326 public void actionPerformed(ActionEvent arg0
) {
327 if (arg0
.getSource() == jButtonOk
) {
329 getCurrentPackageDependencies();
330 this.returnType
= DataType
.RETURN_TYPE_OK
;
331 this.setVisible(false);
335 if (arg0
.getSource() == jButtonCancel
) {
336 this.returnType
= DataType
.RETURN_TYPE_CANCEL
;
337 this.setVisible(false);
342 * This method initializes Usage type, Package type and Arch type
345 private void initFrame() {
346 for (int index
= 0; index
< vPackage
.size(); index
++) {
347 jComboBoxPackageName
.addItem(vPackage
.elementAt(index
).getName());
352 * Data validation for all fields before add current item to Vector
354 * @retval true - All datas are valid
355 * @retval false - At least one data is invalid
358 public boolean checkAdd() {
360 // Check if all fields have correct data types
366 // if (!isEmpty(this.jTextFieldPackageGuid.getText())) {
367 // if (!DataValidation.isGuid(this.jTextFieldPackageGuid.getText())) {
368 // Log.err("Incorrect data type for Package Guid");
374 // Check PackageVersion
376 if (!isEmpty(this.jTextFieldPackageVersion
.getText())) {
377 if (!DataValidation
.isVersion(this.jTextFieldPackageVersion
.getText())) {
378 Log
.wrn("Update Package Dependencies", "Incorrect data type for Package Version");
386 if (!isEmpty(this.jTextFieldFeatureFlag
.getText())) {
387 if (!DataValidation
.isFeatureFlag(this.jTextFieldFeatureFlag
.getText())) {
388 Log
.wrn("Update Package Dependencies", "Incorrect data type for Feature Flag");
396 private PackageDependenciesIdentification
getCurrentPackageDependencies() {
397 String arg0
= this.jComboBoxPackageName
.getSelectedItem().toString();
398 String arg1
= this.jTextFieldPackageVersion
.getText();
399 String arg2
= this.jTextFieldPackageGuid
.getText();
401 String arg3
= this.jTextFieldFeatureFlag
.getText();
402 Vector
<String
> arg4
= this.jArchCheckBox
.getSelectedItemsVector();
403 pdid
= new PackageDependenciesIdentification(arg0
, arg1
, arg2
, arg3
, arg4
);
410 * @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent)
412 * Reflesh the frame when selected item changed
415 public void itemStateChanged(ItemEvent arg0
) {
416 if (arg0
.getSource() == this.jComboBoxPackageName
&& arg0
.getStateChange() == ItemEvent
.SELECTED
) {
417 for (int index
= 0; index
< vPackage
.size(); index
++) {
418 if (this.jComboBoxPackageName
.getSelectedItem().toString().equals(vPackage
.get(index
).getName())) {
419 this.jTextFieldPackageGuid
.setText(vPackage
.get(index
).getGuid());
425 public PackageDependenciesIdentification
getPdid() {
429 public void setPdid(PackageDependenciesIdentification pdid
) {