]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - Tools/Source/PackageEditor/src/org/tianocore/packaging/GuiPkgUninstall.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 / GuiPkgUninstall.java
... / ...
CommitLineData
1/** @file\r
2 Java class GuiPkgUninstall is GUI for 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 javax.swing.JPanel;\r
16import javax.swing.JFrame;\r
17import java.awt.FlowLayout;\r
18//import java.awt.GridLayout;\r
19import javax.swing.JLabel;\r
20import javax.swing.JTextField;\r
21import java.awt.Dimension;\r
22import javax.swing.JButton;\r
23import java.awt.ComponentOrientation;\r
24import java.awt.Font;\r
25import java.awt.Toolkit;\r
26import java.io.File;\r
27\r
28import javax.swing.JFileChooser;\r
29import javax.swing.JOptionPane;\r
30import javax.swing.SwingConstants;\r
31import javax.swing.JList;\r
32import javax.swing.JTextPane;\r
33import javax.swing.JScrollPane;\r
34import javax.swing.JTable;\r
35import javax.swing.table.DefaultTableModel;\r
36\r
37/**\r
38 GUI for package uninstallation.\r
39 \r
40 @since PackageEditor 1.0\r
41**/\r
42public class GuiPkgUninstall extends JFrame {\r
43\r
44 final static long serialVersionUID = 0;\r
45 \r
46 static JFrame frame;\r
47\r
48 private JPanel jPanel = null;\r
49\r
50 private JLabel jLabel = null;\r
51\r
52 private JTextField jTextField = null;\r
53\r
54 private JButton jButton = null;\r
55\r
56 private JLabel jLabel1 = null;\r
57\r
58 private JPanel jPanel1 = null;\r
59\r
60 private JButton jButton1 = null;\r
61\r
62 private JButton jButton2 = null;\r
63\r
64 private JScrollPane jScrollPane = null;\r
65\r
66 private JTable jTable = null;\r
67\r
68 private JButton jButton3 = null;\r
69 \r
70 private PkgRemoveTableModel model = null;\r
71 \r
72 private DbFileContents dfc = null;\r
73 \r
74 private JFrame pThis = null;\r
75\r
76 \r
77 public GuiPkgUninstall() {\r
78 super();\r
79 initialize();\r
80 }\r
81\r
82 \r
83 private void initialize() {\r
84 this.setSize(481, 404);\r
85 this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);\r
86 this.setContentPane(getJPanel());\r
87 this.setTitle("Package Uninstallation");\r
88 this.centerWindow();\r
89 pThis = this;\r
90 }\r
91\r
92 /**\r
93 Start the window at the center of screen\r
94 \r
95 **/\r
96 protected void centerWindow(int intWidth, int intHeight) {\r
97 Dimension d = Toolkit.getDefaultToolkit().getScreenSize();\r
98 this.setLocation((d.width - intWidth) / 2, (d.height - intHeight) / 2);\r
99 }\r
100\r
101 /**\r
102 Start the window at the center of screen\r
103 \r
104 **/\r
105 protected void centerWindow() {\r
106 centerWindow(this.getSize().width, this.getSize().height);\r
107 }\r
108\r
109 /**\r
110 initialize table contents from db file\r
111 \r
112 @param f FrameworkDatabase.db file under workspace\r
113 **/\r
114 protected void loadDB(File f) {\r
115 if (!f.exists()) {\r
116 JOptionPane.showMessageDialog(frame,\r
117 "No FrameworkDatabase.db File!");\r
118 return;\r
119 }\r
120 dfc = new DbFileContents(f);\r
121 if (dfc.getPackageCount() == 0) {\r
122 return;\r
123 }\r
124 //\r
125 // Get package list info. and add them one by one into table\r
126 //\r
127 String[][] saa = new String[dfc.getPackageCount()][5];\r
128 dfc.getPackageList(saa);\r
129 int i = 0;\r
130 while (i < saa.length) {\r
131 model.addRow(saa[i]);\r
132 i++;\r
133 }\r
134 \r
135 }\r
136 /**\r
137 save package info. from table to db file\r
138 **/\r
139 protected void save() {\r
140 dfc.removePackageList();\r
141 int rowCount = jTable.getRowCount();\r
142 int i = 0;\r
143 while (i < rowCount) {\r
144 \r
145 dfc.genPackage(jTable.getValueAt(i, 0).toString(), jTable.getValueAt(i, 1).toString(),\r
146 jTable.getValueAt(i, 2).toString(), jTable.getValueAt(i, 3).toString(),\r
147 jTable.getValueAt(i, 4).toString());\r
148 i++;\r
149 }\r
150 dfc.saveAs();\r
151 }\r
152 \r
153 private JPanel getJPanel() {\r
154 if (jPanel == null) {\r
155 jLabel1 = new JLabel();\r
156 jLabel1.setBounds(new java.awt.Rectangle(20, 83, 141, 16));\r
157 jLabel1.setText(" Packages Installed");\r
158 jLabel = new JLabel();\r
159 jLabel.setBounds(new java.awt.Rectangle(17, 16, 171, 16));\r
160 jLabel.setText(" Enter Workspace Location");\r
161 jPanel = new JPanel();\r
162 jPanel.setLayout(null);\r
163 jPanel.add(jLabel, null);\r
164 jPanel.add(getJTextField(), null);\r
165 jPanel.add(getJButton(), null);\r
166 jPanel.add(jLabel1, null);\r
167 jPanel.add(getJPanel1(), null);\r
168 jPanel.add(getJScrollPane(), null);\r
169 }\r
170 return jPanel;\r
171 }\r
172\r
173 /**\r
174 This method initializes jTextField \r
175 \r
176 @return javax.swing.JTextField \r
177 **/\r
178 private JTextField getJTextField() {\r
179 if (jTextField == null) {\r
180 jTextField = new JTextField();\r
181 jTextField.setBounds(new java.awt.Rectangle(16, 41, 350, 20));\r
182 jTextField.setHorizontalAlignment(JTextField.LEFT);\r
183 jTextField.setEditable(false);\r
184 jTextField.setText(System.getenv("WORKSPACE"));\r
185 jTextField.setPreferredSize(new Dimension(350, 20));\r
186 }\r
187 return jTextField;\r
188 }\r
189\r
190 /**\r
191 This method initializes jButton \r
192 \r
193 @return javax.swing.JButton \r
194 **/\r
195 private JButton getJButton() {\r
196 if (jButton == null) {\r
197 jButton = new JButton();\r
198 jButton.setBounds(new java.awt.Rectangle(372,40,78,20));\r
199 jButton.setFont(new Font("Dialog", Font.BOLD, 12));\r
200 jButton.setPreferredSize(new Dimension(80, 20));\r
201 jButton.setToolTipText("Where is the package?");\r
202 jButton.setHorizontalAlignment(SwingConstants.LEFT);\r
203 jButton.setHorizontalTextPosition(SwingConstants.CENTER);\r
204 jButton.setText("Browse");\r
205 jButton.addMouseListener(new java.awt.event.MouseAdapter() {\r
206 public void mouseClicked(java.awt.event.MouseEvent e) {\r
207 //\r
208 // user can select another workspace directory\r
209 //\r
210 JFileChooser chooser = new JFileChooser();\r
211 chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);\r
212 chooser.setMultiSelectionEnabled(false);\r
213 int retval = chooser.showOpenDialog(frame);\r
214 if (retval == JFileChooser.APPROVE_OPTION) {\r
215 //\r
216 // update table when user selects a new workspace directory\r
217 //\r
218 jTextField.setText(chooser.getSelectedFile().getPath());\r
219 File f = new File(chooser.getSelectedFile(), FrameworkPkg.dbConfigFile);\r
220 loadDB(f);\r
221 }\r
222 }\r
223 });\r
224 }\r
225 return jButton;\r
226 }\r
227\r
228 /**\r
229 This method initializes jPanel1 \r
230 \r
231 @return javax.swing.JPanel \r
232 **/\r
233 private JPanel getJPanel1() {\r
234 if (jPanel1 == null) {\r
235 FlowLayout flowLayout = new FlowLayout();\r
236 flowLayout.setAlignment(java.awt.FlowLayout.LEFT);\r
237 flowLayout.setHgap(20);\r
238 jPanel1 = new JPanel();\r
239 jPanel1.setLayout(flowLayout);\r
240 jPanel1.setBounds(new java.awt.Rectangle(133,310,318,53));\r
241 jPanel1.add(getJButton3(), null);\r
242 jPanel1.add(getJButton1(), null);\r
243 jPanel1.add(getJButton2(), null);\r
244 }\r
245 return jPanel1;\r
246 }\r
247\r
248 /**\r
249 This method initializes jButton1 \r
250 \r
251 @return javax.swing.JButton \r
252 **/\r
253 private JButton getJButton1() {\r
254 if (jButton1 == null) {\r
255 jButton1 = new JButton();\r
256 jButton1.setPreferredSize(new java.awt.Dimension(85, 20));\r
257 jButton1.setText("Ok");\r
258 jButton1.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);\r
259 jButton1.setEnabled(true);\r
260 jButton1.addMouseListener(new java.awt.event.MouseAdapter() {\r
261 public void mouseClicked(java.awt.event.MouseEvent e) {\r
262 if (dfc != null) {\r
263 //\r
264 // save package info. to file before exit\r
265 //\r
266 save();\r
267 }\r
268 pThis.dispose();\r
269 }\r
270 });\r
271 }\r
272 return jButton1;\r
273 }\r
274\r
275 /**\r
276 This method initializes jButton2 \r
277 \r
278 @return javax.swing.JButton \r
279 **/\r
280 private JButton getJButton2() {\r
281 if (jButton2 == null) {\r
282 jButton2 = new JButton();\r
283 jButton2.setPreferredSize(new java.awt.Dimension(85, 20));\r
284 jButton2.setText("Cancel");\r
285 jButton2.addMouseListener(new java.awt.event.MouseAdapter() {\r
286 public void mouseClicked(java.awt.event.MouseEvent e) {\r
287 pThis.dispose();\r
288 }\r
289 });\r
290 }\r
291 return jButton2;\r
292 }\r
293\r
294 /**\r
295 This method initializes jScrollPane \r
296 \r
297 @return javax.swing.JScrollPane \r
298 **/\r
299 private JScrollPane getJScrollPane() {\r
300 if (jScrollPane == null) {\r
301 jScrollPane = new JScrollPane();\r
302 jScrollPane.setBounds(new java.awt.Rectangle(20,108,431,194));\r
303 jScrollPane.setViewportView(getJTable());\r
304 }\r
305 return jScrollPane;\r
306 }\r
307\r
308 /**\r
309 This method initializes jTable \r
310 \r
311 @return javax.swing.JTable \r
312 **/\r
313 private JTable getJTable() {\r
314 if (jTable == null) {\r
315 model = new PkgRemoveTableModel();\r
316 jTable = new JTable(model);\r
317 jTable.setRowHeight(20);\r
318 jTable.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);\r
319 jTable.setRowSelectionAllowed(true);\r
320 model.addColumn("PackageName");\r
321 model.addColumn("Version");\r
322 model.addColumn("GUID");\r
323 model.addColumn("Path");\r
324 model.addColumn("InstallDate");\r
325 File f = new File(jTextField.getText(), FrameworkPkg.dbConfigFile);\r
326 loadDB(f);\r
327 }\r
328 return jTable;\r
329 }\r
330\r
331 /**\r
332 This method initializes jButton3 \r
333 \r
334 @return javax.swing.JButton \r
335 **/\r
336 private JButton getJButton3() {\r
337 if (jButton3 == null) {\r
338 jButton3 = new JButton();\r
339 jButton3.setText("Remove");\r
340 jButton3.setPreferredSize(new java.awt.Dimension(85,20));\r
341 jButton3.addMouseListener(new java.awt.event.MouseAdapter() {\r
342 public void mouseClicked(java.awt.event.MouseEvent e) {\r
343 if (model != null){\r
344 int index = jTable.getSelectedRow();\r
345 if (index > -1) {\r
346 model.removeRow(index);\r
347 }\r
348 }\r
349 }\r
350 });\r
351 }\r
352 return jButton3;\r
353 }\r
354\r
355} // @jve:decl-index=0:visual-constraint="10,10"\r
356\r
357/**\r
358 Derived table model which disables table edit\r
359 \r
360 @since PackageEditor 1.0\r
361**/\r
362class PkgRemoveTableModel extends DefaultTableModel {\r
363 PkgRemoveTableModel() {\r
364 super();\r
365 }\r
366 \r
367 public boolean isCellEditable (int row, int col) {\r
368 return false;\r
369 }\r
370}\r