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
43 * It extends * IDialog
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, 62, 320, 20));
155 jTextFieldFeatureFlag
.setPreferredSize(new java
.awt
.Dimension(320, 20));
157 return jTextFieldFeatureFlag
;
161 * This method initializes jScrollPane
163 * @return javax.swing.JScrollPane
165 private JScrollPane
getJScrollPane() {
166 if (jScrollPane
== null) {
167 jScrollPane
= new JScrollPane();
168 jScrollPane
.setViewportView(getJContentPane());
174 * This method initializes jButtonOk
176 * @return javax.swing.JButton
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);
190 * This method initializes jButtonCancel
192 * @return javax.swing.JButton
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);
202 return jButtonCancel
;
205 public static void main(String
[] args
) {
210 * This method initializes this
213 private void init() {
214 this.setSize(505, 216);
215 this.setContentPane(getJScrollPane());
216 this.setTitle("Package Dependencies");
218 this.setViewMode(false);
223 * This method initializes this
226 private void init(PackageDependenciesIdentification inPackageDependenciesIdentification
) {
228 this.pdid
= inPackageDependenciesIdentification
;
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());
239 * This is the default constructor
242 public PackageDepDlg(PackageDependenciesIdentification inPackageDependenciesIdentification
, IFrame iFrame
) {
244 init(inPackageDependenciesIdentification
);
248 * Disable all components when the mode is view
251 * true - The view mode; false - The non-view mode
254 public void setViewMode(boolean isView
) {
256 this.jComboBoxPackageName
.setEnabled(!isView
);
261 * This method initializes jContentPane
263 * @return javax.swing.JPanel jContentPane
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");
274 jLabelPackageVersion
= new JLabel();
275 jLabelPackageVersion
.setBounds(new java
.awt
.Rectangle(12, 37, 168, 20));
276 jLabelPackageVersion
.setText("Package Version");
278 jLabelPackageGuid
= new JLabel();
279 jLabelPackageGuid
.setBounds(new java
.awt
.Rectangle(12, 37, 168, 20));
280 jLabelPackageGuid
.setText("Package Guid");
281 jLabelPackageGuid
.setVisible(false);
283 jLabelFeatureFlag
= new JLabel();
284 jLabelFeatureFlag
.setBounds(new java
.awt
.Rectangle(12, 62, 168, 20));
285 jLabelFeatureFlag
.setText("Feature Flag Expression");
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));
294 jContentPane
= new JPanel();
295 jContentPane
.setLayout(null);
296 jContentPane
.setPreferredSize(new java
.awt
.Dimension(485, 170));
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);
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);
320 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
322 * Override actionPerformed to listen all actions
325 public void actionPerformed(ActionEvent arg0
) {
326 if (arg0
.getSource() == jButtonOk
) {
328 getCurrentPackageDependencies();
329 this.returnType
= DataType
.RETURN_TYPE_OK
;
330 this.setVisible(false);
334 if (arg0
.getSource() == jButtonCancel
) {
335 this.returnType
= DataType
.RETURN_TYPE_CANCEL
;
336 this.setVisible(false);
341 * This method initializes Usage type, Package type and Arch type
344 private void initFrame() {
345 for (int index
= 0; index
< vPackage
.size(); index
++) {
346 jComboBoxPackageName
.addItem(vPackage
.elementAt(index
).getName());
351 * Data validation for all fields before add current item to Vector
353 * @retval true - All datas are valid
354 * @retval false - At least one data is invalid
357 public boolean checkAdd() {
359 // Check if all fields have correct data types
365 // if (!isEmpty(this.jTextFieldPackageGuid.getText())) {
366 // if (!DataValidation.isGuid(this.jTextFieldPackageGuid.getText())) {
367 // Log.err("Incorrect data type for Package Guid");
373 // Check PackageVersion
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");
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");
395 private PackageDependenciesIdentification
getCurrentPackageDependencies() {
396 String arg0
= this.jComboBoxPackageName
.getSelectedItem().toString();
397 String arg1
= this.jTextFieldPackageVersion
.getText();
398 String arg2
= this.jTextFieldPackageGuid
.getText();
400 String arg3
= this.jTextFieldFeatureFlag
.getText();
401 Vector
<String
> arg4
= this.jArchCheckBox
.getSelectedItemsVector();
402 pdid
= new PackageDependenciesIdentification(arg0
, arg1
, arg2
, arg3
, arg4
);
409 * @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent)
411 * Reflesh the frame when selected item changed
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());
424 public PackageDependenciesIdentification
getPdid() {
428 public void setPdid(PackageDependenciesIdentification pdid
) {