Java Eclipse来chrome好用的开发插件地图,用什么插件

Eclipse插件开发中的Java项目模型;Eclipse插件开发中的Java项目模型是比较;AD:;Java项目模型;Eclipse的项目有很多种,包括Java项目、;Java模型是用来对与创建、编辑和构建Java程;Java模型的继承结构图如图3.13所示;图3.13Java模型的继承结构图;IJavaElement的子类接口还有IMeth;下面介绍一下
Eclipse插件开发中的Java项目模型
Eclipse插件开发中的Java项目模型是比较重要的内容,也是我们最长接触到的。本文将详细的为大家讲解Java项目模型。
Java项目模型
Eclipse的项目有很多种,包括Java项目、C++项目、C#项目等,每种项目都有自己的特点。我们最常接触到的项目就是Java项目,因此我们重点来讲解一下Java项目模型。
Java模型是用来对与创建、编辑和构建Java程序相关联的对象进行建模的一些类。Java模型类是在org.eclipse.jdt.core中定义的。这些类实现资源的特定于Java的行为,并进一步将Java资源分解成模型元素。
Java模型的继承结构图如图3.13所示。
Java模型的继承结构图
IJavaElement的子类接口还有IMethod、IType等,在这里没有全部列出。Java模型中的类结构比较简单,级次也非常少。
下面介绍一下各个接口的主要方法。
IJavaElement
exists:判断元素是否存在。处理Java元素与处理资源对象相似。当使用Java元素时,实际上是在使用某些底层的模型对象的句柄。必须使用exists()来确定元素是否真正存在于工作空间中。 getElementName:返回元素的名称。
getJavaModel:返回其对应的JavaModel,返回值类型是IJavaModel。
getJavaProject:返回元素对应的Java工程,返回值类型是IJavaProject。
getParent:返回父元素,返回值类型是IJavaElement。
getResource:返回元素对应的资源,返回值类型是IResource。
IClassFile
此接口代表编译后的class二进制文件。
isClass:判断是否是Java类。
isInterface:判断是否是接口。
ICompilationUnit
此接口代表Java源文件。
getAllTypes:返回此文件中定义的所有类型,返回值类型是IType[]。一个Java文件中可以定义多个类型。 getPrimary:返回主类型,返回值类型是ICompilationUnit。
IJavaModel
此接口表示根 Java 元素,对应于工作空间。是所有具有 Java 性质的项目的父类。它对于Java项目的作用和IWorkspaceRoot对于IProject的作用相似。
contains:判断是否存在指定的资源。
getJavaProject:返回指定名字的Java项目,返回值类型是IJavaProject。
getJavaProjects:返回所有的Java项目,返回值类型是IJavaProject[]。
getWorkspace:返回所在的工作空间。
IJavaProject
此接口表示Java项目。
IJavaElement findElement(IPath path):返回项目的path路径下的Java元素。
IPackageFragment findPackageFragment(IPath path):返回项目的path路径下的IPackageFragment。 IPackageFragmentRoot findPackageFragmentRoot(IPath path):返回项目的path路径下的
IPackageFragmentRoot。
findType:根据一个全名取得此元素的类型,此类有数个重载方法,返回值类型为IType。
getAllPackageFragmentRoots:返回所有的IPackageFragmentRoot,返回值类型是IPackageFragmentRoot[]。 getOutputLocation:返回输出路径,返回值类型是IPath。
getRequiredProjectNames:返回依赖项目,返回值类型是字符串数组。
setOutputLocation:设定输出路径。
IPackageFragment
此接口表示整个包或者包的一部分。
createCompilationUnit:创建一个ICompilationUnit,返回值类型是ICompilationUnit。
getClassFile:返回指定名称对应的IClassFile,返回值类型是IClassFile。
getClassFiles:返回所有的IClassFile,返回值类型是IClassFile[]。
getCompilationUnit:返回指定名称对应的ICompilationUnit,返回值类型是ICompilationUnit。 getCompilationUnits:返回所有ICompilationUnit,返回值类型是ICompilationUnit[]。
getKind:判断此包是源码包还是普通包,返回值是int型,如等于IPackage- FragmentRoot.K_SOURCE则是源文件包,如等于IPackageFragmentRoot.K_BINARY则为普通包。
hasSubpackages:是否有子包。
IPackageFragmentRoot
此接口表示一组包段,并将各段映射至底层资源,它可以是文件夹、JAR或ZIP文件。
createPackageFragment:创建一个IPackageFragment,返回值类型是IPackage- Fragment。
getKind:此包段是源码包段还是二进制包段,返回值类型是int,如果等于IPackageFragmentRoot.K_SOURCE则是源文件包段,如果等于IPackageFragment- Root.K_BINARY则为二进制包段。
getPackageFragment:根据包名返回对应的IPackageFragment。
常用工具类
JavaCore(定义在org.eclipse.jdt.core包下)
JavaCore从Plugin继承,它是JDT插件的生命周期管理器。不过对于第三方插件开发人员来说,它的重要性更多地体现在它提供的一些工具类方法中。
IJavaElement create(IFile file):从文件创建对应的Java元素。
IJavaElement create(IFolder folder):从文件夹创建对应的Java元素。
IJavaProject create(IProject project):得到IProject对应的IJavaProject。
IJavaElement create(IResource resource):从资源创建对应的Java元素。
IJavaModel create(IWorkspaceRoot root):从工作空间根目录得到对应的IJavaModel。
IClassFile createClassFileFrom(IFile file):从文件创建对应的IClassFile。
ICompilationUnit createCompilationUnitFrom(IFile file):从文件创建对应的ICompilationUnit。 style=&LINE-HEIGHT: 17.5 TEXT-INDENT: 21pt&(2)
JavaUI(定义在org.eclipse.jdt.ui包下) JavaUI中定义了常用的Java插件界面相关的方法。
createPackageDialog:创建一个包选择对话框,返回值是SelectionDialog。
createTypeDialog:创建一个类型选择对话框,返回值是SelectionDialog。
IEditorPart openInEditor(IJavaElement element):用编辑器打开指定的Java元素并返回编辑器实例。 revealInEditor(IEditorPart part, IJavaElement element):在编辑器中定位元素element。
插件开发中经常会碰到一些常用的技巧,掌握这些技巧可以极大地提高插件的开发效率,并且可以减小插件的体积。下面列出一些常见的技巧。
由一个普通项目得到Java项目
Java项目是一种特殊的项目,需要注意的是IJavaProject并不是从IProject继承的。不能将一个IProject对象强制转换成一个IJavaProject对象,也不能把一个IJavaProject实例赋值给IProject变量。 由IProject项目得到Java项目的方式:
IJavaProject javaPoject = JavaCore.create(IProject);
由IJavaProject得到IProject的方式:
调用IJavaProject的IProject getProject();
(2)得到工作空间中的所有Java项目
我们可以首先得到工作空间中的所有项目,然后逐个进行转换。不过这不免麻烦了一些,下面介绍更好的方式。IJavaModel是所有Java项目的根,通过它就可以得到所有的Java项目:
3. IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
IJavaModel jModel = JavaCore.create(root);
IJavaProject jProject[] = jModel.getJavaProjects();
打开Java编辑器并显示Java编译单元的特定成员
代码如下:
5. void showMethod(IMember member) {
ICompilationUnit cu = member.getCompilationUnit();
IEditorPart javaEditor = JavaUI.openInEditor(cu);
JavaUI.revealInEditor(javaEditor, member);
在工程下创建一个com.cownew包,并创建一个Hello.java文件
打开【打开类型】对话框
以下代码段使用 JavaUI 类来打开【打开类型】对话框:
三亿文库包含各类专业文献、中学教育、行业资料、文学作品欣赏、各类资格考试、16Eclipse插件开发中的Java项目模型等内容。 
 Eclipse 下 java 的 3 大 GUI 开发插件及特色 Eclipse 并不自带 GUI 的可视化开发工具,那么如果要在 Eclipse 进行可视化的 GUI 开发,就需要依靠第三方的插件。 ...  实验四一、实验目的 JavaBean 组件开发 1)应用 Eclipse 创建 JavaB 2)了解 JavaBean 的基本结构,基础知识; 3)应用 JavaBean 开发应用程序。 二、实验内容 ...  出系统开发的进度,有利于监督项目开发,调整开发进 ...在某视图下建立模型。 八.实验数据记录结果分析 ...采用 Java 在 Eclipse 下编码实现,并用 JUnit 框架...  eclipse可视化插件使用WindowBuilder_计算机软件及应用_IT/计算机_专业资料。eclipse可视化插件使用WindowBuilder eclipse 可视化插件使用 WindowBuilder 1. 新建一个 Java ...  创建 OOM 1) 2) 3) 4) 选择物理模型 给物理模型命名 Object language 选择 Java 其他默认,不要点击“确认” (如果点击确认可以随后添加 Eclipse+hibernate 支持...  《Java项目实训》课程设计――计算器_工学_高等教育...eclipse 等 设计报告: 1、设计目的和任务 2、总体...问题前应现建立模型, 再通过建立的模型使问题简单化...  然后以一个用 Java 语言开发的项目 CADS(Cross Architecture...它由许多相互关联的 Eclipse 插件构成。 CADS1.0 ...服务来实现业务流程管理系统的模型, 提 出了 ...  JAVA 语法基础,面向对象编程(OO 设计原则、设计模式) ,Eclipse 使用详解,常用...模式进行项目开发,培养学生的项目实战经验和能力(项目分组协作式开发,项目组讨 ...  java Eclipse导入外部项目_计算机软件及应用_IT/计算机_专业资料。java Eclipse 导入外部项目 在 Eclipse 中,打开一个项目与其他程序编辑软件不同,如像在 VC、Jcreat...25个最好的免费Eclipse插件
作者:Sunshine_lily
字体:[ ] 类型:转载 时间:
这篇文章为大家分享了25个让Java程序员更高效的Eclipse插件,感兴趣的朋友可以参考一下
Eclipse提供了一个可扩展插件的开发系统。这就使得Eclipse在运行系统之上可以实现各种功能。这些插件也不同于其他的应用(插件的功能是最难用代码实现的)。拥有合适的Eclipse插件是非常重要的,因为它们能让Java开发者们无缝的开发基于J2EE和服务的应用程序。Eclipse的插件也能帮助他们开发不同应用架构上的程序。
下面列出来的是25个最好的免费Eclipse插件,可以让开发者更高效的工作 。
提高代码质量的插件
1. FindBugs
FindBugs可以帮你找到Java代码中的bug,它使用Lesser GNU Public License的自由软件许可。
2. Checkstyle
Checkstyle插件可以集成到Eclipse IDE中去,能确保Java代码遵循标准代码样式。
3. ECLemma
ECLemma是一款拥有Eclipse Public License许可的免费工具,它提供了方便快捷的开发和测试环境。你可以使用代码覆盖模式下的“launch”功能,用起来就像是真正的运行/调试模式。你可以通过使用代码覆盖试图,高亮源文件,计数来分析代码。
4. JDepend4Eclipse
JDepend4Eclipse可以帮助你遍历文件夹,协助你量化设计的质量。它使用Eclipse Public License v1.0许可。
PMD是一款代码分析器,用来检测变量和写得不好的代码。
6. SourceHelper
SourceHelper可以协助编码和调试,对写好的代码提供说明。
7. Structure101
Structure101帮助修改代码的架构,就是说你可以改变架构,而不打乱代码。
文本编辑插件
8. AnyEdit Tools
AnyEdit为输出控制台和工具栏增加了新的编辑器,帮助导入和导出数据。它使用Eclipse Public License v1.0许可。
Eclim给Eclipse引入了Vim的功能,Vim是最好的编辑器之一。开发者可以采用不同的语言来编写代码,它也提供bug纠错功能。Eclim使用GPLV3许可。
10. Eclipse-rbe
Eclipse-rbe用来编辑Java文件,它的功能有为缺失变量发出警告信息,排序键值,转变Unicode编码等。它使用GNU库或LGPL许可。
依赖性管理插件
11. Apache IvyDE
Apache IvyDE集成了Apache Ivy的依赖管理功能。它能管理'ivy.xml'中的依赖,也能够配合WPT和Ant插件的使用。
12. M2eclipse (Maven插件)
M2eclipse能够管理简单的项目,也能管理多模块项目,它能在Eclipse中启动maven。它提供依赖管理,能提供自动下载。
版本控制插件
13. Subclipse
Subclipse是一个SVN插件,它为Eclipse IDE提供subversion支持,使用EPL 1.0许可。
EGit提供同步视图,可以读.git/ 下排除的文件,提供rebase功能,为pull和push提供精简的操作。
15. MercurialEclipse
MercurialEclipse是个流行的版本控制系统。它提供了clone repository功能,push-pull同步功能,以及简单的回滚功能。
16. P4Eclipse
P4Eclipse吸纳了Perforce管理系统的特长。它提供了以开发者为导向的一系列的功能,并且支持许多Agile开流程发以及传统开发流程。
框架开发插件
17. Spring Tool Suite
Spring Tool Suite提供了XML文件预览以及图形化的spring配置编辑器等开发环境和工具,它能让开发变得更简单。
18. Spring IDE
Spring IDE帮助你开发Spring应用,它提供了图形编辑界面。它还能用图形的方式显示bean之间的关系
19. Hibernator
Hibernator能够创建或更新数据库schema,运行hibernate查询语句,创建映射文档。用户可以将一个Java类和一个相关的映射文件同步起来。
20. JbossTools
JbossTools 3.2x支持JBoss,Hibernate,Drools,XHTML,Seam等
其他功能插件
21. ASM – 二进制预览插件
ASM Bytecode Outline插件可以显示当前的Java文件或class文件的分解的二进制代码,便于Java/class文件的二进制比较,也可以显示当前二进制代码的ASMifier代码。你可以用Eclipse更新管理器来安装ASM。
22. Mylyn – 任务管理
Mylyn采用任务为中心的界面,它为开发者提供了任务管理工具。另外,也集成了富文本编辑工具,以及监测工具。
23. Eclipse Launcher
Eclipse launcher采用Delphi 6写成,使用它你可以自定义启动Eclipse IDE时的配置。
24. FileSync
FileSync拥有Eclipse Pulic License v1.0许可,它是一个文件同步工具,可以创建,删除,映射文件。
Log4E可以帮你更容易的写日志,而不需要受特定日志框架的约束。当然你也可以自定义你自己的日志模版。
总而言之,插件能让Eclipse用其他语言来编写。Eclipse插件是必不可少的,因为它们让Java应用无缝连接,降低了Java的复杂度。然而,装了过多的插件会让你的Eclipse变慢,所以你需要有选择性的安装插件。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具查看: 5167|回复: 8
Eclipse 简介和插件开发
论坛徽章:349
1.Eclipse 简介和插件开发
Eclipse 是一个很让人着迷的开发环境,它提供的核心框架和可扩展的插件机制给广大的程序员提供了无限的想象和创造空间。目前网上流传相当丰富且全面的开发工具方面的插件,但是 Eclipse 已经超越了开发环境的概念,可以想象 Eclipse 将成为未来的集成的桌面环境。目前的 Eclipse 本身就具备资源管理和外部程序的功能,加上无所不能的插件,将构成一个丰富多彩的工作环境而不仅仅是一个 IDE。对于程序员来说,没有什么比可以随心所欲的定制的工作环境更重要,你的决心,勇气和创造力在与别人分享成果的过程中一览无余。好了,你是不是心动了,如果你已经对 Eclipse 有一定的认识,那么,和我一起打造自己的个性化工作环境吧,首先我们一起开发一个天气预报的插件,然后我们打造属于自己的邮件快速监控功能。
以下的工作基于一定的前提,那就是你是一名 Java 程序员,你很欣赏并正开始使用 Eclipse 这个超酷的工作环境,别忘了下载最新版的 Eclipse3.0,本文基于 Eclipse3.0 开发。
论坛徽章:349
[size=0.76em]
2. 天气预报插件[size=0.76em]如果你已经厌倦了总是要登录某些网站从相关网页上获取信息,这里有一个让你通过 Eclipse 快速获取信息的新方法。让我们从头开始,做一个属于自己的天气预报插件吧,你的 Eclipse 将具有天气预报功能,是不是很酷呢?[size=0.76em]在这一部分,我们将要实现一个 Eclipse 插件,他可以在任何我们想知道的时候通过简单的点击鼠标告诉我们本地区的天气预报,这当然很刺激。对于一个程序员而言,事情就应该如此。让我们开始吧,我们首先要定义一个插件,把他加到菜单和工具栏中。对于没有插件开发经验的你,可以参考《 》,树立基本的插件开发意识,当然,本文将详细的辅助你完成这一创造性的工作。[size=0.76em]2.1 最基础的插件[size=0.76em]你可以完全参考《 》的插件示例,制作你的第一个 hello Eclipse 插件,幸运的是,Eclipse3.0 完全考虑到你的需求,通过菜单 File -& New-& Other -&Plug-in Project,输入项目名称,next 出现对话框,只要在插件名处输入&muplugin&,next 以后选择 &Hello,World&的插件模板你可以直接新建一个名为 myplugin 的最简单的插件,但其实我们的天气预报并不比它复杂多少,建完改插件以后的效果如下图。
[size=0.76em]现在,将项目作为运行时工作台运行(run - run as runtime workbench),在一个全新的 Eclipse 窗口中,通过点击菜单 sample menu 的 sample Action 或者工具栏中的圆形 Eclipse 图标,你将看到如下效果的对话框。
[size=0.76em]到此为止,天气预报插件的原始版做成了,通过修改 plugin.xml,我们将菜单改成中文形式,需要修改的地方就 2 处,详见表格。& && && && && &&actionSet& && && && & label=&Sample Action Set&& && && && &visible=&true&& && && && &id=&myplugin.actionSet&&& && && & &menu& && && && && & label=&我的空间&& && && && && &id=&sampleMenu&&& && && && & &separator& && && && && && & name=&sampleGroup&&& && && && & &/separator&& && && & &/menu&& && && & &action& && && && && & label=&天气预报&& && && && && &icon=&icons/sample.gif&& && && && && &class=&myplugin.actions.SampleAction&& && && && && &tooltip=&Hello, Eclipse world&& && && && && &menubarPath=&sampleMenu/sampleGroup&& && && && && &toolbarPath=&sampleGroup&& && && && && &id=&myplugin.actions.SampleAction&&& && && & &/action&& && && &
[size=0.76em]此时在运行时工作台,我们的菜单已经改变。
论坛徽章:349
[size=0.76em]2.2 用 VisualEditer 制作天气预报对话框[size=0.76em]虽然菜单是天气预报,但是我们需要的不是 hello Eclispe 对话框,我们需要的是告诉我们天气的对话框,当然需要我们从头开始,于是我们需要重新构建一个对话框,这个就需要 Visual Editor 来帮助进行界面的开发(关于 Visual Editer 参考《 》) 。我们将使用 Visual Editor 实现一个 Swing 对话框,当然只用 VE 做一个对话框是有点大材小用,但是作为起点,已经合适了。[size=0.76em]首先参考《 》构建 Visual Editer 开发环境,当一切准备齐全,鼠标右键点击 PackgeExpoler 中的 &muplugin.actions&java 文件,从弹出式菜单中选择 new-&other-&VisualClass,新建一个可视化的类,弹出界面如下图:
[size=0.76em]选择 next,然后在 name 中输入 WeatherDialog,这个就是我们用来显示天气预报的 dialog[size=0.76em]选择该对话框的超类为 javax.swing.JDiaog, 点击 Finish 按钮。 等待一段时间后,我们的对话框就基本生成了,鼠标点击左上角图标,直接输入天气预报就是对话框的标题,同时 我们可以看到左侧的 VisualEditor 面板。
[size=0.76em]然后我们将该对话框于与刚才的天气预报菜单连接 找到 SampleAction 的 run 函数,如下所示:& & & & & & & &&&public void run(IAction action) { & & & & & & & &&&MessageDialog.openInformation( & & & & & & & & & & & &&&window.getShell(), & & & & & & & & & & & & &Myplugin Plug-in&, & & & & & & & & & & & & &Hello, Eclipse world&); & & & &&&} & & & &
[size=0.76em]替换成如下代码& & & & & &&&public void run(IAction action)& &&&{& && && &WeatherDialog wd=new WeatherDialog();& && && &wd.setSize(400, 335);& && && &wd.show();& && && && &}& &
[size=0.76em]此时,点击菜单运行,我们的对话框看起来象这个样子,在此基础上我们还要在上面增加天气预报信息
论坛徽章:349
[size=0.76em]2.3 增加天气预报功能
[size=0.76em]下面的部分是重点,我们将使用具有解析 Html 功能的 Swing 组件 JEditPane,来获取网络上的现成的天气预报信息,根据上图,从 VisualEditor 的面板中 Swing Components 组点击 JEditPane,加入到对话框中。并修改对话框代码使得最终的代码如下: /*&&* Created on &&* */&&&&import java.io.BufferedR&&import java.io.InputStreamR&&import java.net.URL;&&import javax.swing.JD&&import javax.swing.JEditorP&&/**&&* &p&Title: WatherDialog&/p&&&* &p&Description: 这个是对话框类,用于显示指定城市的当天的天气预报 &/p& * &p&Copyright: Copyright (c) 2004&/p&&&* &p&Company:UF SOFT&/p&&&* @author 赵勇 * @version 1.0&&*/&&public class WatherDialog extends JDialog&&{& &&&String city=&北京&;& && && &private JEditorPane jEditorPane =& &&&/**& && &* This method initializes& && &* /& &&&public WatherDialog(String city)& &&&{& && && &super();& && && &this.city=& && && &initialize();& &&&}& &&&/**& && &* This method initializes this& && &* @return void& && &*/& &&&private void initialize()& &&&{& && && &this.setContentPane(getJEditorPane());& && && &try& && && &{& && && && & // 构建 URL 对象& && && && &URL url =new URL(&http://weather..cn//cgi-bin/figureWeather/simpleSearch.cgi?city=&+city);& && && && & String temp=&&;& && && && & BufferedReader in& && && && && && &= new BufferedReader(new InputStreamReader(url.openStream()));& && && && &// 使用 openStream 得到一输入流并由此构造一个 BufferedReader 对象& && && && &String inputL& && && && & // 从输入流不断的读数据,直到读完为止& && && && &while ((inputLine = in.readLine()) != null)& && && && && &&&temp=temp+inputLine+&\n&;& && && && & // 关闭输入流& && && && &in.close();& && && && &&&String&&weather& && && && && && && & =temp.substring ( temp.indexOf( &&body&),& && && && && && && && && && && &&&temp.lastIndexOf( &body&&)+5);& && && && && && && && & this.jEditorPane .setText(weather);& && && &}& && && &catch (Exception e)& && && &{& && && && & e.printStackTrace();& && && &}& && && &this.setTitle(&天气预报&);& && && &this.setSize(400, 166);& && && && & }& &&&/**& && &* This method initializes jEditorPane& && && & *& && && & * @return javax.swing.JEditorPane& && && & */& && &&&private JEditorPane getJEditorPane()& &&&{& && && &if (jEditorPane == null)& && && &{& && && && & jEditorPane = new JEditorPane();& && && && & jEditorPane.setContentType( &text/html&);& && && &}& && && &return jEditorP& &&&}&&}&&//&&@jve:decl-index=0:visual-constraint=&70,19&
[size=0.76em]以上代码中最关键的部分就是对话框中的 JEditorPane 对象,在初始化时,从一个 URL 获取天气预报信息,表现为 Html 标记片段,不用解析,直接调用 JEditorPane 的 setText 方法,就可以将 Html 格式的信息直接按解析过的方式显示,也就是天气预报信息了,[size=0.76em]此时 Action 中的调用需要做修改& & & & & &&&public void run(IAction action)& &&&{& && && &WeatherDialog wd=new WeatherDialog(&北京&);& && && &wd.setSize(400, 335);& && && &wd.show();& && && && &}& &
[size=0.76em]现在以运行时工作台的方式运行,点击天气预报菜单,可以看到下图:
[size=0.76em]如果你在上海或者其他城市,试着修改 city 参数为&上海&,再次运行,你将发现,你仍然能够得到该城市的天气预报(这里我们从网站上提取的信息,有点投机取巧了)。值得注意的是,Xmethod 网站提供了一个天气预报的 WebService,可惜只有美国的城市,不然我们可以使用 Web Service 调用获取天气预报,将会更酷。[size=0.76em]现在运行是工作台已经具备了天气预报的功能,还需要更进一步,将改插件导出发布,拷贝到 Eclipse 根目录的 plugins 目录中,重新启动(具体参见 Eclipse 帮助)。现在你自己的 Eclipse,就具备了天气预报的功能,只要你点击鼠标,就可以在编程之余轻松的获取天气信息。 除非你的老板认为你在工作时间随时了解天气情况不是一个好主意,我认为你完全可以将这个插件纳入个人收藏的插件之列。你也可以在此基础上扩展,增加一些配置文件和属性设置,定制出满足自己要求的插件。如果能够增加信息的自动过滤和筛选,那将是一次很愉快的体验,如果你有时间和兴趣,不妨一试。
论坛徽章:349
3. 邮件快速监控插件
现在你的工作因为 Eclipse 而更加惬意,更具创造力,那么你还有什么不满?你是否厌倦了各种邮件客户端随时随地的骚扰你呢?你希望你在高兴的时候适时的了解一下邮件的概况?好了,既然想到了为什么犹豫呢,因为你是程序员,你就是要用 Eclipse 享受完全 DIY 的乐趣。
3.1 生成插件
本部分我们将在以上 myplugin 插件的基础上增加一个邮件过滤显示的对话框,类似的我们通过 VisualEditer 创建一个名为 MailDialog 的对话框,并增加一个 JEditPane 用来显示邮箱中我们关注的信息。
修改 plugin.xml,增加一个&我的邮件&菜单
& && && && & &action
& && && && && &label=&邮件信息&
& && && && && &icon=&icons/sample.gif&
& && && && && &class=&myplugin.actions.MailAction&
& && && && && &tooltip=&邮件信息&
& && && && && &menubarPath=&sampleMenu/sampleGroup&
& && && && && &toolbarPath=&sampleGroup&
& && && && && &id=&myplugin.actions.MailAction&&
& && && &&/action&
现在,你知道要创建一个 MailAction 的 Action 类,并在 在 Run 中增加如下代码
& && && && &&&MailConfig mail=new MailConfig();
& && &&&String popServer=&server&;
& && &&&String popUser=&zhaoyong&;
& && &&&String popPassword=&1234&;
& && &&&// 设置需要过滤的关键字:发件人和邮件主题
& && &&&String [] strFrom=new String[] {&zhaoyong&};
& && &&&String [] strSubject=new String[] {&测试&};
& && &&&MailConfig[] mc =new MailConfig [] { mail };
& && &&&MailDialog md=new MailDialog(mc);
& && &&&System.err.println(&run run run &) ;
& && &&&md.setSize(400, 335);
& && && &md.show();
以上的代码编译不会通过,但是别着急,慢慢来,很快了。
论坛徽章:349
3.2 构建邮件监控对话框
当然你需要建立一个 MailConfig 类用来表示一个邮箱的具体设置已及相关信息,这里就不在累述说明,详情参见参考资料中的代码。需要说明的式 MailConfig 除了要记录一个邮箱的地址,用户名和密码外,还提供 2 个关键字数组,如果为空,不加过滤,如果关键字有值,系统会根据发件人和邮件标题中是否包含关键字来进行显示邮件信息,已保证你的绝对自由。
首先我们需要实现一个 MailConfig 类,表示邮件配置,每个 MailConfig 的对象代表一个邮件帐户,我们的系统将能显示多个邮箱的配置,每个 MailConfig 中使用一个数组来保存需要过滤的收件人和邮件地址。
MailConfig 类的中的变量如下:
& && &&&String popS
& & String popU
& & String popP
// 设 置 需 要 过 滤 的 关 键 字 : 发 件 人 和 邮 件 主 题
& & String [] strF
& & String [] strS& &
& & // 是 否 显 示 邮 件 内 容
boolean isViewContent=
同样,我们将使用一个对话框来显示邮件信息,MailDialog 需要引用 javaMail.jar, 和 activation.jar 这两个类包,确保已经有这两个类包并加入到项目的类路径中。最后的 MailDialog 代码如下:
import java.io.IOE
import java.util.P
import javax.mail.F
import javax.mail.M
import javax.mail.MessagingE
import javax.mail.S
import javax.mail.S
import javax.mail.internet.InternetA
import javax.swing.JD
import javax.swing.JEditorP
import javax.swing.JTextP
* @author zhaoyong
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
public class MailDialog extends JDialog
& & private JEditorPane jEditorPane =
& & private JTextPane jTextPane =
& & // 可以显示多个邮件配置
& & MailConfig[]&&mc=
& &&&* This method initializes
& &&&* 构造函数
& &&&* @param mc : 需要显示的多个邮箱配置对象。
& & public MailDialog(MailConfig[] mc)
& & & & & &
& && &&&super();
& && &&&if(mc!=null)
& && && && &this.mc =
& && &&&else
& && && && &System.err.println(&邮件配置错误!&) ;
& && &&&initialize();
& &&&* This method initializes this
& &&&* 初始化
& &&&* @return void
& & private void initialize()
& && &&&try
& && && && &// 设定显示内容的面板
& && && && &this.setContentPane(getJTextPane());
& && && && &// 取得所有的新邮件信息
& && && && &String s= getAllMailInfo();& && && && &
& && && && &// 将信息显示在对话框中
& && && && &this.jTextPane .setText(s);
& && && &&&
& && && && &this.setTitle(&邮件信息&);
& && && && &this.setSize(251, 100);
& && &&&catch (Exception e)
& && &&&{& && && &&&
& && &&&& & & &&&// 发生错误显示错误信息
& && &&&& & & &&&this.jTextPane .setText(e.toString());
& && && && &e.printStackTrace();
& & /** 取得所有的邮箱的需要监控的邮件信息
& & & &&&*
& & & &&&* @return String
& & & &&&*/
& & private String getAllMailInfo()
& & & & & &&&String allMailInfo=&&;
& & & & & &
& & & & & &&&if (mc.length &1)
& & & & & & & & & &&&allMailInfo=&没有配置邮箱!&;
& & & & & &&&else
& & & & & &&&{
& & & & & & & & & &&&for(int i=0;i&mc.i++)
& & & & & & & & & &&&{
& & & & & & & & & & & & & &&&// 循环获取每个邮箱的邮件信息
& & & & & & & & & & & & & &&&allMailInfo=allMailInfo+getMailInfo(mc[i]);
& & & & & & & & & &&&}
& & & & & &&&}
& & & & & &&&// 还没有收到相关的邮件
& & & & & &&&if (allMailInfo.trim().length() ==0)
& & & & & & & & & &&&allMailInfo=&未检测到相关新邮件!&;
& & & & & &&&return allMailI
& & & & & &
& &&&* 得到一个邮箱中满足条件的所有新邮件的字符串形式
& & private String getMailInfo(MailConfig mc)
& & & & & &&&// 最终输出的邮件信息
& && &&&String mailInfo=&&;
& & & & & &
& && &&&// 每个邮箱服务器上的 Store 和 Folder 对象
& & & & & &&&Store store=
& && &&&Folder folder=
& && &&&try
& && && &&&
& && && && &Properties props = System.getProperties();
& && && && &// 与邮件服务器生成一个 Session
& && && && &Session session = Session.getDefaultInstance( props,null);
& && && &&&// 给出服务器,用户名,密码连接服务器
& && && && &store = session.getStore(&pop3&);
& && && && &store.connect(mc.getPopServer(), mc.getPopUser(),mc.getPopPassword());
& && && && &
& && && && &// 取得默认的邮件 Folder
& && && && &folder = store.getDefaultFolder();
& && && && &if (folder == null)
& && && && && & throw new Exception(&No default folder&);
& && && && &
& && && && &// 取得收件箱
& && && && &folder = folder.getFolder(&INBOX&);
& && && && &if (folder == null)
& && && && && & throw new Exception(&No POP3 INBOX&);
& && && && &
& && && && &// 以只读方式打开收件箱
& && && && &folder.open(Folder.READ_ONLY);
& && && && &
& && && && &// 获取所有新邮件并处理
& && && && &Message[] msgs = folder.getMessages();
& && && &&&
& && && && &for (int i = 0; i & msgs. i++)
& && && && &{
& && && && && & Message message= msgs[i];
& && && && && & // 取得每封邮件的信息,需要引用 MailConfig 对象进行关键字过滤
& && && && && & mailInfo = mailInfo+ getMessageInfo( message,mc);& && && && && &
& && && && &}
& && && && &
& && &&&catch (Exception ex)
& && && && &ex.printStackTrace();
& && &&&finally
& && && && &// 安全的关闭邮件服务器资源
& && && && &try
& && && && &{
& && && && && & if (folder!=null) folder.close(true);
& && && && && & if (store!=null) store.close();
& && && && &}
& && && && &catch (Exception ex2) {ex2.printStackTrace();}
& && &&&return mailI
& &&&* 得到一封邮件的信息,需要根据 MailConfig 过滤
& & & &&&* @param mailInfo
& & & &&&* @param message
& & & &&&* @return 邮件信息
& & & &&&* @throws MessagingException
& & & &&&* @throws IOException
& & & &&&*/
& & & &&&private String getMessageInfo( final Message message ,final MailConfig mc)
& & & & & & & &&&throws MessagingException, IOException
& & & &&&{
& & & & & & & &&&// 返回的改邮件信息
& & & & & & & &&&String mailInfo=&&;
& & & & & & & &
& & & & & & & &&&String from=((InternetAddress)message.getFrom()[0]).getPersonal();
& && && && &
& & & & & & & &&&if (from==null)
& & & & & & & && &&&from=((InternetAddress)message.getFrom()[0]).getAddress();
& & & & & & & &
& & & & & & & &&&String subject=message.getSubject();
& & & & & & & &
& & & & & & & &&&// 如果满足过滤信息则显示,否则返回空
& && &&&if(isElementinString(from,mc.getStrFrom())
& && &&&& & & & & & & &&&||isElementinString(subject,mc.getStrSubject()) )& &
& && &&&{& && &&&& & & &
& && &&&& & & &&&mailInfo=mailInfo+&发件人 : &+from+&\n&;& && && && && &
& && &&&& & & &&&mailInfo=mailInfo+&邮件主题 : &+subject+&\n&;
& && &&&& & & &&&mailInfo=mailInfo+&发送时间 : &+message.getSentDate() +&\n&;
& && &&&& & & &
& && &&&& & & &&&// 如果显示内容,则打印内容
& && &&&& & & &&&if(mc.isViewContent)
& && &&&& & & & & & & &&&mailInfo=mailInfo+message.getContent() +&\n&;
& && &&&& & & &
& && &&&& & & &&&mailInfo=mailInfo+&------------------------------------\n&;
& & & & & & & &&&return mailI
& & & &&&}
& & & &&&private JTextPane getJTextPane()
& && &&&if (jTextPane == null)
& && && && &jTextPane = new JTextPane();
& && &&&return jTextP
& & & &&&/**
& &&&* 判断目标关键字数组中是否有指定的字符串 , 进行过滤
& & & &&&* @param targetStr :
& & & &&&* @param keys :
& & & &&&* @return & & & & 如果有,返回 true, 否则返回 false
& & & &&&*/
& & private boolean isElementinString(String targetStr,String [] keys)
& & & & & &&&// 没指定过滤条件,显示所有
& & & & & &&&if (keys==null)
& & & & & & & & & &&&
& & & & & &&&// 指定字符串为空,直接返回 false
& & & & & &&&if (targetStr==null)
& & & & & & & & & &&&
& & & & & &&&for(int i=0;i&keys.i++)
& & & & & &&&{
& & & & & & & & & &&&if (targetStr.indexOf(keys[i])&-1)
& & & & & & & & & & & & & &&&
& & & & & &&&}
& & & & & &&&
//&&@jve:decl-index=0:visual-constraint=&10,10&--说明,这是 Visual Editor 添加的控制信息
以上代码的注释已经保证你能够看清楚,这里就不加累述,有兴趣的可以自己试试,体验一切尽在掌握的快感。当然这个例子做的实在简单,因此也为你的进一步开发留有足够的余地。
3.3 打包和发布
到此,在 mypulgin 中增加了邮件信息菜单和对话框,系统的 plugin.xml 如下:
&?xml version=&1.0& encoding=&UTF-8&?&
&?eclipse version=&3.0&?&
& &id=&myplugin&
& &name=&Myplugin Plug-in&
& &version=&1.0.0&
& &provider-name=&&
& &class=&myplugin.MypluginPlugin&&
& &&runtime&
& && &&library name=&myplugin.jar&&
& && && &&export name=&*&/&
& && &&/library&
& && &&library name=&lib/javaMail.jar&&
& && && &&export name=&*&/&
& && &&/library&
& && &&library name=&lib/activation.jar&&
& && && &&export name=&*&/&
& && &&/library&
& &&/runtime&
& &&requires&
& && &&import plugin=&org.eclipse.ui&/&
& && &&import plugin=&org.eclipse.core.runtime&/&
& &&/requires&
& &&extension
& && && &point=&org.eclipse.ui.actionSets&&
& && &&actionSet
& && && && &label=&Sample Action Set&
& && && && &visible=&true&
& && && && &id=&myplugin.actionSet&&
& && && &&menu
& && && && && &label=&我的空间&
& && && && && &id=&sampleMenu&&
& && && && &&separator
& && && && && && &name=&sampleGroup&&
& && && && &&/separator&
& && && &&/menu&
& && && &&action
& && && && && &label=&天气预报&
& && && && && &icon=&icons/sample.gif&
& && && && && &class=&myplugin.actions.SampleAction&
& && && && && &tooltip=&Hello, Eclipse world&
& && && && && &menubarPath=&sampleMenu/sampleGroup&
& && && && && &toolbarPath=&sampleGroup&
& && && && && &id=&myplugin.actions.SampleAction&&
& && && &&/action&
& && && & &action
& && && && && &label=&邮件信息&
& && && && && &icon=&icons/sample.gif&
& && && && && &class=&myplugin.actions.MailAction&
& && && && && &tooltip=&邮件信息&
& && && && && &menubarPath=&sampleMenu/sampleGroup&
& && && && && &toolbarPath=&sampleGroup&
& && && && && &id=&myplugin.actions.MailAction&&
& && && &&/action&
& && &&/actionSet&
& &&/extension&
实际上,我们在一个插件中加入了 2 个功能,因此就实现了我们的开发环境的自我扩展和定制。 同样,参考 Eclipse 的帮助,你可以轻松的再次将插件打包导出,并将其加入自己的 Eclipse 的 plugins 目录(可能需要解压缩),或通过 help 菜单的 Update 选项进行安装,注意导出时需要选定相关的类包。重新启动,你将发现自己的 IDE 已经多了自己的菜单,开发环境已经随着自己的意愿在改变了,程序员天生的满足感油然而生。
现在,你可以在需要的时候点击菜单,了解你希望监控的邮件情况或者最近的天气情况,一切轻松的尽在掌握,Eclipse 的插件,就是这样全能
论坛徽章:0
学习一下 !!
论坛徽章:2
个人很喜欢冰崇尚开源精神,也很喜欢eclipse,因为eclipse就是一个优秀的开源免费的杰出作品。
希望看到更多的关于eclipse的东西。up
论坛徽章:0
good~~~~~~~~~~~
itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有    
 北京市公安局海淀分局网监中心备案编号: 广播电视节目制作经营许可证:编号(京)字第1149号}

我要回帖

更多关于 chrome好用的开发插件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信