]> git.proxmox.com Git - mirror_edk2.git/blame - 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
CommitLineData
5a24e806 1/** @file\r
2\r
3 Copyright (c) 2006, Intel Corporation\r
4 All rights reserved. This program and the accompanying materials\r
5 are licensed and made available under the terms and conditions of the BSD License\r
6 which accompanies this distribution. The full text of the license may be found at\r
7 http://opensource.org/licenses/bsd-license.php\r
8 \r
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
11 \r
12 **/\r
13\r
14package org.tianocore.frameworkwizard.far.createui;\r
15\r
16import java.awt.event.MouseEvent;\r
17import java.awt.event.MouseListener;\r
18import java.io.File;\r
19import java.util.ArrayList;\r
20import java.util.Iterator;\r
21import java.util.List;\r
22\r
23import javax.swing.JButton;\r
24import javax.swing.JFileChooser;\r
25import javax.swing.JLabel;\r
26import javax.swing.JPanel;\r
27import javax.swing.JTextArea;\r
28import javax.swing.JTextField;\r
29import javax.swing.table.DefaultTableModel;\r
30\r
31import org.tianocore.frameworkwizard.common.DataType;\r
32import org.tianocore.frameworkwizard.common.IFileFilter;\r
33import org.tianocore.frameworkwizard.common.Log;\r
34import org.tianocore.frameworkwizard.common.Tools;\r
35import org.tianocore.frameworkwizard.common.ui.IDialog;\r
36import org.tianocore.frameworkwizard.far.AggregationOperation;\r
37import org.tianocore.frameworkwizard.far.Far;\r
38import org.tianocore.frameworkwizard.far.PackageQuery;\r
39import org.tianocore.frameworkwizard.far.PackageQueryInterface;\r
40import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
41import org.tianocore.frameworkwizard.workspace.Workspace;\r
42\r
43public class CreateStepFour extends IDialog implements MouseListener {\r
44\r
45 /**\r
46 * \r
47 */\r
48 private static final long serialVersionUID = -7397213364965470902L;\r
49\r
50 private JPanel jContentPane = null;\r
51\r
52 private JTextArea jTextAreaInstruction = null;\r
53\r
54 private JLabel jLabel = null;\r
55\r
56 private JLabel jLabel2 = null;\r
57\r
58 private JTextField jTextFieldSaveToFile = null;\r
59\r
60 private JButton jButtonBrowser = null;\r
61\r
62 // private JScrollPane jScrollPane = null;\r
63 private JButton jButtonCancel = null;\r
64\r
65 private JButton jButtonFinish = null;\r
66\r
67 private JButton jButtonPrevious = null;\r
68\r
69 private PartialTableModel model = null;\r
70\r
71 private CreateStepThree stepThree = null;\r
72\r
73 // private JTable jTable = null;\r
74 public CreateStepFour(IDialog iDialog, boolean modal, CreateStepThree stepThree) {\r
75 this(iDialog, modal);\r
76 this.stepThree = stepThree;\r
77 }\r
78\r
79 /**\r
80 * This method initializes jTextArea \r
81 * \r
82 * @return javax.swing.JTextArea \r
83 */\r
84 private JTextArea getJTextArea() {\r
85 if (jTextAreaInstruction == null) {\r
86 jTextAreaInstruction = new JTextArea();\r
87 jTextAreaInstruction.setBounds(new java.awt.Rectangle(30, 7, 642, 50));\r
88 jTextAreaInstruction.setText("Step 4: Choose a file \n");\r
89 jTextAreaInstruction.setEditable(false);\r
90 }\r
91 return jTextAreaInstruction;\r
92 }\r
93\r
94 /**\r
95 * This method initializes jTextField1 \r
96 * \r
97 * @return javax.swing.JTextField \r
98 */\r
99 private JTextField getJTextField1() {\r
100 if (jTextFieldSaveToFile == null) {\r
101 jTextFieldSaveToFile = new JTextField();\r
102 jTextFieldSaveToFile.setBounds(new java.awt.Rectangle(139, 70, 400, 20));\r
103 }\r
104 return jTextFieldSaveToFile;\r
105 }\r
106\r
107 /**\r
108 * This method initializes jButtonBrowser \r
109 * \r
110 * @return javax.swing.JButton \r
111 */\r
112 private JButton getJButtonBrower() {\r
113 if (jButtonBrowser == null) {\r
114 jButtonBrowser = new JButton();\r
115 jButtonBrowser.setBounds(new java.awt.Rectangle(542, 70, 97, 20));\r
116 jButtonBrowser.setText("Browser...");\r
117 jButtonBrowser.addMouseListener(this);\r
118 }\r
119 return jButtonBrowser;\r
120 }\r
121\r
122 /**\r
123 * This method initializes jScrollPane \r
124 * \r
125 * @return javax.swing.JScrollPane \r
126 */\r
127 // private JScrollPane getJScrollPane() {\r
128 // if (jScrollPane == null) {\r
129 // jScrollPane = new JScrollPane();\r
130 // jScrollPane.setBounds(new java.awt.Rectangle(139,85,500,100));\r
131 // jScrollPane.setViewportView(getJTable());\r
132 // }\r
133 // return jScrollPane;\r
134 // }\r
135 /**\r
136 * This method initializes jButtonCancel \r
137 * \r
138 * @return javax.swing.JButton \r
139 */\r
140 private JButton getJButtonCancel() {\r
141 if (jButtonCancel == null) {\r
142 jButtonCancel = new JButton();\r
143 jButtonCancel.setBounds(new java.awt.Rectangle(570, 330, 90, 20));\r
144 jButtonCancel.setText("Cancel");\r
145 jButtonCancel.addMouseListener(this);\r
146 }\r
147 return jButtonCancel;\r
148 }\r
149\r
150 /**\r
151 * This method initializes jButtonFinish \r
152 * \r
153 * @return javax.swing.JButton \r
154 */\r
155 private JButton getJButtonFinish() {\r
156 if (jButtonFinish == null) {\r
157 jButtonFinish = new JButton();\r
158 jButtonFinish.setBounds(new java.awt.Rectangle(470, 330, 90, 20));\r
159 jButtonFinish.setText("Finish");\r
160 jButtonFinish.addMouseListener(this);\r
161 }\r
162 return jButtonFinish;\r
163 }\r
164\r
165 /**\r
166 * This method initializes jButtonPrevious \r
167 * \r
168 * @return javax.swing.JButton \r
169 */\r
170 private JButton getJButtonPrevious() {\r
171 if (jButtonPrevious == null) {\r
172 jButtonPrevious = new JButton();\r
173 jButtonPrevious.setBounds(new java.awt.Rectangle(370, 330, 90, 20));\r
174 jButtonPrevious.setText("Previous");\r
175 jButtonPrevious.addMouseListener(this);\r
176 }\r
177 return jButtonPrevious;\r
178 }\r
179\r
180 /**\r
181 * This is the default constructor\r
182 */\r
183 public CreateStepFour(IDialog iDialog, boolean modal) {\r
184 super(iDialog, modal);\r
185 initialize();\r
186 }\r
187\r
188 /**\r
189 * This method initializes this\r
190 * \r
191 * @return void\r
192 */\r
193 private void initialize() {\r
194 this.setSize(700, 400);\r
195 this.setContentPane(getJContentPane());\r
196 this.setTitle("Create Framework Archive(FAR) - Step 4: Summary");\r
197 this.centerWindow();\r
198 }\r
199\r
200 /**\r
201 * This method initializes jContentPane\r
202 * \r
203 * @return javax.swing.JPanel\r
204 */\r
205 private JPanel getJContentPane() {\r
206 if (jContentPane == null) {\r
207 jLabel2 = new JLabel();\r
208 jLabel2.setBounds(new java.awt.Rectangle(30, 70, 220, 18));\r
209 jLabel2.setText("Select File to Save: ");\r
210 jLabel = new JLabel();\r
211 jLabel.setBounds(new java.awt.Rectangle(30, 64, 320, 20));\r
212 jLabel.setText("This FAR will depend on following packages: ");\r
213 jLabel.setVisible(false);\r
214 jContentPane = new JPanel();\r
215 jContentPane.setLayout(null);\r
216 jContentPane.add(getJTextArea(), null);\r
217 jContentPane.add(jLabel, null);\r
218 // jContentPane.add(getJScrollPane(), null);\r
219 jContentPane.add(getJButtonCancel(), null);\r
220 jContentPane.add(getJButtonFinish(), null);\r
221 jContentPane.add(getJButtonPrevious(), null);\r
222 jContentPane.add(jLabel2, null);\r
223 jContentPane.add(getJTextField1(), null);\r
224 jContentPane.add(getJButtonBrower(), null);\r
225 }\r
226 return jContentPane;\r
227 }\r
228\r
229 public void mouseClicked(MouseEvent e) {\r
230 if (e.getSource() == jButtonCancel) {\r
231 this.setVisible(false);\r
232 } else if (e.getSource() == jButtonFinish) {\r
233 //\r
234 // Add some logic process here\r
235 // Guid Check, File Check etc.\r
236 //\r
237 if (this.jTextFieldSaveToFile.getText() == null) {\r
238 Log.err("Please input the Far name!");\r
239 }\r
240 try {\r
241 //\r
242 // Create an output stream for JAR\r
243 //\r
244\r
245 Far far = new Far(new File(this.jTextFieldSaveToFile.getText()));\r
246\r
247 far.creatFar(this.getPreviousStep().getPreviousStep().getSelectedPackages(),\r
248 this.getPreviousStep().getPreviousStep().getSelectedPlatforms(), this.getPreviousStep()\r
249 .getFileFilter(),\r
250 this.getPreviousStep().getPreviousStep().getPreviousStep().getFarHeader());\r
251 } catch (Exception exp) {\r
252 Log.err("Create error! ");\r
253 return;\r
254 }\r
255 getPreviousStep().getPreviousStep().getPreviousStep().returnType = DataType.RETURN_TYPE_OK;\r
256 getPreviousStep().getPreviousStep().dispose();\r
257 getPreviousStep().dispose();\r
258 this.setVisible(false);\r
259 this.dispose();\r
260 } else if (e.getSource() == jButtonPrevious) {\r
261 this.setVisible(false);\r
262 stepThree.setVisible(true);\r
263 } else if (e.getSource() == jButtonBrowser) {\r
264 JFileChooser fc = new JFileChooser();\r
265 fc.setAcceptAllFileFilterUsed(false);\r
266 fc.addChoosableFileFilter(new IFileFilter(DataType.FAR_SURFACE_AREA_EXT));\r
267 fc.setCurrentDirectory(new File(Workspace.getCurrentWorkspace()));\r
268\r
269 int result = fc.showSaveDialog(new JPanel());\r
270 if (result == JFileChooser.APPROVE_OPTION) {\r
271 this.jTextFieldSaveToFile.setText(Tools.addPathExt(fc.getSelectedFile().getPath(),\r
272 DataType.RETURN_TYPE_FAR_SURFACE_AREA));\r
273 }\r
274 }\r
275 }\r
276\r
277 public void mousePressed(MouseEvent e) {\r
278 // TODO Auto-generated method stub\r
279\r
280 }\r
281\r
282 public void mouseReleased(MouseEvent e) {\r
283 // TODO Auto-generated method stub\r
284\r
285 }\r
286\r
287 public void mouseEntered(MouseEvent e) {\r
288 // TODO Auto-generated method stub\r
289\r
290 }\r
291\r
292 public void mouseExited(MouseEvent e) {\r
293 // TODO Auto-generated method stub\r
294\r
295 }\r
296\r
297 public CreateStepThree getPreviousStep() {\r
298 return stepThree;\r
299 }\r
300\r
301 /**\r
302 * This method initializes jTable \r
303 * \r
304 * @return javax.swing.JTable \r
305 */\r
306 // private JTable getJTable() {\r
307 // if (jTable == null) {\r
308 // jTable = new JTable();\r
309 // model = new PartialTableModel();\r
310 // jTable = new JTable(model);\r
311 // jTable.setRowHeight(20);\r
312 // jTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);\r
313 // model.addColumn("GUID");\r
314 // model.addColumn("Version");\r
315 // model.addColumn("Name");\r
316 // \r
317 // jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
318 // }\r
319 // if (this.stepThree != null) {\r
320 // prepareTable();\r
321 // }\r
322 // return jTable;\r
323 // }\r
324 public void prepareTable() {\r
325 model.setRowCount(0);\r
326\r
327 List<PackageIdentification> packageList = new ArrayList<PackageIdentification>();\r
328 //\r
329 // Change here to get packages and platforms from FAR\r
330 //\r
331 List<PackageIdentification> selectedPackages = getPreviousStep().getPreviousStep().getSelectedPackages();\r
332 PackageQueryInterface pq = new PackageQuery();\r
333\r
334 Iterator<PackageIdentification> iter = selectedPackages.iterator();\r
335 while (iter.hasNext()) {\r
336 PackageIdentification item = iter.next();\r
337 List<PackageIdentification> list = pq.getPackageDependencies(item.getSpdFile());\r
338 packageList = AggregationOperation.union(list, packageList);\r
339 }\r
340\r
341 packageList = AggregationOperation.minus(packageList, selectedPackages);\r
342\r
343 iter = packageList.iterator();\r
344 while (iter.hasNext()) {\r
345 String[] str = new String[3];\r
346 PackageIdentification item = iter.next();\r
347 str[2] = item.getName();\r
348 str[1] = item.getVersion();\r
349 str[0] = item.getGuid();\r
350 model.addRow(str);\r
351 }\r
352 }\r
353}\r
354\r
355class PartialTableModel extends DefaultTableModel {\r
356 /**\r
357 * \r
358 */\r
359 private static final long serialVersionUID = 1L;\r
360\r
361 public boolean isCellEditable(int row, int col) {\r
362 switch (col) {\r
363 default:\r
364 return false;\r
365 }\r
366 }\r
367}\r