代码生成器插件开发---代码生成项目框架的创建(2)


2009-12-04 21:32:16|  分类: Eclipse PDE|字号 订阅

在上一篇中,我们已经建立了一个向导想生成项目,这一篇中将介绍怎样在Eclipse透视图中建立一个项目及所需的东西。
首先,我们在向导点击Finish完后,然后生成一个项目,如图:
newproject.JPG
这里就不多说了,贴出代码出来:

代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念
  1 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念      /**
  2 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @see  org.eclipse.jface.wizard.Wizard#performFinish()
  3 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念      */
  4 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     public   boolean  performFinish()  {
  5 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        createJavaProject();
  6 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念         if  (_newProject  ==   null {
  7 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念             return   false ;
  8 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        }   else   {
  9 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念            updatePerspective();
 10 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念            selectAndReveal(_newProject);
 11 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念             return   true ;
 12 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        }
 13 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念    }
 14 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念
 15 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     /**
 16 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     * 创建一个Java项目
 17 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念      */
 18 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     public   void  createJavaProject()  {
 19 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        _newProject  =  createNewProject();
 20 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        IJavaProject ijavaproject  =  JavaCore.create(_newProject);
 21 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念         try   {
 22 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念            createOutputLocation(ijavaproject);
 23 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念            addJavaBuilder(ijavaproject);
 24 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念            setClasspath(ijavaproject);
 25 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念            _newProject.build(IncrementalProjectBuilder.FULL_BUILD,  null );
 26 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        }   catch  (JavaModelException e)  {
 27 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念            e.printStackTrace();
 28 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        }   catch  (CoreException e)  {
 29 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念            e.printStackTrace();
 30 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        }
 31 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念    }
 32 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念
 33 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     /**
 34 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     * 创建一个新项目
 35 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     * 
 36 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @return
 37 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念      */
 38 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     private  IProject createNewProject()  {
 39 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念         if  (_newProject  !=   null )
 40 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念             return  _newProject;
 41 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念
 42 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念         //  得到一个项目的句柄
 43 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念          final  IProject newProjectHandle  =  _mainPage.getProjectHandle();
 44 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念
 45 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念         //  得到一个项目的描述
 46 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念         IPath newPath  =   null ;
 47 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念         if  ( ! _mainPage.useDefaults())
 48 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念            newPath  =  _mainPage.getLocationPath();
 49 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念
 50 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        IWorkspace workspace  =  ResourcesPlugin.getWorkspace();
 51 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念         final  IProjectDescription description  =  workspace
 52 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念                .newProjectDescription(newProjectHandle.getName());
 53 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        description.setLocation(newPath);
 54 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念
 55 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念         //  增加Java Nature,否则在ijavaproject.setOutputLocation这句就会出错
 56 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念         addJavaNature(description);
 57 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念
 58 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念         //  创建一个项目的操作
 59 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念         WorkspaceModifyOperation op  =   new  WorkspaceModifyOperation()  {
 60 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念             protected   void  execute(IProgressMonitor monitor)
 61 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念                     throws  CoreException  {
 62 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念                createProject(description, newProjectHandle, monitor);
 63 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念            }
 64 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        } ;
 65 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念
 66 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念         //  运行一个新的项目操作,即会执行op中的execute方法
 67 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念          try   {
 68 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念            getContainer().run( true true , op);
 69 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        }   catch  (InterruptedException e)  {
 70 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念             return   null ;
 71 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        }   catch  (InvocationTargetException e)  {
 72 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念             return   null ;
 73 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        }
 74 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念
 75 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        _newProject  =  newProjectHandle;
 76 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念
 77 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念         return  _newProject;
 78 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念    }
 79 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念
 80 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     /**
 81 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     * 增加Java的Nature
 82 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     * 
 83 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @param  iprojectdescription
 84 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念      */
 85 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     private   void  addJavaNature(IProjectDescription iprojectdescription)  {
 86 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        ArrayList arraylist  =   new  ArrayList();
 87 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        arraylist.addAll(Arrays.asList(iprojectdescription.getNatureIds()));
 88 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        arraylist.add( " org.eclipse.jdt.core.javanature " );
 89 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        iprojectdescription.setNatureIds((String[]) arraylist
 90 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念                .toArray( new  String[arraylist.size()]));
 91 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念    }
 92 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念
 93 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     /**
 94 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     * 创建一个新项目
 95 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     * 
 96 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @param  description
 97 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @param  projectHandle
 98 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @param  monitor
 99 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @throws  CoreException
100 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @throws  OperationCanceledException
101 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念      */
102 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     private   void  createProject(IProjectDescription description,
103 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念            IProject projectHandle, IProgressMonitor monitor)
104 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念             throws  CoreException, OperationCanceledException  {
105 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念         try   {
106 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念            monitor.beginTask( "" 2000 );
107 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念
108 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念            projectHandle.create(description,  new  SubProgressMonitor(monitor,
109 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念                     1000 ));
110 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念
111 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念             if  (monitor.isCanceled())
112 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念                 throw   new  OperationCanceledException();
113 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念
114 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念            projectHandle.open(IResource.BACKGROUND_REFRESH,
115 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念                     new  SubProgressMonitor(monitor,  1000 ));
116 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念
117 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        }   finally   {
118 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念            monitor.done();
119 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        }
120 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念    }
121 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念
122 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     /**
123 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     * 创建输出文件
124 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     * 
125 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @param  ijavaproject
126 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @throws  JavaModelException
127 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @throws  CoreException
128 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念      */
129 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     private   void  createOutputLocation(IJavaProject ijavaproject)
130 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念             throws  JavaModelException, CoreException  {
131 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        IFolder ifolder  =  ijavaproject.getProject().getFolder( " bin " );
132 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        createFolder(ifolder);
133 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        IPath ipath  =  ifolder.getFullPath();
134 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        ijavaproject.setOutputLocation(ipath,  null );
135 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念    }
136 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念
137 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     /**
138 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     * 增加Java生成器
139 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     * 
140 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @param  ijavaproject
141 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @throws  CoreException
142 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念      */
143 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     private   void  addJavaBuilder(IJavaProject ijavaproject)  throws  CoreException  {
144 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        IProjectDescription iprojectdescription  =  ijavaproject.getProject()
145 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念                .getDescription();
146 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        ICommand icommand  =  iprojectdescription.newCommand();
147 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        icommand.setBuilderName( " org.eclipse.jdt.core.javabuilder " );
148 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        iprojectdescription.setBuildSpec( new  ICommand[]  { icommand } );
149 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        iprojectdescription
150 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念                .setNatureIds( new  String[]  " org.eclipse.jdt.core.javanature "  } );
151 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        ijavaproject.getProject().setDescription(iprojectdescription,  null );
152 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念    }
153 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念
154 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     /**
155 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     * 设置Classpath
156 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     * 
157 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @param  ijavaproject
158 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @throws  JavaModelException
159 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @throws  CoreException
160 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念      */
161 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     private   void  setClasspath(IJavaProject ijavaproject)
162 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念             throws  JavaModelException, CoreException  {
163 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        ijavaproject.setRawClasspath( new  IClasspathEntry[ 0 ],  null );
164 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        addSourceFolders(ijavaproject);
165 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        addJRELibraries(ijavaproject);
166 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        addCodeGenLibraries(ijavaproject);
167 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念    }
168 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念
169 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     /**
170 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     * 增加JRE库
171 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     * 
172 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @param  ijavaproject
173 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @throws  JavaModelException
174 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念      */
175 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     private   void  addJRELibraries(IJavaProject ijavaproject)
176 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念             throws  JavaModelException  {
177 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        ArrayList arraylist  =   new  ArrayList();
178 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        arraylist.addAll(Arrays.asList(ijavaproject.getRawClasspath()));
179 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        arraylist.addAll(Arrays.asList(PreferenceConstants
180 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念                .getDefaultJRELibrary()));
181 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        ijavaproject.setRawClasspath((IClasspathEntry[]) arraylist
182 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念                .toArray( new  IClasspathEntry[arraylist.size()]),  null );
183 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念    }
184 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念
185 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     /**
186 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     * 增加代码生成中所需要的Jar库
187 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     * 
188 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @param  ijavaproject
189 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @throws  JavaModelException
190 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念      */
191 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     private   void  addCodeGenLibraries(IJavaProject ijavaproject)
192 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念             throws  JavaModelException  {
193 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念 //         TODO:添加代码生成项目中所需要的Jar包
194 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     }
195 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念
196 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     /**
197 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     * 增加多个源文件目录
198 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     * 
199 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @param  ijavaproject
200 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @throws  JavaModelException
201 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @throws  CoreException
202 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念      */
203 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     private   void  addSourceFolders(IJavaProject ijavaproject)
204 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念             throws  JavaModelException, CoreException  {
205 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        ArrayList arraylist  =   new  ArrayList();
206 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        arraylist.addAll(Arrays.asList(ijavaproject.getRawClasspath()));
207 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        addSourceFolder(ijavaproject, arraylist,  " src/java " );
208 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        addSourceFolder(ijavaproject, arraylist,  " src/resource " );
209 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        ijavaproject.setRawClasspath((IClasspathEntry[]) arraylist
210 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念                .toArray( new  IClasspathEntry[arraylist.size()]),  null );
211 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念    }
212 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念
213 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     /**
214 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     * 增加源文件目录
215 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     * 
216 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @param  ijavaproject
217 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @param  arraylist
218 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @param  s
219 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @throws  CoreException
220 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念      */
221 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     private   void  addSourceFolder(IJavaProject ijavaproject,
222 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念            ArrayList arraylist, String s)  throws  CoreException  {
223 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        IFolder ifolder  =  ijavaproject.getProject().getFolder(s);
224 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        createFolder(ifolder);
225 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        IPackageFragmentRoot ipackagefragmentroot  =  ijavaproject
226 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念                .getPackageFragmentRoot(ifolder);
227 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        arraylist.add(JavaCore.newSourceEntry(ipackagefragmentroot.getPath()));
228 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念    }
229 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念
230 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     /**
231 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     * 创建一个文件夹
232 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     * 
233 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @param  ifolder
234 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @throws  CoreException
235 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念      */
236 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     private   void  createFolder(IFolder ifolder)  throws  CoreException  {
237 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        IContainer icontainer  =  ifolder.getParent();
238 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念         if  (icontainer  !=   null   &&   ! icontainer.exists()
239 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念                 &&  (icontainer  instanceof  IFolder))
240 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念            createFolder((IFolder) icontainer);
241 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        ifolder.create( true true null );
242 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念    }
243 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念
244 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     /**
245 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @see  org.eclipse.jface.wizard.Wizard#addPages()
246 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念      */
247 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     public   void  addPages()  {
248 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念         super .addPages();
249 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        _mainPage  =   new  WizardNewProjectCreationPage( " 海迈平台-代码生成 " );
250 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        _mainPage.setTitle( " 创建一个代码生成项目框架 " );
251 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        _mainPage.setDescription( " 创建一个代码生成项目框架 " );
252 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        addPage(_mainPage);
253 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念    }
254 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念
255 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     /**
256 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     * 更新Eclipse的透视图
257 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念      */
258 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     protected   void  updatePerspective()  {
259 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念         try   {
260 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念            IWorkbenchPage iworkbenchpage  =  PlatformUI.getWorkbench()
261 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念                    .getActiveWorkbenchWindow().getActivePage();
262 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念             if  (iworkbenchpage.findView( " org.eclipse.ui.views.PropertySheet " ==   null )
263 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念                iworkbenchpage.showView( " org.eclipse.ui.views.PropertySheet " );
264 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        }   catch  (PartInitException partinitexception)  {
265 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念            partinitexception.printStackTrace();
266 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        }
267 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念    }
268 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念
269 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     /**
270 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @param  iresource
271 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念      */
272 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     protected   void  selectAndReveal(IResource iresource)  {
273 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        selectAndReveal(iresource, _workbench.getActiveWorkbenchWindow());
274 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念    }
275 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念
276 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     /**
277 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     * 选择该项目并显示出来
278 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     * 
279 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @param  iresource
280 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     *  @param  iworkbenchwindow
281 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念      */
282 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念     private   void  selectAndReveal(IResource iresource,
283 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念            IWorkbenchWindow iworkbenchwindow)  {
284 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念        BasicNewResourceWizard.selectAndReveal(iresource, iworkbenchwindow);
285 代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念    }


在创建新项目的时候,要给项目描述类增加一个Java Nature,具体这个Java Nature是什么意思我不太懂代码生成器插件开发---代码生成项目框架的创建(2)  - secyaher - 隐龙 为了一生的信念。Eclipse里面很多都采用Adopter模式,所以在WorkspaceModifyOperation中的execute方法是创建项目的核心。其他可以参考代码。相信不是很难理解。
友情小贴士:
   1.在点击“完成”按钮后,调用PerformFinish方法。

   2.创建一个项目的时候,可以根据page来得到Project句柄,再根据ResourcesPlugin.getWorkspace();来得到工作区,由于每个工作区都含有多个不同插件的描述,可以从工作区创建一个项目描述:workspace .newProjectDescription(newProjectHandle.getName());并设置相应的路径(可以从Page中得到),并为项目描述增加一些必要的信息,如JavaNature。真正创建项目: projectHandle.create(description, new SubProgressMonitor(monitor,1000), projectHandle.open(IResource.BACKGROUND_REFRESH,new SubProgressMonitor(monitor, 1000));

  3.为项目设置Java编译器,

 ICommand icommand = iprojectdescription.newCommand();

 icommand.setBuilderName("org.eclipse.jdt.core.javabuilder");

 iprojectdescription.setBuildSpec(new ICommand[] { icommand });

 4.为项目设置源路径

ArrayList arraylist = new ArrayList();

arraylist.addAll(Arrays.asList(ijavaproject.getRawClasspath()));

addSourceFolder(ijavaproject, arraylist, "src/java");

addSourceFolder(ijavaproject, arraylist, "src/resource");

 ijavaproject.setRawClasspath((IClasspathEntry[]) arraylist.toArray(new IClasspathEntry[arraylist.size()]), null);

 5.更新透视图

1            IWorkbenchPage iworkbenchpage = PlatformUI.getWorkbench()

2                    .getActiveWorkbenchWindow().getActivePage();

3            if (iworkbenchpage.findView("org.eclipse.ui.views.PropertySheet") == null)

4                iworkbenchpage.showView("org.eclipse.ui.views.PropertySheet");

  6.显示项目出来

BasicNewResourceWizard.selectAndReveal(iresource, iworkbenchwindow);

 原文:http://secyaher.blog.163.com/blog/static/3895577200911493216157/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值