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