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
;
17 import java
.awt
.Dimension
;
18 import java
.awt
.event
.ActionEvent
;
19 import java
.awt
.event
.ComponentEvent
;
20 import java
.awt
.event
.MouseEvent
;
21 import java
.util
.Vector
;
23 import javax
.swing
.JButton
;
24 import javax
.swing
.JPanel
;
25 import javax
.swing
.JScrollPane
;
26 import javax
.swing
.JTable
;
27 import javax
.swing
.ListSelectionModel
;
28 import javax
.swing
.event
.ListSelectionEvent
;
30 import org
.tianocore
.ModuleSurfaceAreaDocument
.ModuleSurfaceArea
;
31 import org
.tianocore
.PackageDependenciesDocument
.PackageDependencies
;
32 import org
.tianocore
.PackageDependenciesDocument
.PackageDependencies
.Package
;
33 import org
.tianocore
.frameworkwizard
.common
.DataType
;
34 import org
.tianocore
.frameworkwizard
.common
.IDefaultTableModel
;
35 import org
.tianocore
.frameworkwizard
.common
.Log
;
36 import org
.tianocore
.frameworkwizard
.common
.Tools
;
37 import org
.tianocore
.frameworkwizard
.common
.Identifications
.OpeningModuleType
;
38 import org
.tianocore
.frameworkwizard
.common
.ui
.IFrame
;
39 import org
.tianocore
.frameworkwizard
.common
.ui
.IInternalFrame
;
40 import org
.tianocore
.frameworkwizard
.module
.Identifications
.PackageDependencies
.PackageDependenciesIdentification
;
41 import org
.tianocore
.frameworkwizard
.module
.Identifications
.PackageDependencies
.PackageDependenciesVector
;
42 import org
.tianocore
.frameworkwizard
.module
.ui
.dialog
.PackageDepDlg
;
43 import org
.tianocore
.frameworkwizard
.packaging
.PackageIdentification
;
44 import org
.tianocore
.frameworkwizard
.workspace
.WorkspaceTools
;
47 The class is used to create, update Include of MSA/MBD file
48 It extends IInternalFrame
53 public class ModulePackageDependencies
extends IInternalFrame
{
56 /// Define class Serial Version UID
58 private static final long serialVersionUID
= 3465193035145152131L;
61 //Define class members
63 private JPanel jContentPane
= null;
65 private JButton jButtonAdd
= null;
67 private JButton jButtonRemove
= null;
69 private JButton jButtonUpdate
= null;
71 private JScrollPane jScrollPane
= null;
73 private JScrollPane jScrollPaneTable
= null;
75 private JTable jTable
= null;
80 private OpeningModuleType omt
= null;
82 private ModuleSurfaceArea msa
= null;
84 private PackageDependencies pd
= null;
86 private PackageDependenciesIdentification pdid
= null;
88 private PackageDependenciesVector vid
= new PackageDependenciesVector();
90 private WorkspaceTools wt
= new WorkspaceTools();
92 private Vector
<PackageIdentification
> vPackage
= wt
.getAllPackages();
94 private IDefaultTableModel model
= null;
96 private int selectedRow
= -1;
98 private IFrame parentFrame
= null;
101 This method initializes jButtonAdd
103 @return javax.swing.JButton jButtonAdd
106 private JButton
getJButtonAdd() {
107 if (jButtonAdd
== null) {
108 jButtonAdd
= new JButton();
109 jButtonAdd
.setBounds(new java
.awt
.Rectangle(230, 445, 90, 20));
110 jButtonAdd
.setText("Add");
111 jButtonAdd
.addActionListener(this);
112 jButtonAdd
.setPreferredSize(new java
.awt
.Dimension(90, 20));
118 This method initializes jButtonRemove
120 @return javax.swing.JButton jButtonRemove
123 private JButton
getJButtonRemove() {
124 if (jButtonRemove
== null) {
125 jButtonRemove
= new JButton();
126 jButtonRemove
.setBounds(new java
.awt
.Rectangle(400, 445, 90, 20));
127 jButtonRemove
.setText("Remove");
128 jButtonRemove
.addActionListener(this);
129 jButtonRemove
.setPreferredSize(new java
.awt
.Dimension(90, 20));
131 return jButtonRemove
;
135 This method initializes jButtonUpdate
137 @return javax.swing.JButton jButtonUpdate
140 private JButton
getJButtonUpdate() {
141 if (jButtonUpdate
== null) {
142 jButtonUpdate
= new JButton();
143 jButtonUpdate
.setBounds(new java
.awt
.Rectangle(315, 445, 90, 20));
144 jButtonUpdate
.setPreferredSize(new java
.awt
.Dimension(90, 20));
145 jButtonUpdate
.setText("Edit");
146 jButtonUpdate
.addActionListener(this);
148 return jButtonUpdate
;
152 This method initializes jScrollPane
154 @return javax.swing.JScrollPane
156 private JScrollPane
getJScrollPane() {
157 if (jScrollPane
== null) {
158 jScrollPane
= new JScrollPane();
159 jScrollPane
.setViewportView(getJContentPane());
165 This method initializes jScrollPaneTable
167 @return javax.swing.JScrollPane
169 private JScrollPane
getJScrollPaneTable() {
170 if (jScrollPaneTable
== null) {
171 jScrollPaneTable
= new JScrollPane();
172 jScrollPaneTable
.setBounds(new java
.awt
.Rectangle(15, 10, 470, 420));
173 jScrollPaneTable
.setPreferredSize(new Dimension(470, 420));
174 jScrollPaneTable
.setViewportView(getJTable());
176 return jScrollPaneTable
;
180 This method initializes jTable
182 @return javax.swing.JTable
184 private JTable
getJTable() {
185 if (jTable
== null) {
186 jTable
= new JTable();
187 model
= new IDefaultTableModel();
188 jTable
= new JTable(model
);
189 jTable
.setRowHeight(20);
191 model
.addColumn("Package Name");
192 model
.addColumn("Package Version");
194 jTable
.setSelectionMode(ListSelectionModel
.SINGLE_SELECTION
);
195 jTable
.getSelectionModel().addListSelectionListener(this);
196 jTable
.getModel().addTableModelListener(this);
197 jTable
.addMouseListener(this);
202 public static void main(String
[] args
) {
207 This is the default constructor
210 public ModulePackageDependencies() {
213 this.setVisible(true);
217 This is the override edit constructor
222 public ModulePackageDependencies(OpeningModuleType inOmt
, IFrame iFrame
) {
225 this.msa
= omt
.getXmlMsa();
226 this.parentFrame
= iFrame
;
227 init(msa
.getPackageDependencies());
228 this.setVisible(true);
232 This method initializes this
235 private void init() {
236 this.setSize(500, 515);
237 this.setContentPane(getJScrollPane());
238 this.setTitle("Package Dependencies");
242 This method initializes this
243 Fill values to all fields if these values are not empty
245 @param inPackageDependencies
248 private void init(PackageDependencies inPackageDependencies
) {
250 this.pd
= inPackageDependencies
;
252 if (this.pd
!= null) {
253 if (this.pd
.getPackageList().size() > 0) {
254 for (int index
= 0; index
< this.pd
.getPackageList().size(); index
++) {
256 String arg1
= pd
.getPackageList().get(index
).getPackageVersion();
257 String arg2
= pd
.getPackageList().get(index
).getPackageGuid();
259 // If no guid, skip current item
264 for (int indexJ
= 0; indexJ
< this.vPackage
.size(); indexJ
++) {
265 if (vPackage
.get(indexJ
).getGuid().equals(arg2
)) {
266 arg0
= vPackage
.get(indexJ
).getName();
269 String arg3
= pd
.getPackageList().get(index
).getFeatureFlag();
270 Vector
<String
> arg4
= Tools
.convertListToVector(pd
.getPackageList().get(index
).getSupArchList());
271 pdid
= new PackageDependenciesIdentification(arg0
, arg1
, arg2
, arg3
, arg4
);
272 vid
.addPackageDependencies(pdid
);
280 This method initializes jContentPane
282 @return javax.swing.JPanel jContentPane
285 private JPanel
getJContentPane() {
286 if (jContentPane
== null) {
287 jContentPane
= new JPanel();
288 jContentPane
.setLayout(null);
289 jContentPane
.setPreferredSize(new java
.awt
.Dimension(490, 490));
291 jContentPane
.add(getJButtonAdd(), null);
292 jContentPane
.add(getJButtonRemove(), null);
293 jContentPane
.add(getJButtonUpdate(), null);
294 jContentPane
.add(getJScrollPaneTable(), null);
299 private void showEdit(int index
) {
300 PackageDepDlg pdd
= new PackageDepDlg(vid
.getPackageDependencies(index
), this.parentFrame
, omt
.getId());
301 int result
= pdd
.showDialog();
302 if (result
== DataType
.RETURN_TYPE_OK
) {
304 this.vid
.addPackageDependencies(pdd
.getPdid());
306 this.vid
.setPackageDependencies(pdd
.getPdid(), index
);
312 if (result
== DataType
.RETURN_TYPE_CANCEL
) {
321 private void clearAll() {
323 for (int index
= model
.getRowCount() - 1; index
>= 0; index
--) {
324 model
.removeRow(index
);
330 Read content of vector and put then into table
333 private void showTable() {
336 if (vid
.size() > 0) {
337 for (int index
= 0; index
< vid
.size(); index
++) {
338 model
.addRow(vid
.toStringVector(index
));
341 this.jTable
.repaint();
342 this.jTable
.updateUI();
343 //this.jScrollPane.setViewportView(this.jTable);
347 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
349 * Override actionPerformed to listen all actions
352 public void actionPerformed(ActionEvent arg0
) {
353 if (arg0
.getSource() == jButtonAdd
) {
356 if (arg0
.getSource() == jButtonUpdate
) {
357 if (this.selectedRow
< 0) {
358 Log
.wrn("Update Package Dependencies", "Please select one record first.");
361 showEdit(selectedRow
);
364 if (arg0
.getSource() == jButtonRemove
) {
365 if (jTable
.isEditing()) {
366 jTable
.getCellEditor().stopCellEditing();
368 if (selectedRow
> -1) {
369 this.model
.removeRow(selectedRow
);
370 this.vid
.removePackageDependencies(selectedRow
);
378 Save all components of Includes
379 if exists includes, set the value directly
380 if not exists includes, new an instance first
388 int count
= this.vid
.size();
390 this.pd
= PackageDependencies
.Factory
.newInstance();
392 for (int index
= 0; index
< count
; index
++) {
393 Package p
= Package
.Factory
.newInstance();
395 if (!isEmpty(vid
.getPackageDependencies(index
).getVersion())) {
396 p
.setPackageVersion(vid
.getPackageDependencies(index
).getVersion());
398 if (!isEmpty(vid
.getPackageDependencies(index
).getGuid())) {
399 p
.setPackageGuid(vid
.getPackageDependencies(index
).getGuid());
401 if (!isEmpty(vid
.getPackageDependencies(index
).getFeatureFlag())) {
402 p
.setFeatureFlag(vid
.getPackageDependencies(index
).getFeatureFlag());
404 if (vid
.getPackageDependencies(index
).getSupArchList() != null
405 && vid
.getPackageDependencies(index
).getSupArchList().size() > 0) {
406 p
.setSupArchList(vid
.getPackageDependencies(index
).getSupArchList());
409 this.pd
.addNewPackage();
410 this.pd
.setPackageArray(index
, p
);
413 this.msa
.setPackageDependencies(pd
);
414 this.omt
.setSaved(false);
415 } catch (Exception e
) {
416 Log
.wrn("Update Package Dependencies", e
.getMessage());
417 Log
.err("Update Package Dependencies", e
.getMessage());
422 * @see javax.swing.event.ListSelectionListener#valueChanged(javax.swing.event.ListSelectionEvent)
425 public void valueChanged(ListSelectionEvent arg0
) {
426 if (arg0
.getValueIsAdjusting()) {
429 ListSelectionModel lsm
= (ListSelectionModel
) arg0
.getSource();
430 if (lsm
.isSelectionEmpty()) {
433 selectedRow
= lsm
.getMinSelectionIndex();
438 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
441 public void mouseClicked(MouseEvent arg0
) {
442 if (arg0
.getClickCount() == 2) {
443 if (this.selectedRow
< 0) {
446 showEdit(selectedRow
);
452 * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)
454 * Override componentResized to resize all components when frame's size is changed
456 public void componentResized(ComponentEvent arg0
) {
457 int intCurrentWidth
= this.getJContentPane().getWidth();
458 int intCurrentHeight
= this.getJContentPane().getHeight();
459 int intPreferredWidth
= this.getJContentPane().getPreferredSize().width
;
460 int intPreferredHeight
= this.getJContentPane().getPreferredSize().height
;
462 Tools
.resizeComponent(this.jScrollPaneTable
, intCurrentWidth
, intCurrentHeight
, intPreferredWidth
,
464 Tools
.relocateComponent(this.jButtonAdd
, intCurrentWidth
, intCurrentHeight
, intPreferredWidth
,
465 intPreferredHeight
, DataType
.SPACE_TO_RIGHT_FOR_ADD_BUTTON
,
466 DataType
.SPACE_TO_BOTTOM_FOR_ADD_BUTTON
);
467 Tools
.relocateComponent(this.jButtonRemove
, intCurrentWidth
, intCurrentHeight
, intPreferredWidth
,
468 intPreferredHeight
, DataType
.SPACE_TO_RIGHT_FOR_REMOVE_BUTTON
,
469 DataType
.SPACE_TO_BOTTOM_FOR_REMOVE_BUTTON
);
470 Tools
.relocateComponent(this.jButtonUpdate
, intCurrentWidth
, intCurrentHeight
, intPreferredWidth
,
471 intPreferredHeight
, DataType
.SPACE_TO_RIGHT_FOR_UPDATE_BUTTON
,
472 DataType
.SPACE_TO_BOTTOM_FOR_UPDATE_BUTTON
);