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());
}
}