Eclipse 3.0 简介和插件开发示例 (2)

Eclipse开发效率提升插件集锦 本文还有配套的精品资源,点击获取 简介:在IT领域,个性化开发环境的设置对于提升程序员工作效率至关重要。本压缩包提供了常用Eclipse插件,旨在强化编程体验功能扩展。详细介绍了Aptana 2.0、EasyExplore、Jadclipse 3.3.0、Spket-1.6.18Struts2-Dojo-Plugin-2.1.0插件,这些插件提供了代码提示、自动完成、... 阅读详情
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();

  以上的代码编译不会通过,但是别着急,慢慢来,很快了。

  3.2构建邮件监控对话框

  当然你需要建立一个MailConfig类用来表示一个邮箱的具体设置已及相关信息,这里就不在累述说明,详情参见参考资料中的代码。需要说明的式MailConfig除了要记录一个邮箱的地址,用户名和密码外,还提供2个关键字数组,如果为空,不加过滤,如果关键字有值,系统会根据发件人和邮件标题中是否包含关键字来进行显示邮件信息,已保证你的绝对自由。

  首先我们需要实现一个MailConfig类,表示邮件配置,每个MailConfig的对象代表一个邮件帐户,我们的系统将能显示多个邮箱的配置,每个MailConfig中使用一个数组来保存需要过滤的收件人和邮件地址。

  MailConfig类的中的变量如下:

String popServer;
String popUser;
String popPassword;

//设置需要过滤的关键字:发件人和邮件主题

String [] strFrom;
String [] strSubject;

//是否显示邮件内容
boolean isViewContent=false;

  同样,我们将使用一个对话框来显示邮件信息,MailDialog需要引用javaMail.jar,和activation.jar这两个类包,确保已经有这两个类包并加入到项目的类路径中。最后的MailDialog代码如下:

package myplugin;


import java.io.IOException;
import java.util.Properties;

import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.internet.InternetAddress;
import javax.swing.JDialog;
import javax.swing.JEditorPane;
import javax.swing.JTextPane;
/**
* @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 = null;
private JTextPane jTextPane = null;

//可以显示多个邮件配置
MailConfig[] mc= null;


/**
* This method initializes
* 构造函数
* @param mc : 需要显示的多个邮箱配置对象。
*/
public MailDialog(MailConfig[] mc)
{

super();

if(mc!=null)
this.mc = 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.length;i++)
{
//循环获取每个邮箱的邮件信息
allMailInfo=allMailInfo+getMailInfo(mc[i]);
}
}
//还没有收到相关的邮件
if (allMailInfo.trim().length() ==0)
allMailInfo="未检测到相关新邮件!";
return allMailInfo;

}
/*
*得到一个邮箱中满足条件的所有新邮件的字符串形式
**/
private String getMailInfo(MailConfig mc)
{
//最终输出的邮件信息
String mailInfo="";

//每个邮箱服务器上的Store和Folder对象
Store store=null;
Folder folder=null;

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.length; 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 mailInfo;
}

/**
* 得到一封邮件的信息,需要根据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 mailInfo;
}

private JTextPane getJTextPane()
{
if (jTextPane == null)
{
jTextPane = new JTextPane();
}

return jTextPane;
}

/**
* 判断目标关键字数组中是否有指定的字符串,进行过滤
* @param targetStr :
* @param keys :
* @return 如果有,返回true, 否则返回false
*/

private boolean isElementinString(String targetStr,String [] keys)
{
//没指定过滤条件,显示所有
if (keys==null)
return true;
//指定字符串为空,直接返回false
if (targetStr==null)
return false;
for(int i=0;i<keys.length ;i++)
{
if (targetStr.indexOf(keys[i])>-1)
return true;
}
return false;
}

}
// @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"?>
<plugin
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>
</plugin>

  实际上,我们在一个插件中加入了2个功能,因此就实现了我们的开发环境的自我扩展和定制。同样,参考Eclipse的帮助,你可以轻松的再次将插件打包导出,并将其加入自己的Eclipse 的plugins目录(可能需要解压缩),或通过help菜单的Update选项进行安装,注意导出时需要选定相关的类包。重新启动,你将发现自己的IDE已经多了自己的菜单,开发环境已经随着自己的意愿在改变了,程序员天生的满足感油然而生。

  现在,你可以在需要的时候点击菜单,了解你希望监控的邮件情况或者最近的天气情况,一切轻松的尽在掌握,Eclipse的插件,就是这样全能。

  4.总结

  那么,聪明的你有没有发现什么问题,对,上面的东西太粗糙,太简单了,你可以做进一步的优化设计和功能加强,比如,自己增加邮件配置文件而不是写在代码里面,动态监控弹出邮件预警(通过事先设定的紧急状态),你也许还会想起来很多的新的主意,比如我为什么不能有个能看电影的插件?或是Eclipse中飘出动听的音乐?别急,这些不一定需要你亲手去做,http://sourceforge.net/projects/rocexwang/ 有一个播放器插件,但是现在仅能播放音乐,国外已经有人用Eclipse开发游戏,也有人用Eclipse来做MIS系统的。http://www.matrix.org.cn/forum_view.asp?forum_id=25&view_id=10510 有一个国人开发的俄罗斯方块游戏,虽然简单了一点。当然,通过网址http://eclipse-plugins.2y.net/eclipse/index.jsp和http://www.eclipseplugincentral.com/你可以找到很多的插件,如果你知道什么更好的插件,请告诉我。

  Eclipse提供了一个纯的框架和插件结构,使得开发任何功能的插件都能成为现实。本文介绍了2个有趣的Eclipse插件的开发,可以使我们的工作环境增加了两个可爱的小功能,同时也使得你具备了基础的插件开发能力,借助Eclipse的强大功能,从此你可以把你的任何想法变为现实。同时请保持与别人的交流,我会很乐意了解你的新奇的插件,并收藏和学习任何好的插件,打造一个完全属于自己的个性化的开发环境。Eclipse将在不久的将来成为一个全能的Platform,这一点在全世界数以万计的开发人员的手中,正一点一点变为现实。
Eclipse Jad 3.3.0反编译插件使用指南 本文还有配套的精品资源,点击获取 简介Eclipse Jad 3.3.0是适用于Java开发者的Eclipse集成反编译工具,它能够将.class字节码转换为可读的源代码。本插件通过简单的步骤安装,并提供直观的界面来反编译Java类文件,使得开发者能够轻松理解调试代码。此版本不仅支持基本的反编译操作,还增加了代码高亮、折叠搜索等高级功能,以便更有效率地分析研究Jav... 阅读详情

相关推荐

eclipse-decompiler3.0

eclipse-decompiler3.0 eclipse-decompiler3.0 eclipse-decompiler3.0 eclipse-decompiler3.0 eclipse-decompiler3.0 eclipse-decompiler3.0

Eclipse3.0平台简介

概要Eclipse3.0平台与Eclipse2.1平台的一个重要的区别就是,Eclipse3.0平台建立在一个Java框架上,即Open Services Gateway Initiative(OSGi)服务平台.OSGi的采用,使Eclipse走上了完全动态平台的发展道路.本文先简要介绍OSGi框架,然后介绍OSGi框架Eclipse3.0平台的联系..  OSGi框架简介URL:ht...

走向程序员的一条道 367

eclipse3.0入门

eclipse3.0

Eclipse 3.0 简介插件开发示例

Eclipse 是一个很让人着迷的开发环境,它提供的核心框架可扩展的插件机制给广大的程序员提供了无限的想象创造空间。目前网上流传相当丰富且全面的开发工具方面的插件,但是Eclipse已经超越了开发环境的概念,可以想象Eclipse将成为未来的集成的桌面环境。目前的Eclipse本身就具备资源管理外部程序的功能,加上无所不能的插件,将构成一个丰富多彩的工作环境而不仅仅是一个IDE。  1.Ec

King.c.Tan's Blog 1096

使用RCP 开发应用程序--RCP入门(eclipse 3.0)

尽管没有先决条件,但是如果您下载、安装并配置 Eclipse 3.0、1.4 Java 虚拟机 Apache Ant,将会发现本教程还是很容易理解的。如果没有安装这些工具,请引用、下载并安装下列资源: Eclipse 3.0 可以从 http://www.eclipse.org/downloads/index.php 中获得。 Java 2 标准版,软件开发包(SDK)可以从 http:

4169

Eclipse插件开发

基础知识 1.Eclipse的架构 architecture=架构 platform=平台 2.扩展点 代码1-1 plugin.xml中声明扩展 <extension point="被使用扩展点的ID"> ...... </extension> Eclipse平台提供的扩展点有 增加菜单项 增加视图 增加编辑器 工作台资源访问的API是Eclipse提供的API中最基本的,在插件开发时使用频率较高的API。在这里不做详细的说明,在以后得例子中会出现一些这样的AP

hangge的学习基地 6357

eclipse java插件_Eclipse 简介插件开发

Eclipse 简介插件开发赵勇2004 年 11 月 03 日发布1.Eclipse 简介插件开发Eclipse 是一个很让人着迷的开发环境,它提供的核心框架可扩展的插件机制给广大的程序员提供了无限的想象创造空间。目前网上流传相当丰富且全面的开发工具方面的插件,但是 Eclipse 已经超越了开发环境的概念,可以想象 Eclipse 将成为未来的集成的桌面环境。目前的 Eclipse...

weixin_39636226的博客 351

Eclipse 简介插件开发示例 (IBM的文章)

Eclipse 是一个很让人着迷的开发环境,它提供的核心框架可扩展的插件机制给广大的程序员提供了无限的想象创造空间。目前网上流传相当丰富且全面的开发工具方面的插件,但是Eclipse已经超越了开发环境的概念,可以想象Eclipse将成为未来的集成的桌面环境。目前的Eclipse本身就具备资源管理外部程序的功能,加上无所不能的插件,将构成一个丰富多彩的工作环境而不仅仅是一个IDE。    1.

quixote_soho的专栏 2428

Eclipse 插件开发官方示例

这是比较经典的Eclipse插件开发方面的资料,传上来与大家一起分享,改示例涵盖的面比较广,相信能够很好的符合大家的口味。

eclipse3.0从入门到精通》

eclipse3.0从入门到精通》光盘2

eclipse插件开发官方示例

eclipse rcp插件开发官方示例,7月最新版.包含org.eclipse.ui.examples下所有内容.导入eclipse后,选择run as →Eclipse Application即可

Eclipse3.0.1上安装tanghan插件

Tanghan Plugin是jlinux开发Eclipse上运行的Hibernate的插件工具,可以辅助生成hbm映射文件POJO。具体情况请看以下网址:http://www.hibernate.org.cn/download/jlinux/help/但是我们发现tanghan的制作者只发布了支持Eclipe2.1.*Hibernatebanben2.0.3的版本以及支持Eclipe3

支持开源,支持java,支持Linux 3032

eclipse3.1简介及其插件- -

  eclipse3.1简介及其插件- - 引论     笔者使用Eclipse有些时日了,从Eclipse2.0使用到现在,今天从   http://www.eclips

tianxinluoming的专栏 714

Eclipse3.1 插件[转]

最新版Eclipse3.1及插件介绍                                作者:Make  日期:2005-07-01 19:21导读引论1.新特性2.新特性3.下载并安装4.总结引论    笔者使用Eclipse有些时日了,从Eclipse2.0使用到现在,今天从  http://www.eclipse.org岗站上下载了最新版的Eclipse3.1,使用之后犹感它

小李专栏 1698

eclipseeclipse插件开发()

  eclipse本身是一个开源平台, 给用户提供了很多扩展点。我们完全可以开发属于自己的一套插件,安装在eclipse插件目录下,即可使用我们的插件。 下面说下eclipse插件的快速开发。 1、在eclipse中创建plugin工程 (如果没有找到Plug-in Development 或 Plug-ins,看这个文章:https://blog.csdn.net/qq_40731414/a...

我的笔记本 1万+

最新版Eclipse3.1及插件介绍

               最新版Eclipse3.1及插件介绍                                作者:Make  日期:2005-07-01 19:21导读引论1.新特性2.新特性3.下载并安装4.总结引论    笔者使用Eclipse有些时日了,从Eclipse2.0使用到现在,今天从  http://www.eclipse.org岗站上下载了最新版的Eclip

1435
上一篇: Eclipse 3.0 简介和插件开发示例
下一篇: 把Gmail变成HTML空间
kingctan
博客等级 码龄22年 1粉丝 3原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值