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
.ModuleIdentification
;
37 import org
.tianocore
.frameworkwizard
.module
.Identifications
.PackageDependencies
.PackageDependenciesIdentification
;
38 import org
.tianocore
.frameworkwizard
.packaging
.PackageIdentification
;
39 import org
.tianocore
.frameworkwizard
.workspace
.WorkspaceTools
;
42 * The class is used to create, update Package Dependencies section of the MSA file
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(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);
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(168, 37, 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(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>");
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(168, 87, 320, 20));
156 jTextFieldFeatureFlag
.setPreferredSize(new java
.awt
.Dimension(320, 20));
157 jTextFieldFeatureFlag
.setEnabled(false);
159 return jTextFieldFeatureFlag
;
163 * This method initializes jScrollPane
165 * @return javax.swing.JScrollPane
167 private JScrollPane
getJScrollPane() {
168 if (jScrollPane
== null) {
169 jScrollPane
= new JScrollPane();
170 jScrollPane
.setViewportView(getJContentPane());
176 * This method initializes jButtonOk
178 * @return javax.swing.JButton
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);
192 * This method initializes jButtonCancel
194 * @return javax.swing.JButton
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);
204 return jButtonCancel
;
207 public static void main(String
[] args
) {
212 * This method initializes this
215 private void init() {
216 this.setSize(505, 216);
217 this.setContentPane(getJScrollPane());
218 this.setTitle("Package Dependencies");
220 this.setViewMode(false);
225 * This method initializes this
228 private void init(PackageDependenciesIdentification inPackageDependenciesIdentification
, ModuleIdentification mid
) {
230 this.pdid
= inPackageDependenciesIdentification
;
233 // Init arch with module's arch
235 this.jArchCheckBox
.setEnabledItems(wt
.getModuleArch(mid
));
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());
247 * This is the default constructor
250 public PackageDepDlg(PackageDependenciesIdentification inPackageDependenciesIdentification
, IFrame iFrame
, ModuleIdentification mid
) {
252 init(inPackageDependenciesIdentification
, mid
);
256 * Disable all components when the mode is view
259 * true - The view mode; false - The non-view mode
262 public void setViewMode(boolean isView
) {
264 this.jComboBoxPackageName
.setEnabled(!isView
);
269 * This method initializes jContentPane
271 * @return javax.swing.JPanel jContentPane
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");
282 jLabelPackageVersion
= new JLabel();
283 jLabelPackageVersion
.setBounds(new java
.awt
.Rectangle(12, 37, 168, 20));
284 jLabelPackageVersion
.setText("Package Version");
286 jLabelPackageGuid
= new JLabel();
287 jLabelPackageGuid
.setBounds(new java
.awt
.Rectangle(12, 37, 168, 20));
288 jLabelPackageGuid
.setText("Package Guid");
289 jLabelPackageGuid
.setVisible(false);
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);
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));
303 jContentPane
= new JPanel();
304 jContentPane
.setLayout(null);
305 jContentPane
.setPreferredSize(new java
.awt
.Dimension(485, 170));
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);
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);
329 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
331 * Override actionPerformed to listen all actions
334 public void actionPerformed(ActionEvent arg0
) {
335 if (arg0
.getSource() == jButtonOk
) {
337 getCurrentPackageDependencies();
338 this.returnType
= DataType
.RETURN_TYPE_OK
;
339 this.setVisible(false);
343 if (arg0
.getSource() == jButtonCancel
) {
344 this.returnType
= DataType
.RETURN_TYPE_CANCEL
;
345 this.setVisible(false);
350 * This method initializes Usage type, Package type and Arch type
353 private void initFrame() {
354 for (int index
= 0; index
< vPackage
.size(); index
++) {
355 jComboBoxPackageName
.addItem(vPackage
.elementAt(index
).getName());
360 * Data validation for all fields before add current item to Vector
362 * @retval true - All datas are valid
363 * @retval false - At least one data is invalid
366 public boolean checkAdd() {
368 // Check if all fields have correct data types
374 // if (!isEmpty(this.jTextFieldPackageGuid.getText())) {
375 // if (!DataValidation.isGuid(this.jTextFieldPackageGuid.getText())) {
376 // Log.err("Incorrect data type for Package Guid");
382 // Check PackageVersion
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");
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");
404 private PackageDependenciesIdentification
getCurrentPackageDependencies() {
405 String arg0
= this.jComboBoxPackageName
.getSelectedItem().toString();
406 String arg1
= this.jTextFieldPackageVersion
.getText();
407 String arg2
= this.jTextFieldPackageGuid
.getText();
409 String arg3
= this.jTextFieldFeatureFlag
.getText();
410 Vector
<String
> arg4
= this.jArchCheckBox
.getSelectedItemsVector();
411 pdid
= new PackageDependenciesIdentification(arg0
, arg1
, arg2
, arg3
, arg4
);
418 * @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent)
420 * Reflesh the frame when selected item changed
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());
433 public PackageDependenciesIdentification
getPdid() {
437 public void setPdid(PackageDependenciesIdentification pdid
) {