删除树及本地文件

 

package rcpdemo;

import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Stack;

import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.SashForm;
import org.eclipse.swt.events.MenuDetectEvent;
import org.eclipse.swt.events.MenuDetectListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.ViewPart;

public class View extends ViewPart {

 private static String fileSplitString = System.getProperty("file.separator");
 private static String projectPathString = "f:";
 
 private static String suepFlagString = ".suep";  
 private static File file = new File(projectPathString);
 
 Tree upTree = null;
 
 
 
 private void initProjectFile(File file,Set<File> projectSet){
  File allFile [] = file.listFiles();
  for (File allfile : allFile) {
   if(allfile.isDirectory()){
    String list [] = allfile.list(new FilenameFilter() {
     boolean flag = false;
     public boolean accept(File dir, String name) {
      if(name.endsWith(suepFlagString)){
       flag = true;
      }
      
      return flag;
     }
    });
    
    if(list !=null && list.length>0){
     projectSet.add(allfile);
    }
   }
  }
 }
 
 
 private void showAllProjectFile(Set<File> fileSet){
 for (File allfile : fileSet) {
  String fileName = allfile.getName();
  TreeItem treeItem  = new TreeItem(upTree, SWT.NONE);
  treeItem.setText(fileName);
  if(allfile.isDirectory()){   
   forShowProjectFile(treeItem,allfile);
  }
   
  
 }
}
 
 int i = 0 ;
 private void forShowProjectFile(TreeItem treeItem ,File file){
  File [] listFiles = file.listFiles();
  Map<TreeItem,File> childFileMap = new HashMap<TreeItem,File>();
  for (File allfile : listFiles) {
   i++;
   String fileName = allfile.getName();
   if(!fileName.endsWith(suepFlagString)){
    String treeName = /*fileName.indexOf(".") != -1 ? fileName.substring(0,fileName.indexOf(".")): */fileName;
    TreeItem flagTreeItem = new TreeItem(treeItem, SWT.NULL);
    flagTreeItem.setText(treeName);
    if(allfile.isDirectory() && allfile.list().length>0){    
     childFileMap.put(flagTreeItem,allfile);
    }
   }
   
   if(i == listFiles.length){
    i = 0 ;
    if(childFileMap != null){
     Set<TreeItem> entrySet = childFileMap.keySet();
     for (TreeItem treeItem2 : entrySet) {
      forShowProjectFile(treeItem2,childFileMap.get(treeItem2));
     }
    }
   }
   
  }
 }
 /**
  * This is a callback that will allow us to create the viewer and initialize
  * it.
  */
 public void createPartControl(Composite parent) {
  Set<File> projectSet = new HashSet<File>();
  SashForm sashForm = new SashForm(parent, SWT.VERTICAL|SWT.SMOOTH);
  Group upGroup = new Group(sashForm, SWT.NONE);
  upGroup.setLayout(new FillLayout());
  upTree = new Tree(upGroup, SWT.SINGLE);
  initProjectFile(file,projectSet);
  showAllProjectFile(projectSet);
  
  
  upTree.addMenuDetectListener(new MenuDetectListener() {
     
      @Override
      public void menuDetected(MenuDetectEvent e) {   
       TreeItem[] items = upTree.getSelection();
       if( (null == items)||(items.length == 0)){
        return ;
       }
        final TreeItem one = items[0];
        MenuManager mgr = new MenuManager();
        addProjectAction(one, mgr);
        Menu mu = mgr.createContextMenu(upTree);
        mu.setVisible(true);
      }  
     });

 }

 /**
   * 工程按钮
   * @param item
   * @param mgr
   */
 
 private void createProject(String projectName,String endPreFix){
   TreeItem treeItem  = new TreeItem(upTree, SWT.NONE);
   treeItem.setText(projectName);
   File createFile = new File(projectPathString+fileSplitString+projectName);
   if(!createFile.exists()){
    createFile.mkdir();  
      try {
    File createFlagFile = new File(projectPathString+fileSplitString+projectName+fileSplitString+projectName+endPreFix);
    PrintWriter print = new PrintWriter(createFlagFile);    
    print.print("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
    print.flush();
    print.close();   
   } catch (IOException e) {
    e.printStackTrace();
   }
     }
 }
 
 private List<File> getAllFile(File file,List<File> projectList){
  projectList.add(file);
  File allFile [] = file.listFiles(); 
  for (File allfile : allFile) {
   if(allfile.isDirectory()){
    getAllFile(allfile,projectList);
   }else{
    projectList.add(allfile);
   }
  }
  
  return projectList;
 }
 
 
 private void addProjectAction(final TreeItem item, MenuManager mgr) {
   mgr.add(new Action("New Project"){   
    @Override
    public void run() {  
     String projectName = "testName";//+String.valueOf(Math.random()*100).substring(0,String.valueOf(Math.random()*100).indexOf("."));
     TreeItem [] treeItem = item.getParent().getItems();
     for (TreeItem treeItem2 : treeItem) {
      if(treeItem2.getText().equals(projectName)) {
       System.out.println("已存在的项目!");
       return;
      }
  }
    
     createProject(projectName,suepFlagString); 
    }
   
    @Override
    public ImageDescriptor getImageDescriptor() {
  return null;
//     return ImageRoom.getImageDescriptor(IImageName.FILE_NEW);
    }
   }); 
  
   mgr.add(new Action("Delete Project"){     
     @Override
     public void run() {
      Stack<String> stack = new Stack<String>();
      String filePath = projectPathString;
      stack = getItemMappingFilePath(item, stack); 
      for(int i = stack.size()-1;i >= 0;i--){
       filePath += fileSplitString+stack.get(i);
      }
     File file = new File(filePath);
     if(file.exists() && file.isDirectory()){
      item.dispose();
      List<File> fileList = new ArrayList<File>();
      fileList =  getAllFile(file,fileList);
      for(int i= fileList.size()-1;i>=0;i--){
       fileList.get(i).delete();
      }
     
     
     }else{
      String itemName = item.getText();
      if(itemName.endsWith(".xml")){
       String xmlBeginFilePath = filePath.substring(0, filePath.lastIndexOf(fileSplitString));
       String procFileName = itemName.substring(0,itemName.indexOf("."))+".proc";
       TreeItem [] items = item.getParentItem().getItems();
       for (TreeItem treeItem : items) {
      if(treeItem.getText().equalsIgnoreCase(procFileName)){
       treeItem.dispose();
       break;
      }
       }
       String procFilePath = xmlBeginFilePath+fileSplitString+procFileName;
       File procFile = new File(procFilePath);
       if(procFile.exists() && procFile.isDirectory()){
        List<File> fileList = new ArrayList<File>();
        fileList =  getAllFile(procFile,fileList);
        for(int i= fileList.size()-1;i>=0;i--){
         fileList.get(i).delete();
        }  
       }
      }
      item.dispose();
      file.delete(); 
     }
   
    } 
    
     @Override
     public ImageDescriptor getImageDescriptor() {
   return null;
//      return ImageRoom.getImageDescriptor(IImageName.FILE_NEW);
     }
    }); 
  
   addPackageCreateAction(item,mgr);
  
 }

 
 private Stack<String> getItemMappingFilePath(TreeItem treeItem,Stack<String> stack){
  if(treeItem != null){
   stack.push(treeItem.getText()); 
   TreeItem item = treeItem.getParentItem();
   if(item != null)
    getItemMappingFilePath(item,stack);
  }
  
  return stack;
  
 }
 
 
 private void addPackageCreateAction(final TreeItem item, MenuManager mgr){
   mgr.add(new Action("New TestCase"){  
    @Override
    public void run() {
     Stack<String> stack = new Stack<String>();
     String filePath = projectPathString;
     stack = getItemMappingFilePath(item, stack); 
     for(int i = stack.size()-1;i >= 0;i--){
      filePath += fileSplitString+stack.get(i);
     }
     String testCaseName = "testCase"; 
   
     new TreeItem(item, SWT.NULL).setText(testCaseName+".xml");  
      File createFile = new File(filePath+fileSplitString+testCaseName+".proc");
    if(!createFile.exists()){
     createFile.mkdir();   
     TreeItem treeItem =  new TreeItem(item,  SWT.NULL);
     treeItem.setText(createFile.getName());  
       try {
     File createXmlFile = new File(filePath+fileSplitString+testCaseName+".xml");
     File createFlagFile = new File(filePath+fileSplitString+testCaseName+".proc"+fileSplitString+testCaseName+".rr");
     new TreeItem(treeItem,  SWT.NULL).setText(createFlagFile.getName());
     PrintWriter print = new PrintWriter(createXmlFile);
     PrintWriter prints = new PrintWriter(createFlagFile);  
     print.print("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
     print.flush();
     prints.flush();
     prints.close();
     print.close();   
    } catch (IOException e) {
     e.printStackTrace();
    }
      }
    
    }
   
    @Override
    public ImageDescriptor getImageDescriptor() {
     return null;
//     return ImageRoom.getImageDescriptor(IImageName.FILE_NEW);
    }
   }); 
  
   mgr.add(new Separator());
  
   // 打开
   mgr.add(new Action("Add Package"){
    @Override
    public void run() {
     Stack<String> stack = new Stack<String>();
     String filePath = projectPathString;
     stack = getItemMappingFilePath(item, stack); 
     for(int i = stack.size()-1;i >= 0;i--){
      filePath += fileSplitString+stack.get(i);
     }
     new TreeItem(item, SWT.NULL).setText("add package");  
      File createFile = new File(filePath+fileSplitString+"add package");
   if(!createFile.exists()){  
     createFile.mkdir(); 
    }
    
    }
   
    @Override
    public ImageDescriptor getImageDescriptor() {
     return null;
//     return ImageRoom.getImageDescriptor(IImageName.FOLDER_ADD);
    }
   });
 }

 

 /**
  * Passing the focus request to the viewer's control.
  */
 public void setFocus() {
  //viewer.getControl().setFocus();
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值