]> git.proxmox.com Git - mirror_edk2.git/blob - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/far/createui/CreateStepFour.java
1. Support to Create/Update/Delete/Install far file
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / far / createui / CreateStepFour.java
1 /** @file
2
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
8
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.
11
12 **/
13
14 package org.tianocore.frameworkwizard.far.createui;
15
16 import java.awt.event.MouseEvent;
17 import java.awt.event.MouseListener;
18 import java.io.File;
19 import java.util.ArrayList;
20 import java.util.Iterator;
21 import java.util.List;
22
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;
30
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;
42
43 public class CreateStepFour extends IDialog implements MouseListener {
44
45 /**
46 *
47 */
48 private static final long serialVersionUID = -7397213364965470902L;
49
50 private JPanel jContentPane = null;
51
52 private JTextArea jTextAreaInstruction = null;
53
54 private JLabel jLabel = null;
55
56 private JLabel jLabel2 = null;
57
58 private JTextField jTextFieldSaveToFile = null;
59
60 private JButton jButtonBrowser = null;
61
62 // private JScrollPane jScrollPane = null;
63 private JButton jButtonCancel = null;
64
65 private JButton jButtonFinish = null;
66
67 private JButton jButtonPrevious = null;
68
69 private PartialTableModel model = null;
70
71 private CreateStepThree stepThree = null;
72
73 // private JTable jTable = null;
74 public CreateStepFour(IDialog iDialog, boolean modal, CreateStepThree stepThree) {
75 this(iDialog, modal);
76 this.stepThree = stepThree;
77 }
78
79 /**
80 * This method initializes jTextArea
81 *
82 * @return javax.swing.JTextArea
83 */
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);
90 }
91 return jTextAreaInstruction;
92 }
93
94 /**
95 * This method initializes jTextField1
96 *
97 * @return javax.swing.JTextField
98 */
99 private JTextField getJTextField1() {
100 if (jTextFieldSaveToFile == null) {
101 jTextFieldSaveToFile = new JTextField();
102 jTextFieldSaveToFile.setBounds(new java.awt.Rectangle(139, 70, 400, 20));
103 }
104 return jTextFieldSaveToFile;
105 }
106
107 /**
108 * This method initializes jButtonBrowser
109 *
110 * @return javax.swing.JButton
111 */
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);
118 }
119 return jButtonBrowser;
120 }
121
122 /**
123 * This method initializes jScrollPane
124 *
125 * @return javax.swing.JScrollPane
126 */
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());
132 // }
133 // return jScrollPane;
134 // }
135 /**
136 * This method initializes jButtonCancel
137 *
138 * @return javax.swing.JButton
139 */
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);
146 }
147 return jButtonCancel;
148 }
149
150 /**
151 * This method initializes jButtonFinish
152 *
153 * @return javax.swing.JButton
154 */
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);
161 }
162 return jButtonFinish;
163 }
164
165 /**
166 * This method initializes jButtonPrevious
167 *
168 * @return javax.swing.JButton
169 */
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);
176 }
177 return jButtonPrevious;
178 }
179
180 /**
181 * This is the default constructor
182 */
183 public CreateStepFour(IDialog iDialog, boolean modal) {
184 super(iDialog, modal);
185 initialize();
186 }
187
188 /**
189 * This method initializes this
190 *
191 * @return void
192 */
193 private void initialize() {
194 this.setSize(700, 400);
195 this.setContentPane(getJContentPane());
196 this.setTitle("Create Framework Archive(FAR) - Step 4: Summary");
197 this.centerWindow();
198 }
199
200 /**
201 * This method initializes jContentPane
202 *
203 * @return javax.swing.JPanel
204 */
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);
225 }
226 return jContentPane;
227 }
228
229 public void mouseClicked(MouseEvent e) {
230 if (e.getSource() == jButtonCancel) {
231 this.setVisible(false);
232 } else if (e.getSource() == jButtonFinish) {
233 //
234 // Add some logic process here
235 // Guid Check, File Check etc.
236 //
237 if (this.jTextFieldSaveToFile.getText() == null) {
238 Log.err("Please input the Far name!");
239 }
240 try {
241 //
242 // Create an output stream for JAR
243 //
244
245 Far far = new Far(new File(this.jTextFieldSaveToFile.getText()));
246
247 far.creatFar(this.getPreviousStep().getPreviousStep().getSelectedPackages(),
248 this.getPreviousStep().getPreviousStep().getSelectedPlatforms(), this.getPreviousStep()
249 .getFileFilter(),
250 this.getPreviousStep().getPreviousStep().getPreviousStep().getFarHeader());
251 } catch (Exception exp) {
252 Log.err("Create error! ");
253 return;
254 }
255 getPreviousStep().getPreviousStep().getPreviousStep().returnType = DataType.RETURN_TYPE_OK;
256 getPreviousStep().getPreviousStep().dispose();
257 getPreviousStep().dispose();
258 this.setVisible(false);
259 this.dispose();
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()));
268
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));
273 }
274 }
275 }
276
277 public void mousePressed(MouseEvent e) {
278 // TODO Auto-generated method stub
279
280 }
281
282 public void mouseReleased(MouseEvent e) {
283 // TODO Auto-generated method stub
284
285 }
286
287 public void mouseEntered(MouseEvent e) {
288 // TODO Auto-generated method stub
289
290 }
291
292 public void mouseExited(MouseEvent e) {
293 // TODO Auto-generated method stub
294
295 }
296
297 public CreateStepThree getPreviousStep() {
298 return stepThree;
299 }
300
301 /**
302 * This method initializes jTable
303 *
304 * @return javax.swing.JTable
305 */
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");
316 //
317 // jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
318 // }
319 // if (this.stepThree != null) {
320 // prepareTable();
321 // }
322 // return jTable;
323 // }
324 public void prepareTable() {
325 model.setRowCount(0);
326
327 List<PackageIdentification> packageList = new ArrayList<PackageIdentification>();
328 //
329 // Change here to get packages and platforms from FAR
330 //
331 List<PackageIdentification> selectedPackages = getPreviousStep().getPreviousStep().getSelectedPackages();
332 PackageQueryInterface pq = new PackageQuery();
333
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);
339 }
340
341 packageList = AggregationOperation.minus(packageList, selectedPackages);
342
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();
350 model.addRow(str);
351 }
352 }
353 }
354
355 class PartialTableModel extends DefaultTableModel {
356 /**
357 *
358 */
359 private static final long serialVersionUID = 1L;
360
361 public boolean isCellEditable(int row, int col) {
362 switch (col) {
363 default:
364 return false;
365 }
366 }
367 }