3 The file is used to create, update Package Dependencies section of the MSA 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 Package Dependencies section of the MSA file
46 public class PackageDepDlg
extends IDialog
implements ItemListener
{
48 // / Define class Serial Version UID
50 private static final long serialVersionUID
= 3465193035145152131L;
53 // Define class members
55 private JPanel jContentPane
= null;
57 private JLabel jLabelPackageName
= null;
59 private StarLabel jStarLabel1
= null;
61 private JComboBox jComboBoxPackageName
= null;
63 private JLabel jLabelPackageGuid
= null;
65 private JTextField jTextFieldPackageGuid
= null;
67 private JLabel jLabelPackageVersion
= null;
69 private JTextField jTextFieldPackageVersion
= null;
71 private JLabel jLabelFeatureFlag
= null;
73 private JTextField jTextFieldFeatureFlag
= null;
75 private JScrollPane jScrollPane
= null;
77 private JLabel jLabelArch
= null;
79 private ArchCheckBox jArchCheckBox
= null;
81 private JButton jButtonOk
= null;
83 private JButton jButtonCancel
= null;
88 private PackageDependenciesIdentification pdid
= null;
90 private WorkspaceTools wt
= new WorkspaceTools();
92 private Vector
<PackageIdentification
> vPackage
= wt
.getAllPackages();
95 * This method initializes jComboBoxPackageName
97 * @return javax.swing.JComboBox
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);
107 return jComboBoxPackageName
;
111 * This method initializes jTextFieldPackageGuid
113 * @return javax.swing.JTextField
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);
123 return jTextFieldPackageGuid
;
127 * This method initializes jTextFieldPackageVersion
129 * @return javax.swing.JTextField
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>");
143 return jTextFieldPackageVersion
;
147 * This method initializes jTextFieldFeatureFlag
149 * @return javax.swing.JTextField
151 private JTextField
getJTextFieldFeatureFlag() {
152 if (jTextFieldFeatureFlag
== null) {
153 jTextFieldFeatureFlag
= new JTextField();
154 jTextFieldFeatureFlag
.setBounds(new java
.awt
.Rectangle(168, 87, 320, 20));
155 jTextFieldFeatureFlag
.setPreferredSize(new java
.awt
.Dimension(320, 20));
156 jTextFieldFeatureFlag
.setEnabled(false);
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, 122, 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, 122, 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(505, 216);
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, 12));
271 jLabelPackageName
= new JLabel();
272 jLabelPackageName
.setBounds(new java
.awt
.Rectangle(12, 12, 168, 20));
273 jLabelPackageName
.setText("Package Name");
275 jLabelPackageVersion
= new JLabel();
276 jLabelPackageVersion
.setBounds(new java
.awt
.Rectangle(12, 37, 168, 20));
277 jLabelPackageVersion
.setText("Package Version");
279 jLabelPackageGuid
= new JLabel();
280 jLabelPackageGuid
.setBounds(new java
.awt
.Rectangle(12, 37, 168, 20));
281 jLabelPackageGuid
.setText("Package Guid");
282 jLabelPackageGuid
.setVisible(false);
284 jLabelFeatureFlag
= new JLabel();
285 jLabelFeatureFlag
.setBounds(new java
.awt
.Rectangle(12, 87, 168, 20));
286 jLabelFeatureFlag
.setText("Feature Flag Expression");
287 jLabelFeatureFlag
.setEnabled(false);
289 jLabelArch
= new JLabel();
290 jLabelArch
.setBounds(new java
.awt
.Rectangle(12, 62, 168, 20));
291 jLabelArch
.setText("Supported Architectures");
292 jArchCheckBox
= new ArchCheckBox();
293 jArchCheckBox
.setBounds(new java
.awt
.Rectangle(168, 62, 320, 20));
294 jArchCheckBox
.setPreferredSize(new java
.awt
.Dimension(320, 20));
296 jContentPane
= new JPanel();
297 jContentPane
.setLayout(null);
298 jContentPane
.setPreferredSize(new java
.awt
.Dimension(485, 170));
300 jContentPane
.add(jStarLabel1
, null);
301 jContentPane
.add(jLabelPackageName
, null);
302 jContentPane
.add(getJComboBoxPackageName(), null);
303 jContentPane
.add(jLabelPackageGuid
, null);
304 jContentPane
.add(getJTextFieldPackageGuid(), null);
305 jContentPane
.add(jLabelPackageVersion
, null);
306 jContentPane
.add(getJTextFieldPackageVersion(), null);
308 // jContentPane.add(getJButtonGenerateGuid(), null);
309 jContentPane
.add(jLabelFeatureFlag
, null);
310 jContentPane
.add(getJTextFieldFeatureFlag(), null);
311 jContentPane
.add(jLabelArch
, null);
312 jContentPane
.add(jArchCheckBox
, null);
313 jContentPane
.add(getJButtonOk(), null);
314 jContentPane
.add(getJButtonCancel(), null);
322 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
324 * Override actionPerformed to listen all actions
327 public void actionPerformed(ActionEvent arg0
) {
328 if (arg0
.getSource() == jButtonOk
) {
330 getCurrentPackageDependencies();
331 this.returnType
= DataType
.RETURN_TYPE_OK
;
332 this.setVisible(false);
336 if (arg0
.getSource() == jButtonCancel
) {
337 this.returnType
= DataType
.RETURN_TYPE_CANCEL
;
338 this.setVisible(false);
343 * This method initializes Usage type, Package type and Arch type
346 private void initFrame() {
347 for (int index
= 0; index
< vPackage
.size(); index
++) {
348 jComboBoxPackageName
.addItem(vPackage
.elementAt(index
).getName());
353 * Data validation for all fields before add current item to Vector
355 * @retval true - All datas are valid
356 * @retval false - At least one data is invalid
359 public boolean checkAdd() {
361 // Check if all fields have correct data types
367 // if (!isEmpty(this.jTextFieldPackageGuid.getText())) {
368 // if (!DataValidation.isGuid(this.jTextFieldPackageGuid.getText())) {
369 // Log.err("Incorrect data type for Package Guid");
375 // Check PackageVersion
377 if (!isEmpty(this.jTextFieldPackageVersion
.getText())) {
378 if (!DataValidation
.isVersion(this.jTextFieldPackageVersion
.getText())) {
379 Log
.wrn("Update Package Dependencies", "Incorrect data type for Package Version");
387 if (!isEmpty(this.jTextFieldFeatureFlag
.getText())) {
388 if (!DataValidation
.isFeatureFlag(this.jTextFieldFeatureFlag
.getText())) {
389 Log
.wrn("Update Package Dependencies", "Incorrect data type for Feature Flag");
397 private PackageDependenciesIdentification
getCurrentPackageDependencies() {
398 String arg0
= this.jComboBoxPackageName
.getSelectedItem().toString();
399 String arg1
= this.jTextFieldPackageVersion
.getText();
400 String arg2
= this.jTextFieldPackageGuid
.getText();
402 String arg3
= this.jTextFieldFeatureFlag
.getText();
403 Vector
<String
> arg4
= this.jArchCheckBox
.getSelectedItemsVector();
404 pdid
= new PackageDependenciesIdentification(arg0
, arg1
, arg2
, arg3
, arg4
);
411 * @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent)
413 * Reflesh the frame when selected item changed
416 public void itemStateChanged(ItemEvent arg0
) {
417 if (arg0
.getSource() == this.jComboBoxPackageName
&& arg0
.getStateChange() == ItemEvent
.SELECTED
) {
418 for (int index
= 0; index
< vPackage
.size(); index
++) {
419 if (this.jComboBoxPackageName
.getSelectedItem().toString().equals(vPackage
.get(index
).getName())) {
420 this.jTextFieldPackageGuid
.setText(vPackage
.get(index
).getGuid());
426 public PackageDependenciesIdentification
getPdid() {
430 public void setPdid(PackageDependenciesIdentification pdid
) {