]>
Commit | Line | Data |
---|---|---|
878ddf1f | 1 | /** @file\r |
2 | Java class GuiPkgInstall is GUI for package installation.\r | |
3 | \r | |
4 | Copyright (c) 2006, Intel Corporation\r | |
5 | All rights reserved. This program and the accompanying materials\r | |
6 | are licensed and made available under the terms and conditions of the BSD License\r | |
7 | which accompanies this distribution. The full text of the license may be found at\r | |
8 | http://opensource.org/licenses/bsd-license.php\r | |
9 | \r | |
10 | THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r | |
11 | WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r | |
12 | **/\r | |
13 | package org.tianocore.packaging;\r | |
14 | \r | |
15 | \r | |
16 | import javax.swing.JPanel;\r | |
17 | import javax.swing.JFrame;\r | |
18 | import javax.swing.JButton;\r | |
19 | import javax.swing.JFileChooser;\r | |
20 | import javax.swing.JLabel;\r | |
21 | import javax.swing.JOptionPane;\r | |
22 | import javax.swing.JTextField;\r | |
23 | \r | |
24 | import java.awt.Dimension;\r | |
25 | import java.awt.GridLayout;\r | |
26 | import java.awt.Toolkit;\r | |
27 | \r | |
28 | import java.awt.FlowLayout;\r | |
29 | import java.awt.event.MouseEvent;\r | |
30 | import java.awt.event.MouseListener;\r | |
31 | import java.awt.event.WindowAdapter;\r | |
32 | import java.awt.event.WindowEvent;\r | |
33 | \r | |
34 | import java.awt.ComponentOrientation;\r | |
35 | import java.io.File;\r | |
36 | import java.util.Hashtable;\r | |
37 | \r | |
38 | import javax.swing.SwingConstants;\r | |
39 | import javax.swing.JProgressBar;\r | |
40 | import javax.swing.filechooser.FileFilter;\r | |
41 | \r | |
42 | import org.apache.xmlbeans.XmlException;\r | |
43 | \r | |
44 | \r | |
45 | /**\r | |
46 | GUI for package installation. \r | |
47 | \r | |
48 | @since PackageEditor 1.0\r | |
49 | **/\r | |
50 | public class GuiPkgInstall extends JFrame implements MouseListener {\r | |
51 | \r | |
52 | final static long serialVersionUID = 0;\r | |
53 | \r | |
54 | static JFrame frame;\r | |
55 | \r | |
56 | ///\r | |
57 | /// backup of "this". As we cannot use "this" to refer outer class inside inner class\r | |
58 | ///\r | |
59 | private JFrame pThis = null;\r | |
60 | \r | |
61 | private JFileChooser chooser = null;\r | |
62 | \r | |
63 | private JPanel jPanel = null;\r | |
64 | \r | |
65 | private JPanel jPanel1 = null;\r | |
66 | \r | |
67 | private JTextField jTextField = null;\r | |
68 | \r | |
69 | private JButton jButton = null;\r | |
70 | \r | |
71 | private JPanel jPanel2 = null;\r | |
72 | \r | |
73 | private JLabel jLabel1 = null;\r | |
74 | \r | |
75 | private JPanel jPanel4 = null;\r | |
76 | \r | |
77 | private JTextField jTextField1 = null;\r | |
78 | \r | |
79 | private JButton jButton1 = null;\r | |
80 | \r | |
81 | private JPanel jPanel5 = null;\r | |
82 | \r | |
83 | private JPanel jPanel6 = null;\r | |
84 | \r | |
85 | private JPanel jPanel7 = null;\r | |
86 | \r | |
87 | private JLabel jLabel2 = null;\r | |
88 | \r | |
89 | private JTextField jTextField2 = null;\r | |
90 | \r | |
91 | private JButton jButton2 = null;\r | |
92 | \r | |
93 | private JButton jButton3 = null;\r | |
94 | \r | |
95 | private JPanel jPanel3 = null;\r | |
96 | \r | |
97 | private JLabel jLabel = null;\r | |
98 | \r | |
99 | private JProgressBar jProgressBar = null;\r | |
100 | \r | |
101 | private JButton jButton4 = null;\r | |
102 | \r | |
103 | \r | |
104 | public GuiPkgInstall() {\r | |
105 | super();\r | |
106 | initialize();\r | |
107 | \r | |
108 | }\r | |
109 | \r | |
110 | /**\r | |
111 | GUI initialization\r | |
112 | **/\r | |
113 | private void initialize() {\r | |
114 | this.setSize(new java.awt.Dimension(454, 313));\r | |
115 | this.setContentPane(getJPanel());\r | |
116 | this.setTitle("Package Installation");\r | |
117 | this.addWindowListener(new GuiPkgInstallAdapter(this));\r | |
118 | this.setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);\r | |
119 | this.centerWindow();\r | |
120 | pThis = this;\r | |
121 | }\r | |
122 | \r | |
123 | /**\r | |
124 | make window appear center of screen\r | |
125 | \r | |
126 | @param intWidth\r | |
127 | @param intHeight\r | |
128 | **/\r | |
129 | protected void centerWindow(int intWidth, int intHeight) {\r | |
130 | Dimension d = Toolkit.getDefaultToolkit().getScreenSize();\r | |
131 | this.setLocation((d.width - intWidth) / 2, (d.height - intHeight) / 2);\r | |
132 | }\r | |
133 | \r | |
134 | /**\r | |
135 | Start the window at the center of screen\r | |
136 | **/\r | |
137 | protected void centerWindow() {\r | |
138 | centerWindow(this.getSize().width, this.getSize().height);\r | |
139 | }\r | |
140 | \r | |
141 | /**\r | |
142 | This method initializes jPanel\r | |
143 | @return javax.swing.JPanel\r | |
144 | **/\r | |
145 | private JPanel getJPanel() {\r | |
146 | if (jPanel == null) {\r | |
147 | GridLayout gridLayout = new GridLayout();\r | |
148 | gridLayout.setRows(7);\r | |
149 | gridLayout.setColumns(1);\r | |
150 | jPanel = new JPanel();\r | |
151 | jPanel.setLayout(gridLayout);\r | |
152 | jPanel.add(getJPanel3(), null);\r | |
153 | jPanel.add(getJPanel1(), null);\r | |
154 | jPanel.add(getJPanel2(), null);\r | |
155 | jPanel.add(getJPanel4(), null);\r | |
156 | jPanel.add(getJPanel5(), null);\r | |
157 | jPanel.add(getJPanel6(), null);\r | |
158 | jPanel.add(getJPanel7(), null);\r | |
159 | }\r | |
160 | return jPanel;\r | |
161 | }\r | |
162 | \r | |
163 | /**\r | |
164 | This method initializes jPanel1 \r | |
165 | \r | |
166 | @return javax.swing.JPanel \r | |
167 | **/\r | |
168 | private JPanel getJPanel1() {\r | |
169 | if (jPanel1 == null) {\r | |
170 | FlowLayout flowLayout = new FlowLayout();\r | |
171 | flowLayout.setAlignment(java.awt.FlowLayout.LEFT);\r | |
172 | jPanel1 = new JPanel();\r | |
173 | jPanel1.setLayout(flowLayout);\r | |
174 | jPanel1.add(getJTextField(), null);\r | |
175 | jPanel1.add(getJButton(), null);\r | |
176 | }\r | |
177 | return jPanel1;\r | |
178 | }\r | |
179 | \r | |
180 | /**\r | |
181 | This method initializes jTextField \r | |
182 | \r | |
183 | @return javax.swing.JTextField \r | |
184 | **/\r | |
185 | private JTextField getJTextField() {\r | |
186 | if (jTextField == null) {\r | |
187 | jTextField = new JTextField();\r | |
188 | jTextField.setHorizontalAlignment(javax.swing.JTextField.LEFT);\r | |
189 | jTextField.setPreferredSize(new java.awt.Dimension(350, 20));\r | |
190 | }\r | |
191 | return jTextField;\r | |
192 | }\r | |
193 | \r | |
194 | /**\r | |
195 | This method initializes jButton \r | |
196 | \r | |
197 | @return javax.swing.JButton \r | |
198 | **/\r | |
199 | private JButton getJButton() {\r | |
200 | if (jButton == null) {\r | |
201 | jButton = new JButton();\r | |
202 | jButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);\r | |
203 | jButton.setText("Browse");\r | |
204 | jButton.setComponentOrientation(java.awt.ComponentOrientation.LEFT_TO_RIGHT);\r | |
205 | jButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);\r | |
206 | jButton.setToolTipText("Where is the package?");\r | |
207 | jButton.setFont(new java.awt.Font("Dialog", java.awt.Font.BOLD, 12));\r | |
208 | \r | |
209 | jButton.setPreferredSize(new java.awt.Dimension(80, 20));\r | |
210 | jButton.addMouseListener(new java.awt.event.MouseAdapter() {\r | |
211 | public void mouseClicked(java.awt.event.MouseEvent e) {\r | |
212 | if (chooser == null) {\r | |
213 | chooser = new JFileChooser();\r | |
214 | }\r | |
215 | //\r | |
216 | // disable multi-selection, you can only select one item each time.\r | |
217 | //\r | |
218 | chooser.setMultiSelectionEnabled(false);\r | |
219 | chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);\r | |
220 | chooser.setFileFilter(new PkgFileFilter("fdp"));\r | |
221 | int retval = chooser.showOpenDialog(frame);\r | |
222 | if (retval == JFileChooser.APPROVE_OPTION) {\r | |
223 | \r | |
224 | File theFile = chooser.getSelectedFile();\r | |
225 | jTextField.setText(theFile.getPath());\r | |
226 | //\r | |
227 | // set a default directory for installation (WORKSPACE\PackageFileName)\r | |
228 | //\r | |
229 | if (jTextField1.getText().length() > 0) {\r | |
230 | int indexbegin = jTextField.getText().lastIndexOf(System.getProperty("file.separator"));\r | |
231 | int indexend = jTextField.getText().lastIndexOf('.');\r | |
232 | if (indexbegin >= 0 && indexend >= 0) {\r | |
233 | jTextField2.setText(jTextField1.getText()\r | |
234 | + jTextField.getText().substring(indexbegin, indexend));\r | |
235 | } else {\r | |
236 | JOptionPane.showMessageDialog(frame, "Wrong Path:" + jTextField.getText());\r | |
237 | }\r | |
238 | }\r | |
239 | }\r | |
240 | }\r | |
241 | });\r | |
242 | }\r | |
243 | return jButton;\r | |
244 | }\r | |
245 | \r | |
246 | /**\r | |
247 | This method initializes jPanel2 \r | |
248 | \r | |
249 | @return javax.swing.JPanel \r | |
250 | **/\r | |
251 | private JPanel getJPanel2() {\r | |
252 | if (jPanel2 == null) {\r | |
253 | FlowLayout flowLayout1 = new FlowLayout();\r | |
254 | flowLayout1.setAlignment(java.awt.FlowLayout.LEFT);\r | |
255 | flowLayout1.setVgap(20);\r | |
256 | jLabel1 = new JLabel();\r | |
257 | jLabel1.setText("Enter Workspace Location");\r | |
258 | jLabel1.setComponentOrientation(java.awt.ComponentOrientation.UNKNOWN);\r | |
259 | jLabel1.setHorizontalTextPosition(javax.swing.SwingConstants.TRAILING);\r | |
260 | jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);\r | |
261 | jPanel2 = new JPanel();\r | |
262 | jPanel2.setLayout(flowLayout1);\r | |
263 | jPanel2.add(jLabel1, null);\r | |
264 | }\r | |
265 | return jPanel2;\r | |
266 | }\r | |
267 | \r | |
268 | /**\r | |
269 | This method initializes jPanel4 \r | |
270 | \r | |
271 | @return javax.swing.JPanel \r | |
272 | **/\r | |
273 | private JPanel getJPanel4() {\r | |
274 | if (jPanel4 == null) {\r | |
275 | FlowLayout flowLayout2 = new FlowLayout();\r | |
276 | flowLayout2.setAlignment(java.awt.FlowLayout.LEFT);\r | |
277 | jPanel4 = new JPanel();\r | |
278 | jPanel4.setLayout(flowLayout2);\r | |
279 | jPanel4.add(getJTextField1(), null);\r | |
280 | jPanel4.add(getJButton1(), null);\r | |
281 | }\r | |
282 | return jPanel4;\r | |
283 | }\r | |
284 | \r | |
285 | /**\r | |
286 | This method initializes jTextField1 \r | |
287 | \r | |
288 | @return javax.swing.JTextField \r | |
289 | **/\r | |
290 | private JTextField getJTextField1() {\r | |
291 | if (jTextField1 == null) {\r | |
292 | jTextField1 = new JTextField();\r | |
293 | jTextField1.setPreferredSize(new java.awt.Dimension(350, 20));\r | |
294 | \r | |
295 | }\r | |
296 | //\r | |
297 | // default value is WORKSPACE environmental variable value\r | |
298 | //\r | |
299 | jTextField1.setText(System.getenv("WORKSPACE"));\r | |
300 | return jTextField1;\r | |
301 | }\r | |
302 | \r | |
303 | /**\r | |
304 | This method initializes jButton1 \r | |
305 | \r | |
306 | @return javax.swing.JButton \r | |
307 | **/\r | |
308 | private JButton getJButton1() {\r | |
309 | if (jButton1 == null) {\r | |
310 | jButton1 = new JButton();\r | |
311 | jButton1.setComponentOrientation(java.awt.ComponentOrientation.LEFT_TO_RIGHT);\r | |
312 | \r | |
313 | jButton1.setHorizontalAlignment(javax.swing.SwingConstants.LEADING);\r | |
314 | jButton1.setHorizontalTextPosition(javax.swing.SwingConstants.TRAILING);\r | |
315 | jButton1.setText("Browse");\r | |
316 | jButton1.setPreferredSize(new java.awt.Dimension(80, 20));\r | |
317 | jButton1.addMouseListener(new java.awt.event.MouseAdapter() {\r | |
318 | public void mouseClicked(java.awt.event.MouseEvent e) {\r | |
319 | if (chooser == null) {\r | |
320 | chooser = new JFileChooser();\r | |
321 | }\r | |
322 | //\r | |
323 | // only directories can be selected for workspace location.\r | |
324 | //\r | |
325 | chooser.setMultiSelectionEnabled(false);\r | |
326 | chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);\r | |
327 | \r | |
328 | int retval = chooser.showOpenDialog(frame);\r | |
329 | if (retval == JFileChooser.APPROVE_OPTION) {\r | |
330 | \r | |
331 | File theFile = chooser.getSelectedFile();\r | |
332 | jTextField1.setText(theFile.getPath());\r | |
333 | //\r | |
334 | // set a default directory for installation (WORKSPACE\PackageFileName)\r | |
335 | //\r | |
336 | if (jTextField.getText().length() > 0) {\r | |
337 | int indexbegin = jTextField.getText().lastIndexOf(System.getProperty("file.separator"));\r | |
338 | int indexend = jTextField.getText().lastIndexOf('.');\r | |
339 | if (indexbegin >= 0 && indexend >= 0) {\r | |
340 | jTextField2.setText(jTextField1.getText()\r | |
341 | + jTextField.getText().substring(indexbegin, indexend));\r | |
342 | } else {\r | |
343 | JOptionPane.showMessageDialog(frame, "Wrong Path:" + jTextField.getText());\r | |
344 | }\r | |
345 | }\r | |
346 | }\r | |
347 | \r | |
348 | }\r | |
349 | });\r | |
350 | }\r | |
351 | return jButton1;\r | |
352 | }\r | |
353 | \r | |
354 | /**\r | |
355 | This method initializes jButton4 \r | |
356 | \r | |
357 | @return javax.swing.JButton \r | |
358 | **/\r | |
359 | private JButton getJButton4() {\r | |
360 | if (jButton4 == null) {\r | |
361 | jButton4 = new JButton();\r | |
362 | jButton4.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);\r | |
363 | \r | |
364 | jButton4.setHorizontalAlignment(SwingConstants.LEADING);\r | |
365 | jButton4.setHorizontalTextPosition(SwingConstants.TRAILING);\r | |
366 | jButton4.setText("Browse");\r | |
367 | jButton4.setPreferredSize(new Dimension(80, 20));\r | |
368 | jButton4.addMouseListener(new java.awt.event.MouseAdapter() {\r | |
369 | public void mouseClicked(java.awt.event.MouseEvent e) {\r | |
370 | JFileChooser chooser = new JFileChooser(jTextField1.getText());\r | |
371 | \r | |
372 | chooser.setMultiSelectionEnabled(false);\r | |
373 | chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);\r | |
374 | \r | |
375 | int retval = chooser.showOpenDialog(frame);\r | |
376 | if (retval == JFileChooser.APPROVE_OPTION) {\r | |
377 | //\r | |
378 | // specify installation directory from file chooser \r | |
379 | //\r | |
380 | File theFile = chooser.getSelectedFile();\r | |
381 | jTextField2.setText(theFile.getPath());\r | |
382 | \r | |
383 | }\r | |
384 | }\r | |
385 | });\r | |
386 | \r | |
387 | }\r | |
388 | return jButton4;\r | |
389 | }\r | |
390 | /**\r | |
391 | This method initializes jPanel5 \r | |
392 | \r | |
393 | @return javax.swing.JPanel \r | |
394 | **/\r | |
395 | private JPanel getJPanel5() {\r | |
396 | if (jPanel5 == null) {\r | |
397 | FlowLayout flowLayout3 = new FlowLayout();\r | |
398 | flowLayout3.setAlignment(java.awt.FlowLayout.LEFT);\r | |
399 | flowLayout3.setVgap(20);\r | |
400 | jLabel2 = new JLabel();\r | |
401 | jLabel2.setComponentOrientation(java.awt.ComponentOrientation.UNKNOWN);\r | |
402 | jLabel2.setHorizontalTextPosition(javax.swing.SwingConstants.TRAILING);\r | |
403 | jLabel2.setText("Enter Installation Location Within Workspace");\r | |
404 | jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);\r | |
405 | jPanel5 = new JPanel();\r | |
406 | jPanel5.setLayout(flowLayout3);\r | |
407 | jPanel5.add(jLabel2, null);\r | |
408 | }\r | |
409 | return jPanel5;\r | |
410 | }\r | |
411 | \r | |
412 | /**\r | |
413 | This method initializes jPanel6 \r | |
414 | \r | |
415 | @return javax.swing.JPanel \r | |
416 | **/\r | |
417 | private JPanel getJPanel6() {\r | |
418 | if (jPanel6 == null) {\r | |
419 | FlowLayout flowLayout4 = new FlowLayout();\r | |
420 | flowLayout4.setAlignment(java.awt.FlowLayout.LEFT);\r | |
421 | jPanel6 = new JPanel();\r | |
422 | jPanel6.setLayout(flowLayout4);\r | |
423 | jPanel6.add(getJTextField2(), null);\r | |
424 | jPanel6.add(getJButton4(), null);\r | |
425 | }\r | |
426 | return jPanel6;\r | |
427 | }\r | |
428 | \r | |
429 | /**\r | |
430 | This method initializes jPanel7 \r | |
431 | \r | |
432 | @return javax.swing.JPanel \r | |
433 | **/\r | |
434 | private JPanel getJPanel7() {\r | |
435 | if (jPanel7 == null) {\r | |
436 | FlowLayout flowLayout5 = new FlowLayout();\r | |
437 | flowLayout5.setAlignment(java.awt.FlowLayout.RIGHT);\r | |
438 | jPanel7 = new JPanel();\r | |
439 | jPanel7.setLayout(flowLayout5);\r | |
440 | jPanel7.add(getJProgressBar(), null);\r | |
441 | jPanel7.add(getJButton2(), null);\r | |
442 | jPanel7.add(getJButton3(), null);\r | |
443 | }\r | |
444 | return jPanel7;\r | |
445 | }\r | |
446 | \r | |
447 | /**\r | |
448 | This method initializes jTextField2 \r | |
449 | \r | |
450 | @return javax.swing.JTextField \r | |
451 | **/\r | |
452 | private JTextField getJTextField2() {\r | |
453 | if (jTextField2 == null) {\r | |
454 | jTextField2 = new JTextField();\r | |
455 | jTextField2.setPreferredSize(new java.awt.Dimension(350, 20));\r | |
456 | }\r | |
457 | return jTextField2;\r | |
458 | }\r | |
459 | \r | |
460 | /**\r | |
461 | This method initializes jButton2 \r | |
462 | \r | |
463 | @return javax.swing.JButton \r | |
464 | **/\r | |
465 | private JButton getJButton2() {\r | |
466 | if (jButton2 == null) {\r | |
467 | jButton2 = new JButton();\r | |
468 | jButton2.setPreferredSize(new java.awt.Dimension(80, 20));\r | |
469 | jButton2.setText("Ok");\r | |
470 | jButton2.addMouseListener(new java.awt.event.MouseAdapter() {\r | |
471 | public void mouseClicked(java.awt.event.MouseEvent e) {\r | |
472 | try {\r | |
473 | //\r | |
474 | // The installation directory must under workspace directory\r | |
475 | //\r | |
476 | locationcheck(jTextField.getText(), jTextField1.getText(), jTextField2.getText());\r | |
477 | } catch (Exception ee) {\r | |
478 | JOptionPane.showMessageDialog(frame, "Package Location Error!");\r | |
479 | return;\r | |
480 | }\r | |
481 | \r | |
482 | try {\r | |
483 | //\r | |
484 | // create a new FrameworkPkg object with user-selected package, current workspace location.\r | |
485 | // install the package to dest dir from jTextField2\r | |
486 | //\r | |
487 | int i = new FrameworkPkg(jTextField.getText(), jTextField1.getText())\r | |
488 | .install(jTextField2\r | |
489 | .getText());\r | |
490 | //\r | |
491 | // the package is installed smoothly\r | |
492 | //\r | |
493 | if (i == 0) {\r | |
494 | JOptionPane.showMessageDialog(frame, "Package" + jTextField.getText()\r | |
495 | + " Installed Successfully!");\r | |
496 | }\r | |
497 | } catch (BasePkgNotInstalled bpni) {\r | |
498 | //\r | |
499 | // exception no base package installed\r | |
500 | //\r | |
501 | JOptionPane\r | |
502 | .showMessageDialog(frame,\r | |
503 | "The Edk package needs to be installed before installing any other packages.");\r | |
504 | } catch (VerNotEqual vne) {\r | |
505 | //\r | |
506 | // show modal GUI PkgInstallTypeChooser with user selected package name, \r | |
507 | // current workspace location and the list of package info with same base name\r | |
508 | //\r | |
509 | ModalFrameUtil.showAsModal(new PkgInstallTypeChooser(jTextField.getText(),\r | |
510 | jTextField1.getText(), vne.getVersion()),\r | |
511 | pThis);\r | |
512 | \r | |
513 | } catch (GuidNotEqual gne) {\r | |
514 | //\r | |
515 | // show modal GUI PkgInstallTypeChooser with user selected package name, \r | |
516 | // current workspace location and the list of package info with same base name and version\r | |
517 | //\r | |
518 | ModalFrameUtil.showAsModal(new PkgInstallTypeChooser(jTextField.getText(),\r | |
519 | jTextField1.getText(), gne.getGuid()),\r | |
520 | pThis);\r | |
521 | \r | |
522 | } catch (SameAll sa) {\r | |
523 | //\r | |
524 | // the package with same (base, version, guid) already exists. confirm user action.\r | |
525 | // quit or replace the original info. (So only one package info entry in db file that may be triple same)\r | |
526 | //\r | |
527 | int retVal = JOptionPane\r | |
528 | .showConfirmDialog(\r | |
529 | frame,\r | |
530 | "Package already exists. Would you like to replace it?",\r | |
531 | "Package Installation", JOptionPane.YES_NO_OPTION);\r | |
532 | if (retVal == JOptionPane.YES_OPTION) {\r | |
533 | String installDir = sa.getVersion().listIterator().next().getPathArray(0).getStringValue();\r | |
534 | try {\r | |
535 | ForceInstallPkg f = new ForceInstallPkg(jTextField.getText(), jTextField1.getText());\r | |
536 | //\r | |
537 | // Get old packag info to meet the calling parameter layout of DbFileContents.updatePkgInfo\r | |
538 | // ForceInstallPkg will call it after installation to update package info.\r | |
539 | //\r | |
540 | f.setOldVersion(sa.getVersion().listIterator().next().getVersionArray(0));\r | |
541 | f.setOldGuid(sa.getVersion().listIterator().next().getGuidArray(0).getStringValue());\r | |
542 | int i = f.install(jTextField1.getText() + System.getProperty("file.separator") + installDir);\r | |
543 | if (i == 0) {\r | |
544 | JOptionPane.showMessageDialog(frame, "Package" + jTextField.getText()\r | |
545 | + " Installed Successfully!");\r | |
546 | }\r | |
547 | } catch (Exception sae) {\r | |
548 | System.out.println(sae.toString());\r | |
549 | JOptionPane.showMessageDialog(frame, "Extraction Error!");\r | |
550 | }\r | |
551 | }\r | |
552 | return;\r | |
553 | } catch (XmlException xmle) {\r | |
554 | System.out.println(xmle.toString());\r | |
555 | JOptionPane.showMessageDialog(frame, "Package Format Error!");\r | |
556 | } catch (DirSame ds) {\r | |
557 | //\r | |
558 | // You cannot install different packages into the same directory.\r | |
559 | //\r | |
560 | System.out.println(ds.toString());\r | |
561 | JOptionPane.showMessageDialog(frame,\r | |
562 | "Another Package Exists There, Please Select Another Directory!");\r | |
563 | } catch (Exception ext) {\r | |
564 | System.out.println(ext.toString());\r | |
565 | JOptionPane.showMessageDialog(frame, "Extraction Error!");\r | |
566 | }\r | |
567 | }\r | |
568 | });\r | |
569 | }\r | |
570 | return jButton2;\r | |
571 | }\r | |
572 | \r | |
573 | /**\r | |
574 | * This method initializes jButton3 \r | |
575 | * \r | |
576 | * @return javax.swing.JButton \r | |
577 | */\r | |
578 | private JButton getJButton3() {\r | |
579 | if (jButton3 == null) {\r | |
580 | jButton3 = new JButton();\r | |
581 | jButton3.setPreferredSize(new java.awt.Dimension(80, 20));\r | |
582 | jButton3.setText("Cancel");\r | |
583 | jButton3.addMouseListener(this);\r | |
584 | }\r | |
585 | return jButton3;\r | |
586 | \r | |
587 | }\r | |
588 | \r | |
589 | /**\r | |
590 | This method initializes jPanel3 \r | |
591 | \r | |
592 | @return javax.swing.JPanel \r | |
593 | */\r | |
594 | private JPanel getJPanel3() {\r | |
595 | if (jPanel3 == null) {\r | |
596 | jLabel = new JLabel();\r | |
597 | jLabel.setComponentOrientation(ComponentOrientation.UNKNOWN);\r | |
598 | jLabel.setHorizontalTextPosition(SwingConstants.TRAILING);\r | |
599 | jLabel.setText("Enter Package Location");\r | |
600 | jLabel.setHorizontalAlignment(SwingConstants.TRAILING);\r | |
601 | FlowLayout flowLayout6 = new FlowLayout();\r | |
602 | flowLayout6.setVgap(20);\r | |
603 | flowLayout6.setAlignment(FlowLayout.LEFT);\r | |
604 | jPanel3 = new JPanel();\r | |
605 | jPanel3.setLayout(flowLayout6);\r | |
606 | jPanel3.add(jLabel, null);\r | |
607 | }\r | |
608 | return jPanel3;\r | |
609 | }\r | |
610 | \r | |
611 | /**\r | |
612 | check user input validity\r | |
613 | \r | |
614 | @param s package path\r | |
615 | @param s1 workspace path\r | |
616 | @param s2 installation path\r | |
617 | @throws Exception\r | |
618 | **/\r | |
619 | private void locationcheck(String s, String s1, String s2) throws Exception {\r | |
620 | if (new File(s).isFile() == false)\r | |
621 | throw new Exception();\r | |
622 | if (new File(s1).isDirectory() == false)\r | |
623 | throw new Exception();\r | |
624 | if (s2.startsWith(s1) == false)\r | |
625 | throw new Exception();\r | |
626 | }\r | |
627 | \r | |
628 | \r | |
629 | public void mouseClicked(MouseEvent arg0) {\r | |
630 | // TODO Auto-generated method stub\r | |
631 | int retVal = JOptionPane.showConfirmDialog(frame, "Are you sure to exit?", "Quit", JOptionPane.YES_NO_OPTION);\r | |
632 | if (retVal == JOptionPane.YES_OPTION) {\r | |
633 | this.dispose();\r | |
634 | }\r | |
635 | return;\r | |
636 | }\r | |
637 | \r | |
638 | public void mouseEntered(MouseEvent arg0) {\r | |
639 | // TODO Auto-generated method stub\r | |
640 | \r | |
641 | }\r | |
642 | \r | |
643 | public void mouseExited(MouseEvent arg0) {\r | |
644 | // TODO Auto-generated method stub\r | |
645 | \r | |
646 | }\r | |
647 | \r | |
648 | public void mousePressed(MouseEvent arg0) {\r | |
649 | // TODO Auto-generated method stub\r | |
650 | \r | |
651 | }\r | |
652 | \r | |
653 | public void mouseReleased(MouseEvent arg0) {\r | |
654 | // TODO Auto-generated method stub\r | |
655 | \r | |
656 | }\r | |
657 | \r | |
658 | /**\r | |
659 | This method initializes jProgressBar \r | |
660 | \r | |
661 | @return javax.swing.JProgressBar \r | |
662 | **/\r | |
663 | private JProgressBar getJProgressBar() {\r | |
664 | if (jProgressBar == null) {\r | |
665 | jProgressBar = new JProgressBar();\r | |
666 | jProgressBar.setComponentOrientation(java.awt.ComponentOrientation.LEFT_TO_RIGHT);\r | |
667 | jProgressBar.setVisible(false);\r | |
668 | }\r | |
669 | return jProgressBar;\r | |
670 | }\r | |
671 | \r | |
672 | \r | |
673 | \r | |
674 | } // @jve:decl-index=0:visual-constraint="24,82"\r | |
675 | \r | |
676 | /**\r | |
677 | Derived from WindowAdapter, Event adapter for windowClosing event\r | |
678 | \r | |
679 | @since PackageEditor 1.0\r | |
680 | **/\r | |
681 | class GuiPkgInstallAdapter extends WindowAdapter {\r | |
682 | \r | |
683 | private JFrame frame = null;\r | |
684 | \r | |
685 | GuiPkgInstallAdapter(JFrame f) {\r | |
686 | super();\r | |
687 | frame = f;\r | |
688 | }\r | |
689 | \r | |
690 | /* (non-Javadoc)\r | |
691 | * @see java.awt.event.WindowAdapter#windowClosing(java.awt.event.WindowEvent)\r | |
692 | */\r | |
693 | @Override\r | |
694 | public void windowClosing(WindowEvent arg0) {\r | |
695 | // TODO Auto-generated method stub\r | |
696 | super.windowClosing(arg0);\r | |
697 | int retVal = JOptionPane.showConfirmDialog(frame, "Are you sure to exit?", "Quit",\r | |
698 | JOptionPane.YES_NO_OPTION);\r | |
699 | if (retVal == JOptionPane.YES_OPTION) {\r | |
700 | frame.dispose();\r | |
701 | }\r | |
702 | \r | |
703 | }\r | |
704 | \r | |
705 | }\r | |
706 | \r | |
707 | /**\r | |
708 | Filter out some specific type of file\r | |
709 | \r | |
710 | @since PackageEditor 1.0\r | |
711 | **/\r | |
712 | class PkgFileFilter extends FileFilter {\r | |
713 | \r | |
714 | ///\r | |
715 | /// hash table used to store filter info.\r | |
716 | ///\r | |
717 | private Hashtable<String, String> filters = null;\r | |
718 | \r | |
719 | \r | |
720 | public PkgFileFilter() {\r | |
721 | this.filters = new Hashtable<String, String>();\r | |
722 | }\r | |
723 | \r | |
724 | /**\r | |
725 | Create filter and add extension to hash table\r | |
726 | \r | |
727 | @param extension file extension string (e.g. "exe")\r | |
728 | **/\r | |
729 | public PkgFileFilter(String extension) {\r | |
730 | this();\r | |
731 | if(extension!=null) {\r | |
732 | addExtension(extension);\r | |
733 | }\r | |
734 | \r | |
735 | }\r | |
736 | \r | |
737 | public PkgFileFilter(String[] fileFilters) {\r | |
738 | this();\r | |
739 | int i = 0; \r | |
740 | while (i < fileFilters.length) {\r | |
741 | // add filters one by one\r | |
742 | addExtension(fileFilters[i]);\r | |
743 | i++;\r | |
744 | }\r | |
745 | \r | |
746 | }\r | |
747 | \r | |
748 | \r | |
749 | /* (non-Javadoc)\r | |
750 | * @see javax.swing.filechooser.FileFilter#accept(java.io.File)\r | |
751 | */\r | |
752 | public boolean accept(File f) {\r | |
753 | if (f != null) {\r | |
754 | if (f.isDirectory()) {\r | |
755 | return true;\r | |
756 | }\r | |
757 | \r | |
758 | if (getExtension(f) != null && filters.get(getExtension(f)) != null) {\r | |
759 | return true;\r | |
760 | }\r | |
761 | }\r | |
762 | return false;\r | |
763 | }\r | |
764 | \r | |
765 | \r | |
766 | /**\r | |
767 | Get the extension string of file\r | |
768 | \r | |
769 | @param f target file\r | |
770 | @return String\r | |
771 | **/\r | |
772 | public String getExtension(File f) {\r | |
773 | if (f != null) {\r | |
774 | int i = f.getName().lastIndexOf('.');\r | |
775 | if (i>0 && i<f.getName().length()-1) {\r | |
776 | return f.getName().substring(i+1).toLowerCase();\r | |
777 | }\r | |
778 | }\r | |
779 | return null;\r | |
780 | }\r | |
781 | \r | |
782 | \r | |
783 | /**\r | |
784 | Add extension info into hash table\r | |
785 | \r | |
786 | @param ext extension string for file name\r | |
787 | **/\r | |
788 | public void addExtension(String ext) {\r | |
789 | if (filters == null) {\r | |
790 | filters = new Hashtable<String, String>(5);\r | |
791 | }\r | |
792 | filters.put(ext.toLowerCase(), "ext");\r | |
793 | \r | |
794 | }\r | |
795 | \r | |
796 | /* (non-Javadoc)\r | |
797 | * @see javax.swing.filechooser.FileFilter#getDescription()\r | |
798 | */\r | |
799 | public String getDescription() {\r | |
800 | return null;\r | |
801 | }\r | |
802 | \r | |
803 | }\r | |
804 | \r |