]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/PackageEditor/src/org/tianocore/packaging/PackagingMain.java
Remove the assumption of package location under workspace and prompt user to specify...
[mirror_edk2.git] / Tools / Source / PackageEditor / src / org / tianocore / packaging / PackagingMain.java
CommitLineData
878ddf1f 1/** @file\r
2 Java class PackagingMain is top level GUI for PackageEditor.\r
3 \r
4Copyright (c) 2006, Intel Corporation\r
5All rights reserved. This program and the accompanying materials\r
6are licensed and made available under the terms and conditions of the BSD License\r
7which accompanies this distribution. The full text of the license may be found at\r
8http://opensource.org/licenses/bsd-license.php\r
9\r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12**/\r
13package org.tianocore.packaging;\r
14\r
15import java.awt.BorderLayout;\r
16import java.awt.Dimension;\r
17import java.awt.Toolkit;\r
18\r
19import javax.swing.JFileChooser;\r
20import javax.swing.JOptionPane;\r
21import javax.swing.JPanel;\r
22import javax.swing.JFrame;\r
23import java.awt.FlowLayout;\r
24import javax.swing.JButton;\r
25import java.awt.GridLayout;\r
26import java.io.File;\r
27import java.io.FileOutputStream;\r
28import java.util.jar.JarOutputStream;\r
29\r
30/**\r
31 GUI for show various GUI wizards for create, update spd file; install, remove package;\r
32 create distributable package file.\r
33 \r
34 @since PackageEditor 1.0\r
35**/\r
36public class PackagingMain extends JFrame {\r
37\r
38 static JFrame frame;\r
39\r
33f1b485 40 static String dirForNewSpd = null;\r
41\r
878ddf1f 42 private JPanel jContentPane = null;\r
43\r
44 private JButton jButton = null;\r
45\r
46 private JButton jButton1 = null;\r
47\r
48 private JButton jButton2 = null;\r
49\r
50 private JButton jButton3 = null;\r
51\r
52 private JButton jButton4 = null;\r
53\r
54 private JButton jButton5 = null;\r
55\r
56 private JFrame pThis = null;\r
57\r
58 /**\r
59 This method initializes jButton \r
60 \r
61 @return javax.swing.JButton \r
62 **/\r
63 private JButton getJButton() {\r
64 if (jButton == null) {\r
65 jButton = new JButton();\r
66 jButton.setEnabled(true);\r
67 jButton.setText("Exit");\r
68 jButton.addMouseListener(new java.awt.event.MouseAdapter() {\r
69 public void mouseClicked(java.awt.event.MouseEvent e) {\r
70 pThis.dispose();\r
71 }\r
72 });\r
73 }\r
74 return jButton;\r
75 }\r
76\r
77 /**\r
78 This method initializes jButton1 \r
79 \r
80 @return javax.swing.JButton \r
81 **/\r
82 private JButton getJButton1() {\r
83 if (jButton1 == null) {\r
84 jButton1 = new JButton();\r
85 jButton1.setText("Create an Installable Package");\r
86 jButton1.setEnabled(true);\r
87 jButton1.addMouseListener(new java.awt.event.MouseAdapter() {\r
88 public void mouseClicked(java.awt.event.MouseEvent e) {\r
89 File theFile = null;\r
90 JFileChooser chooser = new JFileChooser();\r
91 //\r
92 // select the directory that contains files to be distribute\r
93 //\r
94 chooser.setMultiSelectionEnabled(false);\r
95 chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);\r
96 int retval = chooser.showOpenDialog(frame);\r
97 if (retval == JFileChooser.APPROVE_OPTION) {\r
98 try {\r
99 theFile = chooser.getSelectedFile();\r
100 //\r
101 // find the FDPManifest.xml file that should exist \r
102 // in the root directory of package \r
103 //\r
104 String[] list = theFile.list();\r
105 boolean manifestExists = false;\r
106 for (int i = 0; i < list.length; i++) {\r
107 if (list[i].equals("FDPManifest.xml")) {\r
108 manifestExists = true;\r
109 break;\r
110 }\r
111 }\r
112 if (!manifestExists) {\r
113 JOptionPane.showMessageDialog(frame,\r
114 "Please Put the FDPManifest.xml File under the Directory You Selected!");\r
115 return;\r
116 }\r
117 //\r
118 // create the distribute package .fdp file in the same directory with \r
119 // the package root directory selected above.\r
120 //\r
121 JarOutputStream jos = new JarOutputStream(new FileOutputStream(theFile.getPath() + ".fdp"));\r
122 CreateFdp.create(theFile, jos, theFile.getPath());\r
123 jos.close();\r
124 JOptionPane.showMessageDialog(frame,\r
125 "FDP File Created Successfully!");\r
126 \r
127 \r
128 } catch (Exception ee) {\r
129 System.out.println(ee.toString());\r
130 } \r
131 } else {\r
132 return;\r
133 }\r
134 }\r
135 });\r
136 }\r
137 return jButton1;\r
138 }\r
139\r
140 /**\r
141 This method initializes jButton2 \r
142 \r
143 @return javax.swing.JButton \r
144 **/\r
145 private JButton getJButton2() {\r
146 if (jButton2 == null) {\r
147 jButton2 = new JButton();\r
148 jButton2.setText("Remove Package");\r
149 jButton2.setEnabled(true);\r
150 jButton2.addMouseListener(new java.awt.event.MouseAdapter() {\r
151 public void mouseClicked(java.awt.event.MouseEvent e) {\r
152 ModalFrameUtil.showAsModal(new GuiPkgUninstall(), pThis);\r
153 }\r
154 });\r
155 }\r
156 return jButton2;\r
157 }\r
158\r
159 /**\r
160 This method initializes jButton3 \r
161 \r
162 @return javax.swing.JButton \r
163 **/\r
164 private JButton getJButton3() {\r
165 if (jButton3 == null) {\r
166 jButton3 = new JButton();\r
167 jButton3.setText("Install Package");\r
168 jButton3.addMouseListener(new java.awt.event.MouseAdapter() {\r
169 public void mouseClicked(java.awt.event.MouseEvent e) {\r
170 ModalFrameUtil.showAsModal(new GuiPkgInstall(), pThis);\r
171 }\r
172 });\r
173 }\r
174 return jButton3;\r
175 }\r
176\r
177 /**\r
178 This method initializes jButton4 \r
179 \r
180 @return javax.swing.JButton \r
181 **/\r
182 private JButton getJButton4() {\r
183 if (jButton4 == null) {\r
184 jButton4 = new JButton();\r
185 jButton4.setText("Update Package Description File");\r
186 jButton4.addMouseListener(new java.awt.event.MouseAdapter() {\r
187 public void mouseClicked(java.awt.event.MouseEvent e) {\r
188 File theFile = null;\r
189 JFileChooser chooser = new JFileChooser();\r
190 //\r
191 // select the spd file to be updated first\r
192 //\r
193 chooser.setMultiSelectionEnabled(false);\r
194 chooser.setFileFilter(new PkgFileFilter("spd"));\r
195 int retval = chooser.showOpenDialog(frame);\r
196 if (retval == JFileChooser.APPROVE_OPTION) {\r
197 try {\r
198 theFile = chooser.getSelectedFile();\r
199 if (!theFile.isFile()) {\r
200 JOptionPane.showMessageDialog(frame, "Please Select one Spd File!");\r
201 return;\r
202 }\r
203\r
204 } catch (Exception ee) {\r
205 System.out.println(ee.toString());\r
206 }\r
207 } else {\r
208 return;\r
209 }\r
210 //\r
211 // create a SpdFileContents for this file and pass it to GUI\r
212 //\r
213 SpdFileContents sfc = new SpdFileContents(theFile);\r
214 ModalFrameUtil.showAsModal(new UpdateAction(sfc), pThis);\r
215 }\r
216 });\r
217 }\r
218 return jButton4;\r
219 }\r
220\r
221 /**\r
222 This method initializes jButton5 \r
223 \r
224 @return javax.swing.JButton \r
225 **/\r
226 private JButton getJButton5() {\r
227 if (jButton5 == null) {\r
228 jButton5 = new JButton();\r
229 jButton5.setText("Create Package Description File");\r
230 jButton5.addMouseListener(new java.awt.event.MouseAdapter() {\r
231 public void mouseClicked(java.awt.event.MouseEvent e) {\r
33f1b485 232 JFileChooser chooser = new JFileChooser(System.getenv("WORKSPACE"));\r
233 chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);\r
234 chooser.setMultiSelectionEnabled(false);\r
235 chooser.setDialogTitle("Please specify where to save the new spd file");\r
236\r
237 int retval = chooser.showSaveDialog(frame);\r
238 if (retval == JFileChooser.APPROVE_OPTION) {\r
239 try {\r
240 File theFile = chooser.getSelectedFile();\r
241 PackagingMain.dirForNewSpd = theFile.getPath();\r
242\r
243 } catch (Exception ee) {\r
244 System.out.println(ee.toString());\r
245 }\r
246// pThis.dispose();\r
247 }\r
248 else {\r
249 return;\r
250 }\r
878ddf1f 251 SpdFileContents sfc = new SpdFileContents();\r
252 ModalFrameUtil.showAsModal(new PackageAction(sfc), pThis);\r
253 }\r
254 });\r
255 }\r
256 return jButton5;\r
257 }\r
258\r
259 /**\r
260 Main for all package editor\r
261 \r
262 @param args\r
263 **/\r
264 public static void main(String[] args) {\r
265 // TODO Auto-generated method stub\r
266 new PackagingMain().setVisible(true);\r
267 }\r
268\r
269 /**\r
270 This is the default constructor\r
271 **/\r
272 public PackagingMain() {\r
273 super();\r
274 initialize();\r
275 pThis = this;\r
276 }\r
277\r
278 /**\r
279 This method initializes this\r
280 \r
281 @return void\r
282 **/\r
283 private void initialize() {\r
284 this.setSize(300, 357);\r
285 this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);\r
286 this.setTitle("Packaging");\r
287 this.setContentPane(getJContentPane());\r
288 this.centerWindow();\r
289 }\r
290\r
291 /**\r
292 Start the window at the center of screen\r
293 \r
294 **/\r
295 protected void centerWindow(int intWidth, int intHeight) {\r
296 Dimension d = Toolkit.getDefaultToolkit().getScreenSize();\r
297 this.setLocation((d.width - intWidth) / 2, (d.height - intHeight) / 2);\r
298 }\r
299\r
300 /**\r
301 Start the window at the center of screen\r
302 \r
303 **/\r
304 protected void centerWindow() {\r
305 centerWindow(this.getSize().width, this.getSize().height);\r
306 }\r
307\r
308 /**\r
309 This method initializes jContentPane\r
310 \r
311 @return javax.swing.JPanel\r
312 **/\r
313 private JPanel getJContentPane() {\r
314 if (jContentPane == null) {\r
315 GridLayout gridLayout = new GridLayout();\r
316 gridLayout.setRows(6);\r
317 gridLayout.setColumns(1);\r
318 jContentPane = new JPanel();\r
319 jContentPane.setLayout(gridLayout);\r
320 jContentPane.add(getJButton5(), null);\r
321 jContentPane.add(getJButton4(), null);\r
322 jContentPane.add(getJButton3(), null);\r
323 jContentPane.add(getJButton2(), null);\r
324 jContentPane.add(getJButton1(), null);\r
325 jContentPane.add(getJButton(), null);\r
326 }\r
327 return jContentPane;\r
328 }\r
329\r
330} // @jve:decl-index=0:visual-constraint="125,31"\r