]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/far/installui/InstallStepOne.java
Changed spelling to manifest
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / far / installui / InstallStepOne.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.installui;\r
15\r
16import java.awt.Dimension;\r
17import java.awt.Toolkit;\r
18import java.awt.event.MouseEvent;\r
19import java.awt.event.MouseListener;\r
20import java.io.File;\r
21import java.util.List;\r
22import java.util.jar.JarFile;\r
23import java.util.Iterator;\r
24\r
25import javax.swing.JFileChooser;\r
26import javax.swing.JPanel;\r
27import javax.swing.JButton;\r
28import javax.swing.JTextArea;\r
29import javax.swing.JLabel;\r
30import javax.swing.JTextField;\r
31import javax.swing.ListSelectionModel;\r
32\r
33import org.tianocore.frameworkwizard.common.DataType;\r
34import org.tianocore.frameworkwizard.common.IFileFilter;\r
35import org.tianocore.frameworkwizard.common.Log;\r
36import org.tianocore.frameworkwizard.common.Tools;\r
37import org.tianocore.frameworkwizard.common.ui.IDialog;\r
38import org.tianocore.frameworkwizard.common.ui.IFrame;\r
39import org.tianocore.frameworkwizard.far.DistributeRule;\r
40import org.tianocore.frameworkwizard.far.Far;\r
2e39c718 41import org.tianocore.frameworkwizard.far.FarStringDefinition;\r
5a24e806 42import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
43import org.tianocore.frameworkwizard.workspace.Workspace;\r
44\r
45import javax.swing.JScrollPane;\r
46import javax.swing.JTable;\r
47import javax.swing.table.DefaultTableModel;\r
48\r
49public class InstallStepOne extends IDialog implements MouseListener {\r
50\r
51 /**\r
52 * \r
53 */\r
54 private static final long serialVersionUID = -8821906198791949544L;\r
55\r
56 private JPanel jContentPane = null;\r
57\r
58 private JButton jButtonCancel = null;\r
59\r
60 private JButton jButtonNext = null;\r
61\r
62 private JTextArea jTextArea = null;\r
63\r
64 private JLabel jLabel = null;\r
65\r
66 private JTextField jTextFieldFarFile = null;\r
67\r
68 private JButton jButtonBrowser = null;\r
69\r
70 private InstallStepTwo stepTwo = null;\r
71\r
72 Far far = null;\r
73\r
74 private JLabel jLabelWarning = null;\r
75\r
76 private JScrollPane jScrollPane = null;\r
77\r
78 private JTable jTable = null;\r
79\r
80 private PartialTableModel model = null;\r
81\r
82 /**\r
83 * This method initializes jButtonCancel \r
84 * \r
85 * @return javax.swing.JButton \r
86 */\r
87 private JButton getJButtonCancel() {\r
88 if (jButtonCancel == null) {\r
89 jButtonCancel = new JButton();\r
90 jButtonCancel.setBounds(new java.awt.Rectangle(570, 330, 90, 20));\r
91 jButtonCancel.setText("Cancel");\r
92 jButtonCancel.addMouseListener(this);\r
93 }\r
94 return jButtonCancel;\r
95 }\r
96\r
97 /**\r
98 * This method initializes jButtonNext \r
99 * \r
100 * @return javax.swing.JButton \r
101 */\r
102 private JButton getJButtonNext() {\r
103 if (jButtonNext == null) {\r
104 jButtonNext = new JButton();\r
105 jButtonNext.setBounds(new java.awt.Rectangle(470, 330, 90, 20));\r
106 jButtonNext.setText("Next");\r
107 jButtonNext.addMouseListener(this);\r
108 }\r
109 return jButtonNext;\r
110 }\r
111\r
112 /**\r
113 * This method initializes jTextArea \r
114 * \r
115 * @return javax.swing.JTextArea \r
116 */\r
117 private JTextArea getJTextArea() {\r
118 if (jTextArea == null) {\r
119 jTextArea = new JTextArea();\r
120 jTextArea.setBounds(new java.awt.Rectangle(30, 7, 642, 50));\r
121 jTextArea.setText("Step 1: Choose a framework archive(FAR) file. \n");\r
122 jTextArea.setEditable(false);\r
123 }\r
124 return jTextArea;\r
125 }\r
126\r
127 /**\r
128 * This method initializes jTextField \r
129 * \r
130 * @return javax.swing.JTextField \r
131 */\r
132 private JTextField getJTextFieldFarFile() {\r
133 if (jTextFieldFarFile == null) {\r
134 jTextFieldFarFile = new JTextField();\r
a45e9a40 135 jTextFieldFarFile.setBounds(new java.awt.Rectangle(140, 80, 423, 20));\r
5a24e806 136 }\r
137 return jTextFieldFarFile;\r
138 }\r
139\r
140 /**\r
141 * This method initializes jButtonBrowser \r
142 * \r
143 * @return javax.swing.JButton \r
144 */\r
145 private JButton getJButtonBrowser() {\r
146 if (jButtonBrowser == null) {\r
147 jButtonBrowser = new JButton();\r
a45e9a40 148 jButtonBrowser.setBounds(new java.awt.Rectangle(570, 80, 100, 20));\r
5a24e806 149 jButtonBrowser.setText("Browser...");\r
150 jButtonBrowser.addMouseListener(this);\r
151 }\r
152 return jButtonBrowser;\r
153 }\r
154\r
155 /**\r
156 * This method initializes jScrollPane \r
157 * \r
158 * @return javax.swing.JScrollPane \r
159 */\r
160 private JScrollPane getJScrollPane() {\r
161 if (jScrollPane == null) {\r
162 jScrollPane = new JScrollPane();\r
a45e9a40 163 jScrollPane.setBounds(new java.awt.Rectangle(30, 165, 642, 140));\r
5a24e806 164 jScrollPane.setViewportView(getJTable());\r
165 }\r
166 jScrollPane.setVisible(false);\r
167 return jScrollPane;\r
168 }\r
169\r
170 /**\r
171 * This method initializes jTable \r
172 * \r
173 * @return javax.swing.JTable \r
174 */\r
175 private JTable getJTable() {\r
176 if (jTable == null) {\r
177 jTable = new JTable();\r
178 model = new PartialTableModel();\r
179 jTable = new JTable(model);\r
180 jTable.setRowHeight(20);\r
181 jTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);\r
182 model.addColumn("Name");\r
183 model.addColumn("Version");\r
184 model.addColumn("GUID");\r
185\r
186 jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
187 }\r
188 jTable.setVisible(false);\r
189 return jTable;\r
190 }\r
191\r
192 public void prepareTable(List<PackageIdentification> packageList) {\r
193 model.setRowCount(0);\r
194 //\r
195 // Change here to get packages and platforms from FAR\r
196 //\r
197 Iterator<PackageIdentification> iter = packageList.iterator();\r
198 while (iter.hasNext()) {\r
199 String[] str = new String[3];\r
200 PackageIdentification item = iter.next();\r
201 str[0] = item.getName();\r
202 str[1] = item.getVersion();\r
203 str[2] = item.getGuid();\r
204 model.addRow(str);\r
205 }\r
206 }\r
207\r
208 /**\r
209 * This is the default constructor\r
210 */\r
211 public InstallStepOne(IFrame iFrame, boolean modal) {\r
212 super(iFrame, modal);\r
213 initialize();\r
214 }\r
215\r
216 /**\r
217 * This method initializes this\r
218 * \r
219 * @return void\r
220 */\r
221 private void initialize() {\r
222 this.setSize(700, 400);\r
223 this.setContentPane(getJContentPane());\r
2e39c718 224 this.setTitle(FarStringDefinition.INSTALL_STEP_ONE_TITLE);\r
5a24e806 225 Dimension d = Toolkit.getDefaultToolkit().getScreenSize();\r
226 this.setLocation((d.width - this.getSize().width) / 2, (d.height - this.getSize().height) / 2);\r
227 }\r
228\r
229 /**\r
230 * This method initializes jContentPane\r
231 * \r
232 * @return javax.swing.JPanel\r
233 */\r
234 private JPanel getJContentPane() {\r
235 if (jContentPane == null) {\r
236 jLabelWarning = new JLabel();\r
156ed4d0 237 jLabelWarning.setBounds(new java.awt.Rectangle(30, 125, 510, 20));\r
238 jLabelWarning.setText("Cannot install this FAR, the WORKSPACE is missing the following required packages.");\r
5a24e806 239 jLabelWarning.setVisible(false);\r
240 jLabel = new JLabel();\r
a45e9a40 241 jLabel.setBounds(new java.awt.Rectangle(30, 80, 97, 20));\r
5a24e806 242 jLabel.setText("Choose FAR file: ");\r
243 jContentPane = new JPanel();\r
244 jContentPane.setLayout(null);\r
245 jContentPane.add(getJButtonCancel(), null);\r
246 jContentPane.add(getJButtonNext(), null);\r
247 jContentPane.add(getJTextArea(), null);\r
248 jContentPane.add(jLabel, null);\r
249 jContentPane.add(getJTextFieldFarFile(), null);\r
250 jContentPane.add(getJButtonBrowser(), null);\r
251 jContentPane.add(jLabelWarning, null);\r
252 jContentPane.add(getJScrollPane(), null);\r
253 }\r
254 return jContentPane;\r
255 }\r
256\r
257 public void mouseClicked(MouseEvent e) {\r
258 if (e.getSource() == jButtonCancel) {\r
259 this.setVisible(false);\r
260 } else if (e.getSource() == jButtonNext) {\r
261 //\r
262 // Add some logic process here\r
263 //\r
264 File farFile = new File(jTextFieldFarFile.getText());\r
265 if (!farFile.exists() || !farFile.isFile()) {\r
156ed4d0 266 Log.wrn("Install far", "Please choose an existing FAR file.");\r
5a24e806 267 return;\r
268 }\r
269\r
270 //\r
271 // Verify Far\r
272 //\r
273 JarFile jarFar;\r
274 try {\r
275 jarFar = new JarFile(farFile);\r
276 far = new Far(jarFar);\r
277\r
278 //\r
279 // Far dependency check\r
280 //\r
281 List<PackageIdentification> pkgIdList = DistributeRule.installFarCheck(far);\r
282\r
283 if (pkgIdList.size() > 0) {\r
284 prepareTable(pkgIdList);\r
285 jLabelWarning.setVisible(true);\r
286 jTable.setVisible(true);\r
287 jScrollPane.setVisible(true);\r
288 return;\r
289 }\r
290\r
291 } catch (Exception exp) {\r
ed1665f2 292 Log.wrn("Install far" + exp.getMessage());\r
293 Log.err("Install far" + exp.getMessage());\r
5a24e806 294 }\r
295\r
296 if (stepTwo == null) {\r
297 stepTwo = new InstallStepTwo(this, true, this);\r
298 }\r
299 this.setVisible(false);\r
300\r
301 //\r
302 // Refresh table\r
303 //\r
304 stepTwo.preparePackageTable();\r
305 stepTwo.preparePlatformTable();\r
306 stepTwo.setVisible(true);\r
307 } else if (e.getSource() == jButtonBrowser) {\r
308 JFileChooser fc = new JFileChooser();\r
309 fc.setAcceptAllFileFilterUsed(false);\r
310 fc.addChoosableFileFilter(new IFileFilter(DataType.FAR_SURFACE_AREA_EXT));\r
311 fc.setCurrentDirectory(new File(Workspace.getCurrentWorkspace()));\r
312\r
2e39c718 313 int result = fc.showOpenDialog(new JPanel());\r
5a24e806 314 if (result == JFileChooser.APPROVE_OPTION) {\r
315 jLabelWarning.setVisible(false);\r
316 jTable.setVisible(false);\r
317 jScrollPane.setVisible(false);\r
318 this.jTextFieldFarFile.setText(Tools.addPathExt(fc.getSelectedFile().getPath(),\r
319 DataType.RETURN_TYPE_FAR_SURFACE_AREA));\r
320 }\r
321 }\r
322 }\r
323\r
324 public void mousePressed(MouseEvent e) {\r
325 // TODO Auto-generated method stub\r
326\r
327 }\r
328\r
329 public void mouseReleased(MouseEvent e) {\r
330 // TODO Auto-generated method stub\r
331\r
332 }\r
333\r
334 public void mouseEntered(MouseEvent e) {\r
335 // TODO Auto-generated method stub\r
336\r
337 }\r
338\r
339 public void mouseExited(MouseEvent e) {\r
340 // TODO Auto-generated method stub\r
341\r
342 }\r
343\r
344 public Far getFar() {\r
345 return far;\r
346 }\r
347\r
348}\r
349\r
350class PartialTableModel extends DefaultTableModel {\r
351 /**\r
352 * \r
353 */\r
354 private static final long serialVersionUID = 1L;\r
355\r
356 public boolean isCellEditable(int row, int col) {\r
357 switch (col) {\r
358 default:\r
359 return false;\r
360 }\r
361 }\r
362}\r