2011年3月24日

          package com.wisoft.magicube.codegenerator.popup.actions;
          
          import java.util.ArrayList;
          import java.util.Arrays;
          import java.util.List;
          
          import org.eclipse.core.resources.ICommand;
          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.IPath;
          import org.eclipse.core.runtime.NullProgressMonitor;
          import org.eclipse.core.runtime.Path;
          import org.eclipse.core.runtime.SubProgressMonitor;
          import org.eclipse.jdt.core.IClasspathEntry;
          import org.eclipse.jdt.core.IJavaProject;
          import org.eclipse.jdt.core.IPackageFragment;
          import org.eclipse.jdt.core.IPackageFragmentRoot;
          import org.eclipse.jdt.core.JavaCore;
          import org.eclipse.jdt.core.JavaModelException;
          import org.eclipse.jdt.ui.PreferenceConstants;
          import org.eclipse.jface.action.IAction;
          import org.eclipse.jface.viewers.ISelection;
          import org.eclipse.ui.IObjectActionDelegate;
          import org.eclipse.ui.IWorkbenchPart;
          
          public class NewJavaProjectAction implements IObjectActionDelegate {
          
          	public void run(IAction action) {
          		// 獲取工作區
          		IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
          
          		// ///////////////////////////////////創建新項目///////////////////////////
          		final IProject project = root.getProject("xyz");
          		
          		// 設置工程的位置
          		// 為項目指定存放路徑,默認放在當前工作區
          		IPath projectPath = new Path("g:/myplugIn");
          		IWorkspace workspace = root.getWorkspace();
          		final IProjectDescription description = workspace.newProjectDescription(project.getName());
          		description.setLocation(projectPath);
          
          		// 設置工程標記,即為java工程
          		String[] javaNature = description.getNatureIds();
          		String[] newJavaNature = new String[javaNature.length + 1];
          		System.arraycopy(javaNature, 0, newJavaNature, 0, javaNature.length);
          		newJavaNature[javaNature.length] = "org.eclipse.jdt.core.javanature"; // 這個標記證明本工程是Java工程
          		description.setNatureIds(newJavaNature);
          
          		// /////////////////////////////
          		try {
          			NullProgressMonitor monitor = new NullProgressMonitor();
          			project.create(description, monitor);
          			project.open(IResource.BACKGROUND_REFRESH, new SubProgressMonitor(monitor, 1000));
          		} catch (CoreException e) {
          			e.printStackTrace();
          		}
          
          		// 下面代碼只在新建向導的情況下才可用
          		/*
          		 * //創建新項目,WorkspaceModifyOperation位于org.eclipse.ui.ide中
          		 * WorkspaceModifyOperation workspaceModifyOperation = new
          		 * WorkspaceModifyOperation() {
          		 * 
          		 * @Override protected void execute(IProgressMonitor monitor) throws
          		 * CoreException, InvocationTargetException, InterruptedException { try
          		 * { monitor.beginTask("", ); project.create(description, monitor);
          		 * 
          		 * if(monitor.isCanceled()){ throw new OperationCanceledException(); }
          		 * 
          		 * project.open(IResource.BACKGROUND_REFRESH, new
          		 * SubProgressMonitor(monitor, )); } catch (Exception e) {
          		 * e.printStackTrace(); } finally{ monitor.done(); } } };
          		 * //接下來調用IWizard的getContainer().run()方法.
          		 */
          
          		// 轉化成java工程
          		IJavaProject javaProject = JavaCore.create(project);
          		// //////////////////////////////////添加JRE庫////////////////////////////
          		try {
          			// 獲取默認的JRE庫
          			IClasspathEntry[] jreLibrary = PreferenceConstants.getDefaultJRELibrary();
          			// 獲取原來的build path
          			IClasspathEntry[] oldClasspathEntries = javaProject.getRawClasspath();
          			List list = new ArrayList();
          			list.addAll(Arrays.asList(jreLibrary));
          			list.addAll(Arrays.asList(oldClasspathEntries));
          
          			javaProject.setRawClasspath(list.toArray(new IClasspathEntry[list.size()]), null);
          		} catch (JavaModelException e) {
          			e.printStackTrace();
          		}
          
          		// //////////////////////////////////創建輸出路徑/////////////////////////////
          		IFolder binFolder = javaProject.getProject().getFolder("bin");
          		try {
          			binFolder.create(true, true, null);
          			javaProject.setOutputLocation(binFolder.getFullPath(), null);
          		} catch (CoreException e) {
          			e.printStackTrace();
          		}
          
          		// /////////////////////////設置Java生成器///////////////////////
          		try {
          			IProjectDescription description2 = javaProject.getProject().getDescription();
          			ICommand command = description2.newCommand();
          			command.setBuilderName("org.eclipse.jdt.core.javabuilder");
          			description2.setBuildSpec(new ICommand[] { command });
          			description2.setNatureIds(new String[] { "org.eclipse.jdt.core.javanature" });
          			javaProject.getProject().setDescription(description2, null);
          		} catch (CoreException e) {
          			e.printStackTrace();
          		}
          
          		// /////////////////////////////創建源代碼文件夾//////////////////////////
          		// ///////////源文件夾和文件夾相似,只是使用PackageFragmentRoot進行了封裝////////
          		IFolder srcFolder = javaProject.getProject().getFolder("src");
          		try {
          			srcFolder.create(true, true, null);
          			// this.createFolder(srcFolder);
          			// 創建SourceLibrary
          			IClasspathEntry srcClasspathEntry = JavaCore.newSourceEntry(srcFolder.getFullPath());
          
          			// 得到舊的build path
          			IClasspathEntry[] oldClasspathEntries = javaProject.readRawClasspath();
          
          			// 添加新的
          			List list = new ArrayList();
          			list.addAll(Arrays.asList(oldClasspathEntries));
          			list.add(srcClasspathEntry);
          
          			// 原來存在一個與工程名相同的源文件夾,必須先刪除
          			IClasspathEntry temp = JavaCore.newSourceEntry(new Path("/xyz"));
          			if (list.contains(temp)) {
          				list.remove(temp);
          			}
          
          			System.out.println(list.size());
          
          			javaProject.setRawClasspath(list.toArray(new IClasspathEntry[list.size()]), null);
          		} catch (CoreException e) {
          			e.printStackTrace();
          		}
          
          		// ///////////////////////////////創建包//////////////////////////
          		// IPackageFragmentRoot packageFragmentRoot = javaProject.getPackageFragmentRoot(javaProject.getResource());
          		//此處得到的src目錄只讀
          
          		try {
          			// 先找指定的源文件夾所在的IPackageFragmentRoot
          			IPackageFragmentRoot packageFragmentRoot = javaProject.findPackageFragmentRoot(new Path("/xyz/src"));
          			// 根據IPackageFragmentRoot創建IPackageFragment,IPackageFragment就是包了
          			IPackageFragment packageFragment = packageFragmentRoot.createPackageFragment("com.aptech.plugin", true, null);
          
          		// //////////////////////////////////創建Java文件////////////////////////
          			String javaCode = "package com.aptech.plugin;public class HelloWorld{public static void main(String[] args){System.out.println(\"中華人民共和國\");}}";
          			packageFragment.createCompilationUnit("HelloWorld.java", javaCode, true, new NullProgressMonitor());
          
          		} catch (JavaModelException e) {
          			e.printStackTrace();
          		} catch (Exception e) {
          			e.printStackTrace();
          		}
          	}
          
          
          	public void setActivePart(IAction action, IWorkbenchPart targetPart) {
          	}
          
          
          	public void selectionChanged(IAction action, ISelection selection) {
          	}
          
          }
          


          本文是使用 B3log SoloNoday 進行同步發布的

          posted @ 2011-03-24 15:19 Noday.net 閱讀(253) | 評論 (0)編輯 收藏

          2011年3月23日

          package com.wisoft.magicube.codegenerator.popup.actions;
          
          import java.util.ArrayList;
          import java.util.Arrays;
          import java.util.List;
          
          import org.eclipse.core.resources.ICommand;
          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.IPath;
          import org.eclipse.core.runtime.NullProgressMonitor;
          import org.eclipse.core.runtime.Path;
          import org.eclipse.core.runtime.SubProgressMonitor;
          import org.eclipse.jdt.core.IClasspathEntry;
          import org.eclipse.jdt.core.IJavaProject;
          import org.eclipse.jdt.core.IPackageFragment;
          import org.eclipse.jdt.core.IPackageFragmentRoot;
          import org.eclipse.jdt.core.JavaCore;
          import org.eclipse.jdt.core.JavaModelException;
          import org.eclipse.jdt.ui.PreferenceConstants;
          import org.eclipse.jface.action.IAction;
          import org.eclipse.jface.viewers.ISelection;
          import org.eclipse.ui.IObjectActionDelegate;
          import org.eclipse.ui.IWorkbenchPart;
          
          public class NewJavaProjectAction implements IObjectActionDelegate {
          
          	public void run(IAction action) {
          		// 獲取工作區
          		IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
          
          		// ///////////////////////////////////創建新項目///////////////////////////
          		final IProject project = root.getProject("xyz");
          		
          		// 設置工程的位置
          		// 為項目指定存放路徑,默認放在當前工作區
          		IPath projectPath = new Path("g:/myplugIn");
          		IWorkspace workspace = root.getWorkspace();
          		final IProjectDescription description = workspace.newProjectDescription(project.getName());
          		description.setLocation(projectPath);
          
          		// 設置工程標記,即為java工程
          		String[] javaNature = description.getNatureIds();
          		String[] newJavaNature = new String[javaNature.length + 1];
          		System.arraycopy(javaNature, 0, newJavaNature, 0, javaNature.length);
          		newJavaNature[javaNature.length] = "org.eclipse.jdt.core.javanature"; // 這個標記證明本工程是Java工程
          		description.setNatureIds(newJavaNature);
          
          		// /////////////////////////////
          		try {
          			NullProgressMonitor monitor = new NullProgressMonitor();
          			project.create(description, monitor);
          			project.open(IResource.BACKGROUND_REFRESH, new SubProgressMonitor(monitor, 1000));
          		} catch (CoreException e) {
          			e.printStackTrace();
          		}
          
          		// 下面代碼只在新建向導的情況下才可用
          		/*
          		 * //創建新項目,WorkspaceModifyOperation位于org.eclipse.ui.ide中
          		 * WorkspaceModifyOperation workspaceModifyOperation = new
          		 * WorkspaceModifyOperation() {
          		 * 
          		 * @Override protected void execute(IProgressMonitor monitor) throws
          		 * CoreException, InvocationTargetException, InterruptedException { try
          		 * { monitor.beginTask("", ); project.create(description, monitor);
          		 * 
          		 * if(monitor.isCanceled()){ throw new OperationCanceledException(); }
          		 * 
          		 * project.open(IResource.BACKGROUND_REFRESH, new
          		 * SubProgressMonitor(monitor, )); } catch (Exception e) {
          		 * e.printStackTrace(); } finally{ monitor.done(); } } };
          		 * //接下來調用IWizard的getContainer().run()方法.
          		 */
          
          		// 轉化成java工程
          		IJavaProject javaProject = JavaCore.create(project);
          		// //////////////////////////////////添加JRE庫////////////////////////////
          		try {
          			// 獲取默認的JRE庫
          			IClasspathEntry[] jreLibrary = PreferenceConstants.getDefaultJRELibrary();
          			// 獲取原來的build path
          			IClasspathEntry[] oldClasspathEntries = javaProject.getRawClasspath();
          			List list = new ArrayList();
          			list.addAll(Arrays.asList(jreLibrary));
          			list.addAll(Arrays.asList(oldClasspathEntries));
          
          			javaProject.setRawClasspath(list.toArray(new IClasspathEntry[list.size()]), null);
          		} catch (JavaModelException e) {
          			e.printStackTrace();
          		}
          
          		// //////////////////////////////////創建輸出路徑/////////////////////////////
          		IFolder binFolder = javaProject.getProject().getFolder("bin");
          		try {
          			binFolder.create(true, true, null);
          			javaProject.setOutputLocation(binFolder.getFullPath(), null);
          		} catch (CoreException e) {
          			e.printStackTrace();
          		}
          
          		// /////////////////////////設置Java生成器///////////////////////
          		try {
          			IProjectDescription description2 = javaProject.getProject().getDescription();
          			ICommand command = description2.newCommand();
          			command.setBuilderName("org.eclipse.jdt.core.javabuilder");
          			description2.setBuildSpec(new ICommand[] { command });
          			description2.setNatureIds(new String[] { "org.eclipse.jdt.core.javanature" });
          			javaProject.getProject().setDescription(description2, null);
          		} catch (CoreException e) {
          			e.printStackTrace();
          		}
          
          		// /////////////////////////////創建源代碼文件夾//////////////////////////
          		// ///////////源文件夾和文件夾相似,只是使用PackageFragmentRoot進行了封裝////////
          		IFolder srcFolder = javaProject.getProject().getFolder("src");
          		try {
          			srcFolder.create(true, true, null);
          			// this.createFolder(srcFolder);
          			// 創建SourceLibrary
          			IClasspathEntry srcClasspathEntry = JavaCore.newSourceEntry(srcFolder.getFullPath());
          
          			// 得到舊的build path
          			IClasspathEntry[] oldClasspathEntries = javaProject.readRawClasspath();
          
          			// 添加新的
          			List list = new ArrayList();
          			list.addAll(Arrays.asList(oldClasspathEntries));
          			list.add(srcClasspathEntry);
          
          			// 原來存在一個與工程名相同的源文件夾,必須先刪除
          			IClasspathEntry temp = JavaCore.newSourceEntry(new Path("/xyz"));
          			if (list.contains(temp)) {
          				list.remove(temp);
          			}
          
          			System.out.println(list.size());
          
          			javaProject.setRawClasspath(list.toArray(new IClasspathEntry[list.size()]), null);
          		} catch (CoreException e) {
          			e.printStackTrace();
          		}
          
          		// ///////////////////////////////創建包//////////////////////////
          		// IPackageFragmentRoot packageFragmentRoot = javaProject.getPackageFragmentRoot(javaProject.getResource());
          		//此處得到的src目錄只讀
          
          		try {
          			// 先找指定的源文件夾所在的IPackageFragmentRoot
          			IPackageFragmentRoot packageFragmentRoot = javaProject.findPackageFragmentRoot(new Path("/xyz/src"));
          			// 根據IPackageFragmentRoot創建IPackageFragment,IPackageFragment就是包了
          			IPackageFragment packageFragment = packageFragmentRoot.createPackageFragment("com.aptech.plugin", true, null);
          
          		// //////////////////////////////////創建Java文件////////////////////////
          			String javaCode = "package com.aptech.plugin;public class HelloWorld{public static void main(String[] args){System.out.println(\"中華人民共和國\");}}";
          			packageFragment.createCompilationUnit("HelloWorld.java", javaCode, true, new NullProgressMonitor());
          
          		} catch (JavaModelException e) {
          			e.printStackTrace();
          		} catch (Exception e) {
          			e.printStackTrace();
          		}
          	}
          
          
          	public void setActivePart(IAction action, IWorkbenchPart targetPart) {
          	}
          
          
          	public void selectionChanged(IAction action, ISelection selection) {
          	}
          
          }
          


          本文是使用 B3log SoloNoday 進行同步發布的

          posted @ 2011-03-23 13:22 Noday.net 閱讀(521) | 評論 (0)編輯 收藏

          僅列出標題  
          主站蜘蛛池模板: 黔西| 揭西县| 连江县| 新疆| 连平县| 洛隆县| 嘉祥县| 常宁市| 新巴尔虎右旗| 麻城市| 清新县| 博客| 泾源县| 全南县| 定西市| 杨浦区| 南木林县| 沧州市| 西乌珠穆沁旗| 喜德县| 正镶白旗| 海林市| 宁德市| 铁岭市| 诸暨市| 苏州市| 南陵县| 通道| 玛沁县| 南乐县| 兴城市| 渭南市| 北流市| 缙云县| 自贡市| 奈曼旗| 德钦县| 安达市| 永州市| 刚察县| 福鼎市|