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
42 It extends IInternalFrame
47 public class PackageDepDlg
extends IDialog
implements ItemListener
{
50 /// Define class Serial Version UID
52 private static final long serialVersionUID
= 3465193035145152131L;
55 //Define class members
57 private JPanel jContentPane
= null;
59 private JLabel jLabelPackageName
= null;
61 private StarLabel jStarLabel1
= null;
63 private JComboBox jComboBoxPackageName
= null;
65 private JLabel jLabelPackageGuid
= null;
67 private JTextField jTextFieldPackageGuid
= null;
69 private JButton jButtonGenerateGuid
= null;
71 private JLabel jLabelPackageVersion
= null;
73 private JTextField jTextFieldPackageVersion
= null;
75 private JLabel jLabelFeatureFlag
= null;
77 private JTextField jTextFieldFeatureFlag
= null;
79 private JScrollPane jScrollPane
= null;
81 private JLabel jLabelArch
= null;
83 private ArchCheckBox jArchCheckBox
= null;
85 private JButton jButtonOk
= null;
87 private JButton jButtonCancel
= null;
92 private PackageDependenciesIdentification pdid
= null;
94 private WorkspaceTools wt
= new WorkspaceTools();
96 private Vector
<PackageIdentification
> vPackage
= wt
.getAllPackages();
99 * This method initializes jComboBoxPackageName
101 * @return javax.swing.JComboBox
103 private JComboBox
getJComboBoxPackageName() {
104 if (jComboBoxPackageName
== null) {
105 jComboBoxPackageName
= new JComboBox();
106 jComboBoxPackageName
.setBounds(new java
.awt
.Rectangle(160, 10, 320, 20));
107 jComboBoxPackageName
.setPreferredSize(new java
.awt
.Dimension(320, 20));
108 jComboBoxPackageName
.setToolTipText("If your Module requires a package list that here.");
109 jComboBoxPackageName
.addItemListener(this);
111 return jComboBoxPackageName
;
115 * This method initializes jTextFieldPackageGuid
117 * @return javax.swing.JTextField
119 private JTextField
getJTextFieldPackageGuid() {
120 if (jTextFieldPackageGuid
== null) {
121 jTextFieldPackageGuid
= new JTextField();
122 jTextFieldPackageGuid
.setBounds(new java
.awt
.Rectangle(160, 35, 320, 20));
123 jTextFieldPackageGuid
.setPreferredSize(new java
.awt
.Dimension(320, 20));
124 jTextFieldPackageGuid
.setEditable(false);
125 jTextFieldPackageGuid
.setVisible(false);
127 return jTextFieldPackageGuid
;
131 * This method initializes jButtonGenerateGuid
133 * @return javax.swing.JButton
135 private JButton
getJButtonGenerateGuid() {
136 if (jButtonGenerateGuid
== null) {
137 jButtonGenerateGuid
= new JButton();
138 jButtonGenerateGuid
.setBounds(new java
.awt
.Rectangle(415, 35, 65, 20));
139 jButtonGenerateGuid
.setPreferredSize(new java
.awt
.Dimension(65, 20));
140 jButtonGenerateGuid
.setText("GEN");
141 jButtonGenerateGuid
.addActionListener(this);
142 jButtonGenerateGuid
.setVisible(false);
144 return jButtonGenerateGuid
;
148 * This method initializes jTextFieldPackageVersion
150 * @return javax.swing.JTextField
152 private JTextField
getJTextFieldPackageVersion() {
153 if (jTextFieldPackageVersion
== null) {
154 jTextFieldPackageVersion
= new JTextField();
155 jTextFieldPackageVersion
.setBounds(new java
.awt
.Rectangle(160, 35, 320, 20));
156 jTextFieldPackageVersion
.setPreferredSize(new java
.awt
.Dimension(320, 20));
157 jTextFieldPackageVersion
158 .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");
160 return jTextFieldPackageVersion
;
164 * This method initializes jTextFieldFeatureFlag
166 * @return javax.swing.JTextField
168 private JTextField
getJTextFieldFeatureFlag() {
169 if (jTextFieldFeatureFlag
== null) {
170 jTextFieldFeatureFlag
= new JTextField();
171 jTextFieldFeatureFlag
.setBounds(new java
.awt
.Rectangle(160, 60, 320, 20));
172 jTextFieldFeatureFlag
.setPreferredSize(new java
.awt
.Dimension(320, 20));
174 return jTextFieldFeatureFlag
;
178 This method initializes jScrollPane
180 @return javax.swing.JScrollPane
182 private JScrollPane
getJScrollPane() {
183 if (jScrollPane
== null) {
184 jScrollPane
= new JScrollPane();
185 jScrollPane
.setViewportView(getJContentPane());
191 This method initializes jButtonOk
193 @return javax.swing.JButton
196 private JButton
getJButtonOk() {
197 if (jButtonOk
== null) {
198 jButtonOk
= new JButton();
199 jButtonOk
.setBounds(new java
.awt
.Rectangle(290, 115, 90, 20));
200 jButtonOk
.setText("Ok");
201 jButtonOk
.addActionListener(this);
207 This method initializes jButtonCancel
209 @return javax.swing.JButton
212 private JButton
getJButtonCancel() {
213 if (jButtonCancel
== null) {
214 jButtonCancel
= new JButton();
215 jButtonCancel
.setBounds(new java
.awt
.Rectangle(390, 115, 90, 20));
216 jButtonCancel
.setText("Cancel");
217 jButtonCancel
.addActionListener(this);
219 return jButtonCancel
;
222 public static void main(String
[] args
) {
227 This method initializes this
230 private void init() {
231 this.setSize(500, 175);
232 this.setContentPane(getJScrollPane());
233 this.setTitle("Package Dependencies");
235 this.setViewMode(false);
240 This method initializes this
243 private void init(PackageDependenciesIdentification inPackageDependenciesIdentification
) {
245 this.pdid
= inPackageDependenciesIdentification
;
247 this.jComboBoxPackageName
.setSelectedItem(pdid
.getName());
248 this.jTextFieldPackageVersion
.setText(pdid
.getVersion());
249 this.jTextFieldPackageGuid
.setText(pdid
.getGuid());
250 jTextFieldFeatureFlag
.setText(pdid
.getFeatureFlag());
251 this.jArchCheckBox
.setSelectedItems(pdid
.getSupArchList());
256 This is the default constructor
259 public PackageDepDlg(PackageDependenciesIdentification inPackageDependenciesIdentification
, IFrame iFrame
) {
261 init(inPackageDependenciesIdentification
);
265 Disable all components when the mode is view
267 @param isView 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 jArchCheckBox
= new ArchCheckBox();
285 jArchCheckBox
.setBounds(new java
.awt
.Rectangle(160, 85, 320, 20));
286 jArchCheckBox
.setPreferredSize(new java
.awt
.Dimension(320, 20));
287 jLabelArch
= new JLabel();
288 jLabelArch
.setBounds(new java
.awt
.Rectangle(15, 85, 140, 20));
289 jLabelArch
.setText("Sup Arch List");
290 jLabelPackageVersion
= new JLabel();
291 jLabelPackageVersion
.setBounds(new java
.awt
.Rectangle(15, 35, 140, 20));
292 jLabelPackageVersion
.setText("Package Version");
293 jLabelPackageGuid
= new JLabel();
294 jLabelPackageGuid
.setBounds(new java
.awt
.Rectangle(15, 35, 140, 20));
295 jLabelPackageGuid
.setText("Package Guid");
296 jLabelPackageGuid
.setVisible(false);
297 jLabelPackageName
= new JLabel();
298 jLabelPackageName
.setBounds(new java
.awt
.Rectangle(15, 10, 140, 20));
299 jLabelPackageName
.setText("Package Name");
301 jContentPane
= new JPanel();
302 jContentPane
.setLayout(null);
303 jContentPane
.setPreferredSize(new java
.awt
.Dimension(490, 140));
305 jContentPane
.add(jLabelPackageName
, null);
306 jStarLabel1
= new StarLabel();
307 jStarLabel1
.setLocation(new java
.awt
.Point(0, 10));
309 jContentPane
.add(jStarLabel1
, null);
310 jContentPane
.add(getJComboBoxPackageName(), null);
311 jContentPane
.add(jLabelPackageGuid
, null);
312 jContentPane
.add(getJTextFieldPackageGuid(), null);
313 jContentPane
.add(getJButtonGenerateGuid(), null);
314 jContentPane
.add(jLabelPackageVersion
, null);
315 jContentPane
.add(getJTextFieldPackageVersion(), null);
317 jLabelFeatureFlag
= new JLabel();
318 jLabelFeatureFlag
.setBounds(new java
.awt
.Rectangle(15, 60, 140, 20));
319 jLabelFeatureFlag
.setText("Feature Flag");
320 jContentPane
.add(jLabelFeatureFlag
, null);
321 jContentPane
.add(getJTextFieldFeatureFlag(), null);
323 jContentPane
.add(jLabelArch
, null);
324 jContentPane
.add(jArchCheckBox
, null);
325 jContentPane
.add(getJButtonOk(), null);
326 jContentPane
.add(getJButtonCancel(), null);
332 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
334 * Override actionPerformed to listen all actions
337 public void actionPerformed(ActionEvent arg0
) {
338 if (arg0
.getSource() == jButtonOk
) {
340 getCurrentPackageDependencies();
341 this.returnType
= DataType
.RETURN_TYPE_OK
;
342 this.setVisible(false);
346 if (arg0
.getSource() == jButtonCancel
) {
347 this.returnType
= DataType
.RETURN_TYPE_CANCEL
;
348 this.setVisible(false);
353 This method initializes Usage type, Package type and Arch type
356 private void initFrame() {
357 for (int index
= 0; index
< vPackage
.size(); index
++) {
358 jComboBoxPackageName
.addItem(vPackage
.elementAt(index
).getName());
363 Data validation for all fields before add current item to Vector
365 @retval true - All datas are valid
366 @retval false - At least one data is invalid
369 public boolean checkAdd() {
371 // Check if all fields have correct data types
377 // if (!isEmpty(this.jTextFieldPackageGuid.getText())) {
378 // if (!DataValidation.isGuid(this.jTextFieldPackageGuid.getText())) {
379 // Log.err("Incorrect data type for Package Guid");
385 // Check PackageVersion
387 if (!isEmpty(this.jTextFieldPackageVersion
.getText())) {
388 if (!DataValidation
.isVersion(this.jTextFieldPackageVersion
.getText())) {
389 Log
.err("Incorrect data type for Package Version");
397 if (!isEmpty(this.jTextFieldFeatureFlag
.getText())) {
398 if (!DataValidation
.isFeatureFlag(this.jTextFieldFeatureFlag
.getText())) {
399 Log
.err("Incorrect data type for Feature Flag");
408 private PackageDependenciesIdentification
getCurrentPackageDependencies() {
409 String arg0
= this.jComboBoxPackageName
.getSelectedItem().toString();
410 String arg1
= this.jTextFieldPackageVersion
.getText();
411 String arg2
= this.jTextFieldPackageGuid
.getText();
413 String arg3
= this.jTextFieldFeatureFlag
.getText();
414 Vector
<String
> arg4
= this.jArchCheckBox
.getSelectedItemsVector();
415 pdid
= new PackageDependenciesIdentification(arg0
, arg1
, arg2
, arg3
, arg4
);
420 * @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent)
422 * Reflesh the frame when selected item changed
425 public void itemStateChanged(ItemEvent arg0
) {
426 if (arg0
.getSource() == this.jComboBoxPackageName
&& arg0
.getStateChange() == ItemEvent
.SELECTED
) {
427 for (int index
= 0; index
< vPackage
.size(); index
++) {
428 if (this.jComboBoxPackageName
.getSelectedItem().toString().equals(vPackage
.get(index
).getName())) {
429 this.jTextFieldPackageGuid
.setText(vPackage
.get(index
).getGuid());
435 public PackageDependenciesIdentification
getPdid() {
439 public void setPdid(PackageDependenciesIdentification pdid
) {