]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/far/deleteui/DeleteStepTwo.java
Fixed grammar in text messages.
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / far / deleteui / DeleteStepTwo.java
CommitLineData
5a24e806 1/** @file\r
2\r
3 Copyright (c) 2006, Intel Corporation\r
4 All rights reserved. This program and the accompanying materials\r
5 are licensed and made available under the terms and conditions of the BSD License\r
6 which accompanies this distribution. The full text of the license may be found at\r
7 http://opensource.org/licenses/bsd-license.php\r
8 \r
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
11 \r
12 **/\r
13\r
14package org.tianocore.frameworkwizard.far.deleteui;\r
15\r
16import java.awt.Dimension;\r
17import java.awt.Toolkit;\r
18import java.awt.event.MouseEvent;\r
19import java.awt.event.MouseListener;\r
20import java.io.File;\r
21import java.util.Iterator;\r
22import java.util.LinkedHashSet;\r
23import java.util.Set;\r
24import java.util.Vector;\r
25\r
26import javax.swing.ButtonGroup;\r
27import javax.swing.JPanel;\r
28import javax.swing.JButton;\r
29import javax.swing.JTextArea;\r
30import javax.swing.JLabel;\r
31import javax.swing.JRadioButton;\r
32\r
33import org.tianocore.frameworkwizard.common.DataType;\r
34import org.tianocore.frameworkwizard.common.ui.IDialog;\r
35import org.tianocore.frameworkwizard.far.FarIdentification;\r
2e39c718 36import org.tianocore.frameworkwizard.far.FarStringDefinition;\r
5a24e806 37import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
38import org.tianocore.frameworkwizard.platform.PlatformIdentification;\r
39import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
40\r
41public class DeleteStepTwo extends IDialog implements MouseListener {\r
42\r
43 /**\r
44 * \r
45 */\r
46 private static final long serialVersionUID = -1333748185798962746L;\r
47\r
48 private JPanel jContentPane = null;\r
49\r
50 private JButton jButtonCancel = null;\r
51\r
52 private JButton jButtonFinish = null;\r
53\r
54 private JButton jButtonPrevious = null;\r
55\r
56 private JTextArea jTextArea = null;\r
57\r
58 private JLabel jLabel = null;\r
59\r
60 private JRadioButton jRadioButton = null;\r
61\r
62 private JRadioButton jRadioButton1 = null;\r
63\r
64 private DeleteStepOne stepOne = null;\r
65\r
66 public DeleteStepTwo(IDialog iDialog, boolean modal, DeleteStepOne stepOne) {\r
67 this(iDialog, modal);\r
68 this.stepOne = stepOne;\r
69 }\r
70\r
71 /**\r
72 * This method initializes jButtonCancel \r
73 * \r
74 * @return javax.swing.JButton \r
75 */\r
76 private JButton getJButtonCancel() {\r
77 if (jButtonCancel == null) {\r
78 jButtonCancel = new JButton();\r
79 jButtonCancel.setBounds(new java.awt.Rectangle(570, 330, 90, 20));\r
80 jButtonCancel.setText("Cancel");\r
81 jButtonCancel.addMouseListener(this);\r
82 }\r
83 return jButtonCancel;\r
84 }\r
85\r
86 /**\r
87 * This method initializes jButtonFinish \r
88 * \r
89 * @return javax.swing.JButton \r
90 */\r
91 private JButton getJButtonFinish() {\r
92 if (jButtonFinish == null) {\r
93 jButtonFinish = new JButton();\r
94 jButtonFinish.setBounds(new java.awt.Rectangle(470, 330, 90, 20));\r
95 jButtonFinish.setText("Finish");\r
96 jButtonFinish.addMouseListener(this);\r
97 }\r
98 return jButtonFinish;\r
99 }\r
100\r
101 /**\r
102 * This method initializes jButtonPrevious \r
103 * \r
104 * @return javax.swing.JButton \r
105 */\r
106 private JButton getJButtonPrevious() {\r
107 if (jButtonPrevious == null) {\r
108 jButtonPrevious = new JButton();\r
109 jButtonPrevious.setBounds(new java.awt.Rectangle(370, 330, 90, 20));\r
110 jButtonPrevious.setText("Previous");\r
111 jButtonPrevious.addMouseListener(this);\r
112 }\r
113 return jButtonPrevious;\r
114 }\r
115\r
116 /**\r
117 * This method initializes jTextArea \r
118 * \r
119 * @return javax.swing.JTextArea \r
120 */\r
121 private JTextArea getJTextArea() {\r
122 if (jTextArea == null) {\r
123 jTextArea = new JTextArea();\r
124 jTextArea.setBounds(new java.awt.Rectangle(30, 7, 642, 50));\r
125 jTextArea.setText("Step 2: Choose Delete Mode. \n");\r
156ed4d0 126 jTextArea.append("Mode 1 Only remove registation information from the WORKSPACE. \n");\r
127 jTextArea.append("Mode 2 Also delete all files and directories from file system. ");\r
5a24e806 128 jTextArea.setEditable(false);\r
129 }\r
130 return jTextArea;\r
131 }\r
132\r
133 /**\r
134 * This method initializes jRadioButton \r
135 * \r
136 * @return javax.swing.JRadioButton \r
137 */\r
138 private JRadioButton getJRadioButton() {\r
139 if (jRadioButton == null) {\r
140 jRadioButton = new JRadioButton();\r
156ed4d0 141 jRadioButton.setBounds(new java.awt.Rectangle(40,100,440,20));\r
5a24e806 142 jRadioButton.setSelected(true);\r
156ed4d0 143 jRadioButton.setText("Mode 1: Only remove registration information from the WORKSPACE.");\r
5a24e806 144 }\r
145 return jRadioButton;\r
146 }\r
147\r
148 /**\r
149 * This method initializes jRadioButton1 \r
150 * \r
151 * @return javax.swing.JRadioButton \r
152 */\r
153 private JRadioButton getJRadioButton1() {\r
154 if (jRadioButton1 == null) {\r
155 jRadioButton1 = new JRadioButton();\r
156ed4d0 156 jRadioButton1.setBounds(new java.awt.Rectangle(40,140,440,20));\r
157 jRadioButton1.setText("Mode 2: Delete ALL related files and directories from the WORKSPACE.");\r
5a24e806 158 }\r
159 return jRadioButton1;\r
160 }\r
161\r
162 /**\r
163 * This is the default constructor\r
164 */\r
165 public DeleteStepTwo(IDialog iDialog, boolean modal) {\r
166 super(iDialog, modal);\r
167 initialize();\r
168 }\r
169\r
170 /**\r
171 * This method initializes this\r
172 * \r
173 * @return void\r
174 */\r
175 private void initialize() {\r
176 this.setSize(700, 400);\r
177 this.setContentPane(getJContentPane());\r
2e39c718 178 this.setTitle(FarStringDefinition.DELETE_STEP_TWO_TITLE);\r
5a24e806 179 Dimension d = Toolkit.getDefaultToolkit().getScreenSize();\r
180 this.setLocation((d.width - this.getSize().width) / 2, (d.height - this.getSize().height) / 2);\r
181 }\r
182\r
183 /**\r
184 * This method initializes jContentPane\r
185 * \r
186 * @return javax.swing.JPanel\r
187 */\r
188 private JPanel getJContentPane() {\r
189 if (jContentPane == null) {\r
190 jLabel = new JLabel();\r
191 jLabel.setBounds(new java.awt.Rectangle(30, 70, 200, 20));\r
192 jLabel.setText("Select delete mode: ");\r
193 jContentPane = new JPanel();\r
194 jContentPane.setLayout(null);\r
195 jContentPane.add(getJButtonCancel(), null);\r
196 jContentPane.add(getJButtonFinish(), null);\r
197 jContentPane.add(getJButtonPrevious(), null);\r
198 jContentPane.add(getJTextArea(), null);\r
199 jContentPane.add(jLabel, null);\r
200 ButtonGroup group = new ButtonGroup();\r
201 group.add(getJRadioButton());\r
202 group.add(getJRadioButton1());\r
203 jContentPane.add(getJRadioButton(), null);\r
204 jContentPane.add(getJRadioButton1(), null);\r
205 }\r
206 return jContentPane;\r
207 }\r
208\r
209 public void mouseClicked(MouseEvent e) {\r
210 if (e.getSource() == jButtonCancel) {\r
211 this.setVisible(false);\r
212 this.dispose();\r
213 } else if (e.getSource() == jButtonFinish) {\r
214 FarIdentification far = stepOne.getSelecedFar();\r
215 WorkspaceTools wt = new WorkspaceTools();\r
216 //\r
217 // If remove all source files\r
218 //\r
219 if (jRadioButton1.isSelected()) {\r
220\r
221 Vector<PackageIdentification> removePackages = wt.getPackagesByFar(far);\r
222 Vector<PlatformIdentification> removePlatforms = wt.getPlatformsByFar(far);\r
223\r
224 Vector<PlatformIdentification> allPlatforms = wt.getAllPlatforms();\r
225 Set<File> allPlatformFiles = new LinkedHashSet<File>();\r
226\r
227 Iterator<PlatformIdentification> iter = allPlatforms.iterator();\r
228 while (iter.hasNext()) {\r
229 allPlatformFiles.add(iter.next().getFpdFile());\r
230 }\r
231\r
232 //\r
233 // For all platforms, only remove its FPD file\r
234 //\r
235 Iterator<PlatformIdentification> platfomrIter = removePlatforms.iterator();\r
236 while (platfomrIter.hasNext()) {\r
237 PlatformIdentification item = platfomrIter.next();\r
238 allPlatformFiles.remove(item.getFpdFile());\r
239 File parentDir = item.getFpdFile().getParentFile();\r
240 item.getFpdFile().delete();\r
241 //\r
242 // Remove all empty parent dir\r
243 //\r
244 while (parentDir.listFiles().length == 0) {\r
245 File tempFile = parentDir;\r
246 parentDir = parentDir.getParentFile();\r
247 tempFile.delete();\r
248 }\r
249 }\r
250\r
251 //\r
252 // For all packages, remove all files. \r
253 // Exception FPD file still in DB\r
254 //\r
255\r
256 Iterator<PackageIdentification> packageIter = removePackages.iterator();\r
257 while (packageIter.hasNext()) {\r
258 PackageIdentification item = packageIter.next();\r
259 Set<File> deleteFiles = new LinkedHashSet<File>();\r
260 recursiveDir(deleteFiles, item.getSpdFile().getParentFile(), allPlatformFiles);\r
261 Iterator<File> iterDeleteFile = deleteFiles.iterator();\r
262 while (iterDeleteFile.hasNext()) {\r
263 deleteFiles(iterDeleteFile.next());\r
264 }\r
265 //\r
266 // Remove all empty parent dir\r
267 //\r
268 File parentDir = item.getSpdFile().getParentFile();\r
269 while (parentDir.listFiles().length == 0) {\r
270 File tempFile = parentDir;\r
271 parentDir = parentDir.getParentFile();\r
272 tempFile.delete();\r
273 }\r
274 }\r
275 }\r
276\r
277 //\r
278 // Update DB file\r
279 //\r
280 wt.removeFarFromDb(far);\r
281\r
282 this.setVisible(false);\r
283 this.stepOne.returnType = DataType.RETURN_TYPE_OK;\r
284 this.dispose();\r
285 } else if (e.getSource() == jButtonPrevious) {\r
286 this.setVisible(false);\r
287 stepOne.setVisible(true);\r
288 }\r
289 }\r
290\r
291 public void mousePressed(MouseEvent e) {\r
292 // TODO Auto-generated method stub\r
293\r
294 }\r
295\r
296 public void mouseReleased(MouseEvent e) {\r
297 // TODO Auto-generated method stub\r
298\r
299 }\r
300\r
301 public void mouseEntered(MouseEvent e) {\r
302 // TODO Auto-generated method stub\r
303\r
304 }\r
305\r
306 public void mouseExited(MouseEvent e) {\r
307 // TODO Auto-generated method stub\r
308\r
309 }\r
310\r
311 private void recursiveDir(Set<File> files, File dir, Set<File> platformFiles) {\r
312 File[] fileList = dir.listFiles();\r
313 for (int i = 0; i < fileList.length; i++) {\r
314 if (fileList[i].isFile()) {\r
315 if (!platformFiles.contains(fileList[i])) {\r
316 files.add(fileList[i]);\r
317 }\r
318 } else {\r
319 if (isContain(fileList[i], platformFiles)) {\r
320 recursiveDir(files, fileList[i], platformFiles);\r
321 } else {\r
322 files.add(fileList[i]);\r
323 }\r
324 }\r
325 }\r
326 }\r
327\r
328 private void deleteFiles(File file) {\r
329 if (file.isDirectory()) {\r
330 File[] files = file.listFiles();\r
331 for (int i = 0; i < files.length; i++) {\r
332 deleteFiles(files[i]);\r
333 }\r
334 }\r
335 file.delete();\r
336 }\r
337\r
338 private boolean isContain(File dir, Set<File> platformFiles) {\r
339 Iterator<File> iter = platformFiles.iterator();\r
340 while (iter.hasNext()) {\r
341 File file = iter.next();\r
342 if (file.getPath().startsWith(dir.getPath())) {\r
343 //\r
344 // continue this FPD file\r
345 //\r
346 return true;\r
347 }\r
348 }\r
349 return false;\r
350 }\r
351}\r