`
yianpuodiaotu
  • 浏览: 241671 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

插件集成常用语句

阅读更多
//在项目根目录下创建devlib文件夹,将htmlunit的支持包放入devlib文件夹下,并添加到classpath中
		final IFolder tld = project.getFolder("devlib");
		if(!tld.exists()){
			tld.create(IResource.FORCE, true, null);	
		}

//添加到classpath
	private void addSourceFolder(IJavaProject project, IPath srcPath) throws JavaModelException {
		IClasspathEntry[] entries = project.getRawClasspath();
		IClasspathEntry[] newEntries = new IClasspathEntry[entries.length + 1];
		System.arraycopy(entries, 0, newEntries, 0, entries.length);
		newEntries[entries.length] = JavaCore.newSourceEntry(srcPath);

		project.setRawClasspath(newEntries, null);

	}

//添加listener,servelet,mapping
private void createExoMetaData(WebApp webApp) {
		// Create the servlet instance and set up the parameters from data
		// model
		
		Listener listener = CommonFactory.eINSTANCE.createListener();
		listener.setListenerClassName("org.exoplatform.services.portletcontainer.impl.servlet.PortletApplicationListener");

		Servlet servlet = WebapplicationFactory.eINSTANCE.createServlet();

		servlet.setServletName("PortletWrapper");
		ServletType servletType = WebapplicationFactory.eINSTANCE.createServletType();
		servletType.setClassName("org.exoplatform.services.portletcontainer.impl.servlet.ServletWrapper");
		servlet.setWebType(servletType);

		// Add the servlet to the web application model
		webApp.getListeners().add(listener);
		webApp.getServlets().add(servlet);

		ServletMapping mapping = WebapplicationFactory.eINSTANCE.createServletMapping();
		mapping.setServlet(servlet);
		mapping.setName(servlet.getServletName());
		mapping.setUrlPattern("/PortletWrapper");
		webApp.getServletMappings().add(mapping);
	}

//参数
if (webApp.getJ2EEVersionID() >= J2EEVersionConstants.J2EE_1_4_ID) {
			ParamValue param = CommonFactory.eINSTANCE.createParamValue();
			param.setName("company_id");
			param.setValue("liferay.com");
			webApp.getContextParams().add(param);
		} else {
			ContextParam cp = WebapplicationFactory.eINSTANCE.createContextParam();
			cp.setParamName("company_id");
			cp.setParamValue("liferay.com");
			cp.setWebApp(webApp);
		}

//addNature,SubProgressMonitor,addServletLibToWebInf
/*
 * Copyright 2006 Cypal Solutions (tools@cypal.in)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *     http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */

package in.cypal.studio.gwt.core.facet;

import in.cypal.studio.gwt.core.Activator;
import in.cypal.studio.gwt.core.common.Constants;
import in.cypal.studio.gwt.core.common.Util;

import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.SubProgressMonitor;
import org.eclipse.jdt.core.IAccessRule;
import org.eclipse.jdt.core.IClasspathAttribute;
import org.eclipse.jdt.core.IClasspathEntry;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.wst.common.componentcore.ComponentCore;
import org.eclipse.wst.common.project.facet.core.IDelegate;
import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;


/**
 * @author Prakash G.R.
 *
 */
public class InstallDelegate implements IDelegate{

	public void execute(IProject project, IProjectFacetVersion facetVersion, Object config, IProgressMonitor monitor) throws CoreException {
		
		monitor = Util.getNonNullMonitor(monitor);
		
		try {
		
			monitor.beginTask("", 3); 
			
			addNature(project, new SubProgressMonitor(monitor, 1)); 
			addUserLibToClassPath(project, new SubProgressMonitor(monitor, 1));
			addServletLibToWebInf(project, new SubProgressMonitor(monitor, 1));
			
		}catch(CoreException e) {
			monitor.setCanceled(true);
			Activator.logException(e);
		}finally {
			monitor.done();
		}
	}

	
	private void addServletLibToWebInf(IProject project, IProgressMonitor monitor){
		
		monitor = Util.getNonNullMonitor(monitor);
		try {
			
	    	IPath webContent = ComponentCore.createComponent(project).getRootFolder().getProjectRelativePath();
			IFile theLink = project.getFile(webContent.append("WEB-INF").append("lib").append("gwt-servlet.jar")); 
			IPath actualLocation = new Path(Constants.GWT_HOME_PATH+"/gwt-servlet.jar");  
			theLink.createLink(actualLocation, IResource.REPLACE, null);  
		} catch (CoreException e) {
			// the jar is already in the classpath.  
			Activator.logException(e);
		}finally {
			monitor.done();
		}
		
	}


	private void addUserLibToClassPath(IProject project, IProgressMonitor monitor){
		
		monitor = Util.getNonNullMonitor(monitor);

		try {
			monitor.beginTask("", 1); 
			
			IJavaProject javaProject = JavaCore.create(project);
			IClasspathEntry[] oldClasspath = javaProject.getRawClasspath();
			IClasspathEntry[] newClasspath = new IClasspathEntry[oldClasspath.length+1];
			System.arraycopy(oldClasspath, 0, newClasspath, 0, oldClasspath.length);
			IClasspathEntry gwtUserJarEntry = JavaCore.newVariableEntry(Util.getGwtUserLibPath(), null, null);
			IClasspathAttribute attr = JavaCore.newClasspathAttribute("org.eclipse.jst.component.dependency", "/WEB-INF/lib");
			gwtUserJarEntry = JavaCore.newVariableEntry(gwtUserJarEntry.getPath(), null, null, new IAccessRule[0], new IClasspathAttribute[] {attr}, false);
			newClasspath[oldClasspath.length] = gwtUserJarEntry;
			javaProject.setRawClasspath(newClasspath, monitor);

		} catch (JavaModelException e) {
			// the jar is already in the classpath.  
			Activator.logException(e);
		}finally {
			monitor.done();
		}
	}


	private void addNature(IProject project, IProgressMonitor monitor) throws CoreException {
		
		monitor = Util.getNonNullMonitor(monitor);
		
		try {
			
			monitor.beginTask("", 1); 
			
			IProjectDescription description = project.getDescription();
			String[] prevNatures= description.getNatureIds();
			String[] newNatures= new String[prevNatures.length + 1];
			System.arraycopy(prevNatures, 0, newNatures, 1, prevNatures.length);
			newNatures[0]= Constants.NATURE_ID;
			description.setNatureIds(newNatures);
			
			project.setDescription(description, IResource.FORCE, null);

		}finally {
			monitor.done();
		}
	}

}

、从TextEditor继承,调用setSourceViewerConfiguration,并传进去一个从SourceViewerConfiguration 继承的配置类,就可以实现各种代码editor。
2、swt尽量使用GridLayout布局(不是java.awt中的GridLayout,而是swt中的)和GridData域。文章:http://coolbear.yculblog.com/post.89429.html

3、得到文件的编辑器的方法:
  
 public static IEditorPart findEditor(IFile file){
        IEditorReference[] editors = getActivePage().getEditorReferences();;
        for (int i = 0; i < editors.length; i++) {
            IEditorPart part = (IEditorPart)editors[i].getPart(false);
            if (part != null ){
                IEditorInput input = part.getEditorInput();
                if(input instanceof FileEditorInput && ((FileEditorInput)input).getFile().equals(file))
                    return part;
            }               
        }
        return null;
    }

4、得到工作区中所有工程的方法:
      
 IProject[] projects = ResourcesPlugin.getWorkspace().getRoot()
                .getProjects();

这在开发自己的工程向导的时候很有用处。
5、工程特有文件判断方法
project.getFile("cownew.prj").exists();
project.getDescription().hasNature();
给工程增加Nature的方法:
 IProjectDescription desc = project.getDescription();
String[] oldNatureIds = desc.getNatureIds();
                String[] newNatureIds  = new String[oldNatureIds.length +1];
                System.arraycopy(oldNatureIds, 0, newNatureIds, 0, oldNatureIds.length);
                newNatureIds[oldNatureIds.length] = "CowNewNature";
                desc.setNatureIds(newNatureIds);
                project.setDescription(desc, monitor);

6、创建文件夹的方法:
IFolder folder = project.getFolder("myfold");
if (folder!=null && !folder.exists())
  folder.create(false, true, null);

7、弹出包选择对话框的方法:
ElementListSelectionDialog dialog = new ElementListSelectionDialog(
                    getShell(), new LabelProvider());
            dialog.setIgnoreCase(false);
dialog.setElements(getAllPackages().toArray());
            String path = currentPackage();
 dialog.setInitialSelections(new Object[] { path });
dialog.open();
fPKName.setText((String) dialog.getFirstResult());

public List getAllPackages() {
        List list = new ArrayList();
        IResource res = getFirstSelection();
        IProject project = res.getProject();
        File file = project.getFolder("src").getLocation().toFile();
        File[] fs = file.listFiles();
        for (int i = 0; i < fs.length; i++) {
            if (fs[i].isDirectory())
                iterator("", fs[i], list);
        }
        Collections.sort(list);
        return list;
    }

8 objectClass="org.eclipse.core.resources.IFile"代表菜单应用到文件
9 透视图的的实现很简单,就是在构造函数里边打开一些视图,使一些action(这样菜单和按钮也就都可用)可以用,比如:
String editorArea = layout.getEditorArea();
        IFolderLayout left = layout.createFolder("left", IPageLayout.LEFT,
                0.30f, editorArea);
        left.addView(PACKAGE_VIEW_ID);
 layout.setEditorAreaVisible(true);
 layout.addShowViewShortcut(IDESystem.BUSINESSVIEW_ID);
分享到:
评论

相关推荐

    idea 设置搜索插件和常用的插件安装

    Codota 代码智能提示插件是一款功能强大的插件,它可以智能地提示出整条语句,只需要输入首字母就可以显示每条语句的使用频率。该插件还可以学习项目代码,总结代码偏好,从而提供更加智能的代码提示。 Key ...

    idea常用插件(activiti,mybatis,json解析等常用插件)

    本文将详细介绍标题和描述中提到的几个常用插件,包括activiti、mybatis以及json解析相关的插件。 1. **Activiti插件**:Activiti是一个开源的工作流引擎,用于构建业务流程管理系统(BPM)。`actibpm.jar`可能是一...

    AndroidStudio自定义Gradle插件

    在Android开发环境中,Android Studio是主流的集成开发环境(IDE),而Gradle则是一个强大的构建工具,用于自动化项目的构建过程。本篇文章将深入探讨如何在Android Studio中自定义Gradle插件,以此来扩展和优化项目...

    新安装IDEA 常用插件、设置

    本篇文章将详细介绍在新安装IDEA时如何配置常用插件及进行相关设置,以提升开发效率。 首先,"IntelliJ IDEA Global Settings"是IDEA全局设置文件,包含了用户的个性化配置,如编辑器字体、颜色主题、代码格式化...

    idea完整sql语句插件

    标题 "idea完整sql语句插件" 暗示了我们讨论的是一个针对IntelliJ IDEA集成开发环境的插件,其主要功能是增强SQL语句的处理和管理。IntelliJ IDEA是一款广受欢迎的Java开发工具,由JetBrains公司开发,它提供了丰富...

    Eclipse常用插件下载网址

    以下是一些常用的Eclipse插件及其详细介绍: 1. **Lomboz J2EE插件**:这款插件专门用于开发JSP和EJB项目,它增强了Eclipse在Java企业版开发中的能力,包括对JSP和EJB的支持。 2. **MyEclipse**:这是一款全面的...

    idea plugins最常用的11个插件

    今天我们将深入探讨“idea plugins最常用的11个插件”,这将帮助你更好地利用IDEA,提升开发体验。 1. **Git Integration**: 这个插件是IDEA内置的,提供了强大的Git版本控制支持,包括提交、推送、拉取、合并等...

    SQLSearch插件工具

    5. **集成于SSMS**:SQLSearch作为SSMS的插件,无缝集成到其界面中,用户无须离开熟悉的环境即可使用,提高了工作效率。只需安装一次,即可在所有支持的SQL Server版本上使用。 6. **易用性和兼容性**:该工具的...

    集成了各类插件Vue3模板框架

    在集成插件方面,Vue3模板框架通常会包含一系列常用的库和工具,例如Vuex用于状态管理,Vue Router用于路由管理,Axios用于HTTP请求,Element Plus或Quasar Framework等UI库用于快速构建用户界面。这些插件和库的...

    IDEA常用10多款插件plugins.zip

    本文将详细介绍标题为“IDEA常用10多款插件plugins.zip”压缩包中包含的一些热门插件,这些插件极大地提升了开发效率和代码质量。 1. **RestfulToolkit-2.0.9.jar**: 这个插件是针对RESTful API开发的工具,它...

    山雨管理系统基于THINKPHP3.2框架整合常用JS插件及常用PHP类库..zip

    在实际项目中,开发者需要理解THINKPHP3.2的架构原理,熟练运用JS插件,以及掌握MySQL的SQL语句和数据库设计原则。通过分析“山雨管理系统”的源码,学生可以深入学习到这些技术的应用,从而提升自己的编程技能。 ...

    eclipse常用插件

    Eclipse是一款广泛使用的Java集成开发环境(IDE),其强大的可扩展性使得开发者可以通过安装各种插件来提升开发效率和代码质量。以下将详细介绍标题和描述中提到的几个Eclipse插件,以及它们在软件开发中的作用。 1...

    PL/SQL Developer快速输入插件

    PL/SQL Developer是一款专为Oracle数据库开发人员设计的集成开发环境(IDE),它提供了丰富的功能,包括编写、调试、测试和管理PL/SQL代码。在提高开发效率方面,这款工具的快速输入插件是一个非常实用的功能。这个...

    Ext常用扩展插件实例收集

    OpenFlashChart 是一个用于生成图表的Flash库,而 OpenFlashChartPlugin 是 ExtJS 中用于集成这个库的插件。它使得开发者能够方便地在ExtJS应用程序中创建各种交互式图表,如折线图、柱状图、饼图等。通过这个插件...

    MyBatisX 插件离线安装包

    MyBatisX插件是针对IntelliJ IDEA集成开发环境的一款增强工具,主要服务于MyBatis框架的使用者。它提供了诸如智能代码提示、快速生成Mapper XML、自动同步Mapper接口与XML、自定义SQL片段等功能,极大地提升了开发...

    谷歌浏览器restful请求插件

    该插件的Elasticsearch查询示例为开发者提供了便捷的接口,可以直接在浏览器中尝试不同的查询语句和操作,如索引创建、文档添加、搜索查询以及聚合分析。 **Chrome浏览器插件** Chrome浏览器插件是谷歌浏览器上的...

    Eclipse SQL Explorer 插件

    Eclipse SQL Explorer是一款深受开发人员喜爱的集成在Eclipse IDE中的SQL工具插件。它为开发者提供了一个方便的环境来管理、查询和操作各种数据库,极大地提升了开发效率。这款插件支持多种数据库管理系统,包括但不...

    idea插件MybatisX-1.6.1

    MybatisX可以快速定位Mapper XML文件中的方法,通过在Java方法上右键点击,选择“Go To”-&gt;"Mybatis XML",就能直接跳转到对应的XML映射文件,便于查看和修改SQL语句。 5. 自动导入: 当你创建新的Mapper接口或者...

Global site tag (gtag.js) - Google Analytics