]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/PackageEditor/src/org/tianocore/packaging/PkgInstallTypeChooser.java
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@671 6f19259b...
[mirror_edk2.git] / Tools / Source / PackageEditor / src / org / tianocore / packaging / PkgInstallTypeChooser.java
CommitLineData
878ddf1f 1/** @file\r
2 Java class PkgInstallTypeChooser is GUI for upgrade package installation.\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.Dimension;\r
16import java.awt.Toolkit;\r
17import java.awt.event.MouseEvent;\r
18import java.awt.event.MouseListener;\r
19import java.io.File;\r
20import java.util.List;\r
21import java.util.ListIterator;\r
22import java.util.Vector;\r
23\r
24import javax.swing.JFileChooser;\r
25import javax.swing.JFrame;\r
26import javax.swing.JOptionPane;\r
27import javax.swing.JPanel;\r
28import javax.swing.JDialog;\r
29import javax.swing.JRadioButton;\r
30import javax.swing.JButton;\r
31\r
32import org.tianocore.PackageListDocument;\r
33import javax.swing.JList;\r
34import javax.swing.JTextField;\r
35import javax.swing.JScrollPane;\r
36\r
37/**\r
38 GUI for speicial circumstances of package installation.\r
39 \r
40 @since PackageEditor 1.0\r
41**/\r
42public class PkgInstallTypeChooser extends JFrame implements MouseListener {\r
43\r
44 final static long serialVersionUID = 0;\r
45\r
46 static JFrame frame;\r
47\r
48 private JPanel jContentPane = null;\r
49\r
50 private JRadioButton jRadioButton = null;\r
51\r
52 private JRadioButton jRadioButton1 = null;\r
53\r
54 private JButton jButton = null;\r
55\r
56 private JButton jButton1 = null;\r
57\r
58 private String pn = null;\r
59\r
60 ///\r
61 /// list of package info from db file\r
62 ///\r
63 private List<PackageListDocument.PackageList.Package> dd = null;\r
64\r
65 private String wk = null;\r
66\r
67 private JList jList = null;\r
68 \r
69 private JScrollPane jScrollPane = null;\r
70\r
71 private JTextField jTextField = null;\r
72\r
73 private JButton jButton2 = null;\r
74\r
75 private JFileChooser chooser = null;\r
76\r
77 /**\r
78 This is the default constructor\r
79 **/\r
80 public PkgInstallTypeChooser(String pkgName, String wkSpace, List<PackageListDocument.PackageList.Package> destDir) {\r
81 super();\r
82 pn = pkgName;\r
83 dd = destDir;\r
84 wk = wkSpace;\r
85 initialize();\r
86 }\r
87\r
88 /**\r
89 This method initializes this\r
90 \r
91 @return void\r
92 **/\r
93 private void initialize() {\r
94 this.setSize(359, 328);\r
95 this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);\r
96 this.setTitle("Chooser Installation Type");\r
97 this.setContentPane(getJContentPane());\r
98 this.centerWindow();\r
99 this.insertList();\r
100 }\r
101\r
102 /**\r
103 Start the window at the center of screen\r
104 \r
105 **/\r
106 protected void centerWindow(int intWidth, int intHeight) {\r
107 Dimension d = Toolkit.getDefaultToolkit().getScreenSize();\r
108 this.setLocation((d.width - intWidth) / 2, (d.height - intHeight) / 2);\r
109 }\r
110\r
111 /**\r
112 Start the window at the center of screen\r
113 \r
114 **/\r
115 protected void centerWindow() {\r
116 centerWindow(this.getSize().width, this.getSize().height);\r
117 }\r
118\r
119 /**\r
120 initialize jList with package info. from db file\r
121 **/\r
122 private void insertList() {\r
123\r
124 Vector<String> v = new Vector<String>();\r
125\r
126 ListIterator lpi = dd.listIterator();\r
127 while (lpi.hasNext()) {\r
128 PackageListDocument.PackageList.Package p = (PackageListDocument.PackageList.Package) lpi.next();\r
129 v.addElement(p.getPackageNameArray(0).getStringValue() + " " + p.getVersionArray(0) + " "\r
130 + p.getGuidArray(0).getStringValue());\r
131 }\r
132 jList.setListData(v);\r
133 }\r
134\r
135 /**\r
136 This method initializes jContentPane\r
137 \r
138 @return javax.swing.JPanel\r
139 **/\r
140 private JPanel getJContentPane() {\r
141 if (jContentPane == null) {\r
142 jContentPane = new JPanel();\r
143 jContentPane.setLayout(null);\r
144 jContentPane.add(getJRadioButton(), null);\r
145 jContentPane.add(getJRadioButton1(), null);\r
146 jContentPane.add(getJButton(), null);\r
147 jContentPane.add(getJButton1(), null);\r
148 jContentPane.add(getJScrollPane(), null);\r
149 jContentPane.add(getJTextField(), null);\r
150 jContentPane.add(getJButton2(), null);\r
151 }\r
152 return jContentPane;\r
153 }\r
154\r
155 \r
156 private JRadioButton getJRadioButton() {\r
157 if (jRadioButton == null) {\r
158 jRadioButton = new JRadioButton();\r
159 jRadioButton.setBounds(new java.awt.Rectangle(17, 39, 186, 21));\r
160 jRadioButton.setSelected(true);\r
161 jRadioButton.setText("Reinstall Existing Package");\r
162 jRadioButton.addMouseListener(new java.awt.event.MouseAdapter() {\r
163 public void mouseClicked(java.awt.event.MouseEvent e) {\r
164 if (jRadioButton.isSelected()) {\r
165 jRadioButton1.setSelected(false);\r
166 jButton2.setEnabled(false);\r
167 jTextField.setEnabled(false);\r
168 jList.setEnabled(true);\r
169 return;\r
170 }\r
171 if (jRadioButton1.isSelected()) {\r
172 jRadioButton.setSelected(true);\r
173 jRadioButton1.setSelected(false);\r
174 jList.setEnabled(true);\r
175 return;\r
176 }\r
177\r
178 }\r
179 });\r
180 }\r
181 return jRadioButton;\r
182 }\r
183\r
184 private JRadioButton getJRadioButton1() {\r
185 if (jRadioButton1 == null) {\r
186 jRadioButton1 = new JRadioButton();\r
187 jRadioButton1.setBounds(new java.awt.Rectangle(17, 155, 176, 21));\r
188 jRadioButton1.setText("Install to Directory");\r
189 jRadioButton1.addMouseListener(new java.awt.event.MouseAdapter() {\r
190 public void mouseClicked(java.awt.event.MouseEvent e) {\r
191 if (jRadioButton1.isSelected()) {\r
192 jRadioButton.setSelected(false);\r
193 jList.setEnabled(false);\r
194 jButton2.setEnabled(true);\r
195 jTextField.setEnabled(true);\r
196 return;\r
197 }\r
198 if (jRadioButton.isSelected()) {\r
199 jRadioButton1.setSelected(true);\r
200 jRadioButton.setSelected(false);\r
201 jButton2.setEnabled(true);\r
202 jTextField.setEnabled(true);\r
203 return;\r
204 }\r
205 }\r
206 });\r
207 }\r
208 return jRadioButton1;\r
209 }\r
210\r
211 private JButton getJButton() {\r
212 if (jButton == null) {\r
213 jButton = new JButton();\r
214 jButton.setPreferredSize(new java.awt.Dimension(34, 20));\r
215 jButton.setSize(new java.awt.Dimension(76, 20));\r
216 jButton.setText("Ok");\r
217 jButton.setLocation(new java.awt.Point(141, 241));\r
218 jButton.addMouseListener(new java.awt.event.MouseAdapter() {\r
219 public void mouseClicked(java.awt.event.MouseEvent e) {\r
220 try {\r
221 int i = -1;\r
222 //\r
223 // user selects replace existing package\r
224 //\r
225 if (jRadioButton.isSelected()) {\r
226 int j = jList.getSelectedIndex();\r
227 if (j == -1) {\r
228 JOptionPane.showMessageDialog(JOptionPane.getRootFrame(),\r
229 "Please Select One Package to Replace!");\r
230 return;\r
231 }\r
232 //\r
233 // the sequence of jList is the same with List\r
234 //\r
235 String destDir = dd.get(j).getPathArray(0).getStringValue();\r
236 ForceInstallPkg f = new ForceInstallPkg(pn, wk);\r
237 //\r
238 // record the package info. to be replaced\r
239 //\r
240 f.setOldVersion(dd.get(j).getVersionArray(0));\r
241 f.setOldGuid(dd.get(j).getGuidArray(0).getStringValue());\r
242 i = f.install(wk + System.getProperty("file.separator") + destDir);\r
243 } else {\r
244 //\r
245 // user selects install to another directory\r
246 //\r
247 File f = new File(wk + System.getProperty("file.separator") + FrameworkPkg.dbConfigFile);\r
248 if (new DbFileContents(f).checkDir(jTextField.getText().substring(wk.length() + 1)) != 0) {\r
249 throw new DirSame();\r
250 }\r
251 i = new ForceInstallPkg(pn, wk).install(jTextField.getText());\r
252 }\r
253 if (i == 0) {\r
254 JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "Package " + pn\r
255 + " Installed Successfully!");\r
256 }\r
257 } catch (DirSame ds) {\r
258 System.out.println(ds.toString());\r
259 JOptionPane.showMessageDialog(frame,\r
260 "Another Package Exists There, Please Select Another Directory!");\r
261 } catch (Exception ee) {\r
262 System.out.println(ee.toString());\r
263 }\r
264 }\r
265 });\r
266 }\r
267 return jButton;\r
268 }\r
269\r
270 /**\r
271 * This method initializes jButton1 \r
272 * \r
273 * @return javax.swing.JButton \r
274 */\r
275 private JButton getJButton1() {\r
276 if (jButton1 == null) {\r
277 jButton1 = new JButton();\r
278 jButton1.setBounds(new java.awt.Rectangle(238, 241, 78, 20));\r
279 jButton1.setText("Cancel");\r
280 jButton1.setPreferredSize(new java.awt.Dimension(34, 20));\r
281 jButton1.addMouseListener(this);\r
282 }\r
283 return jButton1;\r
284 }\r
285\r
286 public void mouseClicked(MouseEvent arg0) {\r
287 // TODO Auto-generated method stub\r
288 this.dispose();\r
289 }\r
290\r
291 public void mouseEntered(MouseEvent arg0) {\r
292 // TODO Auto-generated method stub\r
293\r
294 }\r
295\r
296 public void mouseExited(MouseEvent arg0) {\r
297 // TODO Auto-generated method stub\r
298\r
299 }\r
300\r
301 public void mousePressed(MouseEvent arg0) {\r
302 // TODO Auto-generated method stub\r
303\r
304 }\r
305\r
306 public void mouseReleased(MouseEvent arg0) {\r
307 // TODO Auto-generated method stub\r
308\r
309 }\r
310\r
311 private JScrollPane getJScrollPane() {\r
312 if (jScrollPane == null) {\r
313 jScrollPane = new JScrollPane();\r
314 jScrollPane.setBounds(new java.awt.Rectangle(22, 68, 318, 58));\r
315 jScrollPane.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);\r
316 jScrollPane.setViewportView(getJList());\r
317 }\r
318 return jScrollPane;\r
319 }\r
320 \r
321 private JList getJList() {\r
322 if (jList == null) {\r
323 jList = new JList();\r
324 \r
325 jList.setBounds(new java.awt.Rectangle(22, 68, 318, 58));\r
326\r
327 }\r
328 return jList;\r
329 }\r
330\r
331 /**\r
332 * This method initializes jTextField \r
333 * \r
334 * @return javax.swing.JTextField \r
335 */\r
336 private JTextField getJTextField() {\r
337 if (jTextField == null) {\r
338 jTextField = new JTextField();\r
339 jTextField.setBounds(new java.awt.Rectangle(22, 184, 224, 20));\r
340 jTextField.setEnabled(false);\r
341 jTextField.setText(wk);\r
342 }\r
343 return jTextField;\r
344 }\r
345\r
346 private JButton getJButton2() {\r
347 if (jButton2 == null) {\r
348 jButton2 = new JButton();\r
349 jButton2.setLocation(new java.awt.Point(259, 183));\r
350 jButton2.setText("Browse");\r
351 jButton2.setEnabled(false);\r
352 jButton2.setSize(new java.awt.Dimension(81, 20));\r
353 jButton2.addMouseListener(new java.awt.event.MouseAdapter() {\r
354 public void mouseClicked(java.awt.event.MouseEvent e) {\r
355 if (chooser == null) {\r
356 chooser = new JFileChooser(wk);\r
357 }\r
358 chooser.setMultiSelectionEnabled(false);\r
359 chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);\r
360\r
361 int retval = chooser.showOpenDialog(frame);\r
362 if (retval == JFileChooser.APPROVE_OPTION) {\r
363 jTextField.setText(chooser.getSelectedFile().getPath());\r
364\r
365 }\r
366\r
367 }\r
368 });\r
369 }\r
370 return jButton2;\r
371 }\r
372\r
373} // @jve:decl-index=0:visual-constraint="134,45"\r