在rcp中用菜单在projectExplorer中新建工程

import java.io.ByteArrayInputStream;
import java.io.InputStream;

import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.SubProgressMonitor;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.ide.IDE;


public class newZhuangProject implements IWorkbenchWindowActionDelegate {

 @Override
 public void dispose() {
  // TODO Auto-generated method stub
  
 }

 @Override
 public void init(IWorkbenchWindow window) {
  // TODO Auto-generated method stub
  
 }

 @Override
 public void run(IAction action) {
  //获取工作区
  IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
        //创建新项目
  final IProject project = root.getProject("xyz");
  //创建默认进度条实现
     NullProgressMonitor nullProgressMonitor=new NullProgressMonitor();
  try {
  //创建工程
   project.create(nullProgressMonitor);
  //一定要打开工程
   project.open(IResource.BACKGROUND_REFRESH,new SubProgressMonitor(nullProgressMonitor, 1000));
  //新建lusong文件夹 
   IFolder iFolder=project.getFolder(new Path("lusong"));
  if(!iFolder.exists()){
   iFolder.create(IResource.BACKGROUND_REFRESH, true, nullProgressMonitor);
  }
   final IFile iFile= project.getFile(new Path("/lusong/1.txt"));
   if(!iFile.exists()){
    InputStream inputStream=openContentStream();
    iFile.create(inputStream, true, nullProgressMonitor);
   }
      Display.getCurrent().asyncExec(new Runnable() {
    
    @Override
    public void run() {
     // TODO Auto-generated method stub
     IWorkbenchPage  iWorkbenchPage=PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
     try {
      IDE.openEditor(iWorkbenchPage,iFile);
     } catch (PartInitException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
    }
   });
  } catch (CoreException e1) {
   // TODO Auto-generated catch block
   e1.printStackTrace();
  }
 
  
       try {
  project.open(new IProgressMonitor() {
   
   @Override
   public void worked(int work) {
    // TODO Auto-generated method stub
    
   }
   
   @Override
   public void subTask(String name) {
    // TODO Auto-generated method stub
    
   }
   
   @Override
   public void setTaskName(String name) {
    // TODO Auto-generated method stub
    
   }
   
   @Override
   public void setCanceled(boolean value) {
    // TODO Auto-generated method stub
    
   }
   
   @Override
   public boolean isCanceled() {
    // TODO Auto-generated method stub
    return false;
   }
   
   @Override
   public void internalWorked(double work) {
    // TODO Auto-generated method stub
    
   }
   
   @Override
   public void done() {
    // TODO Auto-generated method stub
    
   }
   
   @Override
   public void beginTask(String name, int totalWork) {
    // TODO Auto-generated method stub
    
   }
  });
 } catch (CoreException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }}


 @Override
 public void selectionChanged(IAction action, ISelection selection) {
  // TODO Auto-generated method stub
  
 }

 
 private InputStream openContentStream() {
  String contents ="这是一个自定义自己的工程的例子";
  return new ByteArrayInputStream(contents.getBytes());
 }

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值