3 Copyright (c) 2006, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14 package org
.tianocore
.frameworkwizard
.far
.createui
;
16 import java
.awt
.event
.MouseEvent
;
17 import java
.awt
.event
.MouseListener
;
19 import java
.util
.ArrayList
;
20 import java
.util
.Iterator
;
21 import java
.util
.List
;
23 import javax
.swing
.JButton
;
24 import javax
.swing
.JFileChooser
;
25 import javax
.swing
.JLabel
;
26 import javax
.swing
.JPanel
;
27 import javax
.swing
.JTextArea
;
28 import javax
.swing
.JTextField
;
29 import javax
.swing
.table
.DefaultTableModel
;
31 import org
.tianocore
.frameworkwizard
.common
.DataType
;
32 import org
.tianocore
.frameworkwizard
.common
.IFileFilter
;
33 import org
.tianocore
.frameworkwizard
.common
.Log
;
34 import org
.tianocore
.frameworkwizard
.common
.Tools
;
35 import org
.tianocore
.frameworkwizard
.common
.ui
.IDialog
;
36 import org
.tianocore
.frameworkwizard
.far
.AggregationOperation
;
37 import org
.tianocore
.frameworkwizard
.far
.Far
;
38 import org
.tianocore
.frameworkwizard
.far
.PackageQuery
;
39 import org
.tianocore
.frameworkwizard
.far
.PackageQueryInterface
;
40 import org
.tianocore
.frameworkwizard
.packaging
.PackageIdentification
;
41 import org
.tianocore
.frameworkwizard
.workspace
.Workspace
;
43 public class CreateStepFour
extends IDialog
implements MouseListener
{
48 private static final long serialVersionUID
= -7397213364965470902L;
50 private JPanel jContentPane
= null;
52 private JTextArea jTextAreaInstruction
= null;
54 private JLabel jLabel
= null;
56 private JLabel jLabel2
= null;
58 private JTextField jTextFieldSaveToFile
= null;
60 private JButton jButtonBrowser
= null;
62 // private JScrollPane jScrollPane = null;
63 private JButton jButtonCancel
= null;
65 private JButton jButtonFinish
= null;
67 private JButton jButtonPrevious
= null;
69 private PartialTableModel model
= null;
71 private CreateStepThree stepThree
= null;
73 // private JTable jTable = null;
74 public CreateStepFour(IDialog iDialog
, boolean modal
, CreateStepThree stepThree
) {
76 this.stepThree
= stepThree
;
80 * This method initializes jTextArea
82 * @return javax.swing.JTextArea
84 private JTextArea
getJTextArea() {
85 if (jTextAreaInstruction
== null) {
86 jTextAreaInstruction
= new JTextArea();
87 jTextAreaInstruction
.setBounds(new java
.awt
.Rectangle(30, 7, 642, 50));
88 jTextAreaInstruction
.setText("Step 4: Choose a file \n");
89 jTextAreaInstruction
.setEditable(false);
91 return jTextAreaInstruction
;
95 * This method initializes jTextField1
97 * @return javax.swing.JTextField
99 private JTextField
getJTextField1() {
100 if (jTextFieldSaveToFile
== null) {
101 jTextFieldSaveToFile
= new JTextField();
102 jTextFieldSaveToFile
.setBounds(new java
.awt
.Rectangle(139, 70, 400, 20));
104 return jTextFieldSaveToFile
;
108 * This method initializes jButtonBrowser
110 * @return javax.swing.JButton
112 private JButton
getJButtonBrower() {
113 if (jButtonBrowser
== null) {
114 jButtonBrowser
= new JButton();
115 jButtonBrowser
.setBounds(new java
.awt
.Rectangle(542, 70, 97, 20));
116 jButtonBrowser
.setText("Browser...");
117 jButtonBrowser
.addMouseListener(this);
119 return jButtonBrowser
;
123 * This method initializes jScrollPane
125 * @return javax.swing.JScrollPane
127 // private JScrollPane getJScrollPane() {
128 // if (jScrollPane == null) {
129 // jScrollPane = new JScrollPane();
130 // jScrollPane.setBounds(new java.awt.Rectangle(139,85,500,100));
131 // jScrollPane.setViewportView(getJTable());
133 // return jScrollPane;
136 * This method initializes jButtonCancel
138 * @return javax.swing.JButton
140 private JButton
getJButtonCancel() {
141 if (jButtonCancel
== null) {
142 jButtonCancel
= new JButton();
143 jButtonCancel
.setBounds(new java
.awt
.Rectangle(570, 330, 90, 20));
144 jButtonCancel
.setText("Cancel");
145 jButtonCancel
.addMouseListener(this);
147 return jButtonCancel
;
151 * This method initializes jButtonFinish
153 * @return javax.swing.JButton
155 private JButton
getJButtonFinish() {
156 if (jButtonFinish
== null) {
157 jButtonFinish
= new JButton();
158 jButtonFinish
.setBounds(new java
.awt
.Rectangle(470, 330, 90, 20));
159 jButtonFinish
.setText("Finish");
160 jButtonFinish
.addMouseListener(this);
162 return jButtonFinish
;
166 * This method initializes jButtonPrevious
168 * @return javax.swing.JButton
170 private JButton
getJButtonPrevious() {
171 if (jButtonPrevious
== null) {
172 jButtonPrevious
= new JButton();
173 jButtonPrevious
.setBounds(new java
.awt
.Rectangle(370, 330, 90, 20));
174 jButtonPrevious
.setText("Previous");
175 jButtonPrevious
.addMouseListener(this);
177 return jButtonPrevious
;
181 * This is the default constructor
183 public CreateStepFour(IDialog iDialog
, boolean modal
) {
184 super(iDialog
, modal
);
189 * This method initializes this
193 private void initialize() {
194 this.setSize(700, 400);
195 this.setContentPane(getJContentPane());
196 this.setTitle("Create Framework Archive(FAR) - Step 4: Summary");
201 * This method initializes jContentPane
203 * @return javax.swing.JPanel
205 private JPanel
getJContentPane() {
206 if (jContentPane
== null) {
207 jLabel2
= new JLabel();
208 jLabel2
.setBounds(new java
.awt
.Rectangle(30, 70, 220, 18));
209 jLabel2
.setText("Select File to Save: ");
210 jLabel
= new JLabel();
211 jLabel
.setBounds(new java
.awt
.Rectangle(30, 64, 320, 20));
212 jLabel
.setText("This FAR will depend on following packages: ");
213 jLabel
.setVisible(false);
214 jContentPane
= new JPanel();
215 jContentPane
.setLayout(null);
216 jContentPane
.add(getJTextArea(), null);
217 jContentPane
.add(jLabel
, null);
218 // jContentPane.add(getJScrollPane(), null);
219 jContentPane
.add(getJButtonCancel(), null);
220 jContentPane
.add(getJButtonFinish(), null);
221 jContentPane
.add(getJButtonPrevious(), null);
222 jContentPane
.add(jLabel2
, null);
223 jContentPane
.add(getJTextField1(), null);
224 jContentPane
.add(getJButtonBrower(), null);
229 public void mouseClicked(MouseEvent e
) {
230 if (e
.getSource() == jButtonCancel
) {
231 this.setVisible(false);
232 } else if (e
.getSource() == jButtonFinish
) {
234 // Add some logic process here
235 // Guid Check, File Check etc.
237 if (this.jTextFieldSaveToFile
.getText() == null) {
238 Log
.err("Please input the Far name!");
242 // Create an output stream for JAR
245 Far far
= new Far(new File(this.jTextFieldSaveToFile
.getText()));
247 far
.creatFar(this.getPreviousStep().getPreviousStep().getSelectedPackages(),
248 this.getPreviousStep().getPreviousStep().getSelectedPlatforms(), this.getPreviousStep()
250 this.getPreviousStep().getPreviousStep().getPreviousStep().getFarHeader());
251 } catch (Exception exp
) {
252 Log
.err("Create error! ");
255 getPreviousStep().getPreviousStep().getPreviousStep().returnType
= DataType
.RETURN_TYPE_OK
;
256 getPreviousStep().getPreviousStep().dispose();
257 getPreviousStep().dispose();
258 this.setVisible(false);
260 } else if (e
.getSource() == jButtonPrevious
) {
261 this.setVisible(false);
262 stepThree
.setVisible(true);
263 } else if (e
.getSource() == jButtonBrowser
) {
264 JFileChooser fc
= new JFileChooser();
265 fc
.setAcceptAllFileFilterUsed(false);
266 fc
.addChoosableFileFilter(new IFileFilter(DataType
.FAR_SURFACE_AREA_EXT
));
267 fc
.setCurrentDirectory(new File(Workspace
.getCurrentWorkspace()));
269 int result
= fc
.showSaveDialog(new JPanel());
270 if (result
== JFileChooser
.APPROVE_OPTION
) {
271 this.jTextFieldSaveToFile
.setText(Tools
.addPathExt(fc
.getSelectedFile().getPath(),
272 DataType
.RETURN_TYPE_FAR_SURFACE_AREA
));
277 public void mousePressed(MouseEvent e
) {
278 // TODO Auto-generated method stub
282 public void mouseReleased(MouseEvent e
) {
283 // TODO Auto-generated method stub
287 public void mouseEntered(MouseEvent e
) {
288 // TODO Auto-generated method stub
292 public void mouseExited(MouseEvent e
) {
293 // TODO Auto-generated method stub
297 public CreateStepThree
getPreviousStep() {
302 * This method initializes jTable
304 * @return javax.swing.JTable
306 // private JTable getJTable() {
307 // if (jTable == null) {
308 // jTable = new JTable();
309 // model = new PartialTableModel();
310 // jTable = new JTable(model);
311 // jTable.setRowHeight(20);
312 // jTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
313 // model.addColumn("GUID");
314 // model.addColumn("Version");
315 // model.addColumn("Name");
317 // jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
319 // if (this.stepThree != null) {
324 public void prepareTable() {
325 model
.setRowCount(0);
327 List
<PackageIdentification
> packageList
= new ArrayList
<PackageIdentification
>();
329 // Change here to get packages and platforms from FAR
331 List
<PackageIdentification
> selectedPackages
= getPreviousStep().getPreviousStep().getSelectedPackages();
332 PackageQueryInterface pq
= new PackageQuery();
334 Iterator
<PackageIdentification
> iter
= selectedPackages
.iterator();
335 while (iter
.hasNext()) {
336 PackageIdentification item
= iter
.next();
337 List
<PackageIdentification
> list
= pq
.getPackageDependencies(item
.getSpdFile());
338 packageList
= AggregationOperation
.union(list
, packageList
);
341 packageList
= AggregationOperation
.minus(packageList
, selectedPackages
);
343 iter
= packageList
.iterator();
344 while (iter
.hasNext()) {
345 String
[] str
= new String
[3];
346 PackageIdentification item
= iter
.next();
347 str
[2] = item
.getName();
348 str
[1] = item
.getVersion();
349 str
[0] = item
.getGuid();
355 class PartialTableModel
extends DefaultTableModel
{
359 private static final long serialVersionUID
= 1L;
361 public boolean isCellEditable(int row
, int col
) {