+++ /dev/null
-/** @file\r
-\r
- Copyright (c) 2006, Intel Corporation\r
- All rights reserved. This program and the accompanying materials\r
- are licensed and made available under the terms and conditions of the BSD License\r
- which accompanies this distribution. The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php\r
- \r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
- \r
- **/\r
-\r
-package org.tianocore.frameworkwizard.far.deleteui;\r
-\r
-import java.awt.Dimension;\r
-import java.awt.Toolkit;\r
-import java.awt.event.MouseEvent;\r
-import java.awt.event.MouseListener;\r
-import java.io.File;\r
-import java.util.Iterator;\r
-import java.util.LinkedHashSet;\r
-import java.util.Set;\r
-import java.util.Vector;\r
-\r
-import javax.swing.ButtonGroup;\r
-import javax.swing.JPanel;\r
-import javax.swing.JButton;\r
-import javax.swing.JTextArea;\r
-import javax.swing.JLabel;\r
-import javax.swing.JRadioButton;\r
-\r
-import org.tianocore.frameworkwizard.common.DataType;\r
-import org.tianocore.frameworkwizard.common.ui.IDialog;\r
-import org.tianocore.frameworkwizard.far.FarIdentification;\r
-import org.tianocore.frameworkwizard.far.FarStringDefinition;\r
-import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
-import org.tianocore.frameworkwizard.platform.PlatformIdentification;\r
-import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
-\r
-public class DeleteStepTwo extends IDialog implements MouseListener {\r
-\r
- /**\r
- * \r
- */\r
- private static final long serialVersionUID = -1333748185798962746L;\r
-\r
- private JPanel jContentPane = null;\r
-\r
- private JButton jButtonCancel = null;\r
-\r
- private JButton jButtonFinish = null;\r
-\r
- private JButton jButtonPrevious = null;\r
-\r
- private JTextArea jTextArea = null;\r
-\r
- private JLabel jLabel = null;\r
-\r
- private JRadioButton jRadioButton = null;\r
-\r
- private JRadioButton jRadioButton1 = null;\r
-\r
- private DeleteStepOne stepOne = null;\r
-\r
- public DeleteStepTwo(IDialog iDialog, boolean modal, DeleteStepOne stepOne) {\r
- this(iDialog, modal);\r
- this.stepOne = stepOne;\r
- }\r
-\r
- /**\r
- * This method initializes jButtonCancel \r
- * \r
- * @return javax.swing.JButton \r
- */\r
- private JButton getJButtonCancel() {\r
- if (jButtonCancel == null) {\r
- jButtonCancel = new JButton();\r
- jButtonCancel.setBounds(new java.awt.Rectangle(570, 330, 90, 20));\r
- jButtonCancel.setText("Cancel");\r
- jButtonCancel.addMouseListener(this);\r
- }\r
- return jButtonCancel;\r
- }\r
-\r
- /**\r
- * This method initializes jButtonFinish \r
- * \r
- * @return javax.swing.JButton \r
- */\r
- private JButton getJButtonFinish() {\r
- if (jButtonFinish == null) {\r
- jButtonFinish = new JButton();\r
- jButtonFinish.setBounds(new java.awt.Rectangle(470, 330, 90, 20));\r
- jButtonFinish.setText("Finish");\r
- jButtonFinish.addMouseListener(this);\r
- }\r
- return jButtonFinish;\r
- }\r
-\r
- /**\r
- * This method initializes jButtonPrevious \r
- * \r
- * @return javax.swing.JButton \r
- */\r
- private JButton getJButtonPrevious() {\r
- if (jButtonPrevious == null) {\r
- jButtonPrevious = new JButton();\r
- jButtonPrevious.setBounds(new java.awt.Rectangle(370, 330, 90, 20));\r
- jButtonPrevious.setText("Previous");\r
- jButtonPrevious.addMouseListener(this);\r
- }\r
- return jButtonPrevious;\r
- }\r
-\r
- /**\r
- * This method initializes jTextArea \r
- * \r
- * @return javax.swing.JTextArea \r
- */\r
- private JTextArea getJTextArea() {\r
- if (jTextArea == null) {\r
- jTextArea = new JTextArea();\r
- jTextArea.setBounds(new java.awt.Rectangle(30, 7, 642, 50));\r
- jTextArea.setText("Step 2: Choose Delete Mode. \n");\r
- jTextArea.append("Mode 1 Only remove registation information from the WORKSPACE. \n");\r
- jTextArea.append("Mode 2 Also delete all files and directories from file system. ");\r
- jTextArea.setEditable(false);\r
- }\r
- return jTextArea;\r
- }\r
-\r
- /**\r
- * This method initializes jRadioButton \r
- * \r
- * @return javax.swing.JRadioButton \r
- */\r
- private JRadioButton getJRadioButton() {\r
- if (jRadioButton == null) {\r
- jRadioButton = new JRadioButton();\r
- jRadioButton.setBounds(new java.awt.Rectangle(40,100,440,20));\r
- jRadioButton.setSelected(true);\r
- jRadioButton.setText("Mode 1: Only remove registration information from the WORKSPACE.");\r
- }\r
- return jRadioButton;\r
- }\r
-\r
- /**\r
- * This method initializes jRadioButton1 \r
- * \r
- * @return javax.swing.JRadioButton \r
- */\r
- private JRadioButton getJRadioButton1() {\r
- if (jRadioButton1 == null) {\r
- jRadioButton1 = new JRadioButton();\r
- jRadioButton1.setBounds(new java.awt.Rectangle(40,140,440,20));\r
- jRadioButton1.setText("Mode 2: Delete ALL related files and directories from the WORKSPACE.");\r
- }\r
- return jRadioButton1;\r
- }\r
-\r
- /**\r
- * This is the default constructor\r
- */\r
- public DeleteStepTwo(IDialog iDialog, boolean modal) {\r
- super(iDialog, modal);\r
- initialize();\r
- }\r
-\r
- /**\r
- * This method initializes this\r
- * \r
- * @return void\r
- */\r
- private void initialize() {\r
- this.setSize(700, 400);\r
- this.setContentPane(getJContentPane());\r
- this.setTitle(FarStringDefinition.DELETE_STEP_TWO_TITLE);\r
- Dimension d = Toolkit.getDefaultToolkit().getScreenSize();\r
- this.setLocation((d.width - this.getSize().width) / 2, (d.height - this.getSize().height) / 2);\r
- }\r
-\r
- /**\r
- * This method initializes jContentPane\r
- * \r
- * @return javax.swing.JPanel\r
- */\r
- private JPanel getJContentPane() {\r
- if (jContentPane == null) {\r
- jLabel = new JLabel();\r
- jLabel.setBounds(new java.awt.Rectangle(30, 70, 200, 20));\r
- jLabel.setText("Select delete mode: ");\r
- jContentPane = new JPanel();\r
- jContentPane.setLayout(null);\r
- jContentPane.add(getJButtonCancel(), null);\r
- jContentPane.add(getJButtonFinish(), null);\r
- jContentPane.add(getJButtonPrevious(), null);\r
- jContentPane.add(getJTextArea(), null);\r
- jContentPane.add(jLabel, null);\r
- ButtonGroup group = new ButtonGroup();\r
- group.add(getJRadioButton());\r
- group.add(getJRadioButton1());\r
- jContentPane.add(getJRadioButton(), null);\r
- jContentPane.add(getJRadioButton1(), null);\r
- }\r
- return jContentPane;\r
- }\r
-\r
- public void mouseClicked(MouseEvent e) {\r
- if (e.getSource() == jButtonCancel) {\r
- this.setVisible(false);\r
- this.dispose();\r
- } else if (e.getSource() == jButtonFinish) {\r
- FarIdentification far = stepOne.getSelecedFar();\r
- WorkspaceTools wt = new WorkspaceTools();\r
- //\r
- // If remove all source files\r
- //\r
- if (jRadioButton1.isSelected()) {\r
-\r
- Vector<PackageIdentification> removePackages = wt.getPackagesByFar(far);\r
- Vector<PlatformIdentification> removePlatforms = wt.getPlatformsByFar(far);\r
-\r
- Vector<PlatformIdentification> allPlatforms = wt.getAllPlatforms();\r
- Set<File> allPlatformFiles = new LinkedHashSet<File>();\r
-\r
- Iterator<PlatformIdentification> iter = allPlatforms.iterator();\r
- while (iter.hasNext()) {\r
- allPlatformFiles.add(iter.next().getFpdFile());\r
- }\r
-\r
- //\r
- // For all platforms, only remove its FPD file\r
- //\r
- Iterator<PlatformIdentification> platfomrIter = removePlatforms.iterator();\r
- while (platfomrIter.hasNext()) {\r
- PlatformIdentification item = platfomrIter.next();\r
- allPlatformFiles.remove(item.getFpdFile());\r
- File parentDir = item.getFpdFile().getParentFile();\r
- item.getFpdFile().delete();\r
- //\r
- // Remove all empty parent dir\r
- //\r
- while (parentDir.listFiles().length == 0) {\r
- File tempFile = parentDir;\r
- parentDir = parentDir.getParentFile();\r
- tempFile.delete();\r
- }\r
- }\r
-\r
- //\r
- // For all packages, remove all files. \r
- // Exception FPD file still in DB\r
- //\r
-\r
- Iterator<PackageIdentification> packageIter = removePackages.iterator();\r
- while (packageIter.hasNext()) {\r
- PackageIdentification item = packageIter.next();\r
- Set<File> deleteFiles = new LinkedHashSet<File>();\r
- recursiveDir(deleteFiles, item.getSpdFile().getParentFile(), allPlatformFiles);\r
- Iterator<File> iterDeleteFile = deleteFiles.iterator();\r
- while (iterDeleteFile.hasNext()) {\r
- deleteFiles(iterDeleteFile.next());\r
- }\r
- //\r
- // Remove all empty parent dir\r
- //\r
- File parentDir = item.getSpdFile().getParentFile();\r
- while (parentDir.listFiles().length == 0) {\r
- File tempFile = parentDir;\r
- parentDir = parentDir.getParentFile();\r
- tempFile.delete();\r
- }\r
- }\r
- }\r
-\r
- //\r
- // Update DB file\r
- //\r
- wt.removeFarFromDb(far);\r
-\r
- this.setVisible(false);\r
- this.stepOne.returnType = DataType.RETURN_TYPE_OK;\r
- this.dispose();\r
- } else if (e.getSource() == jButtonPrevious) {\r
- this.setVisible(false);\r
- stepOne.setVisible(true);\r
- }\r
- }\r
-\r
- public void mousePressed(MouseEvent e) {\r
- // TODO Auto-generated method stub\r
-\r
- }\r
-\r
- public void mouseReleased(MouseEvent e) {\r
- // TODO Auto-generated method stub\r
-\r
- }\r
-\r
- public void mouseEntered(MouseEvent e) {\r
- // TODO Auto-generated method stub\r
-\r
- }\r
-\r
- public void mouseExited(MouseEvent e) {\r
- // TODO Auto-generated method stub\r
-\r
- }\r
-\r
- private void recursiveDir(Set<File> files, File dir, Set<File> platformFiles) {\r
- File[] fileList = dir.listFiles();\r
- for (int i = 0; i < fileList.length; i++) {\r
- if (fileList[i].isFile()) {\r
- if (!platformFiles.contains(fileList[i])) {\r
- files.add(fileList[i]);\r
- }\r
- } else {\r
- if (isContain(fileList[i], platformFiles)) {\r
- recursiveDir(files, fileList[i], platformFiles);\r
- } else {\r
- files.add(fileList[i]);\r
- }\r
- }\r
- }\r
- }\r
-\r
- private void deleteFiles(File file) {\r
- if (file.isDirectory()) {\r
- File[] files = file.listFiles();\r
- for (int i = 0; i < files.length; i++) {\r
- deleteFiles(files[i]);\r
- }\r
- }\r
- file.delete();\r
- }\r
-\r
- private boolean isContain(File dir, Set<File> platformFiles) {\r
- Iterator<File> iter = platformFiles.iterator();\r
- while (iter.hasNext()) {\r
- File file = iter.next();\r
- if (file.getPath().startsWith(dir.getPath())) {\r
- //\r
- // continue this FPD file\r
- //\r
- return true;\r
- }\r
- }\r
- return false;\r
- }\r
-}\r