ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:103KB ,
资源ID:5804266      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5804266.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Eclipse插件开发之实例解析.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Eclipse插件开发之实例解析.docx

1、Eclipse插件开发之实例解析Eclipse插件开发之实例解析篇2005.04.051.Eclipse简介和插件开发Eclipse 是一个很让人着迷的开发环境,它提供的核心框架和可扩展的插件机制给广大的程序员提供了无限的想象和创造空间。目前有着相当丰富且全面的开发工具方面的插件,但是Eclipse已经超越了开发环境的概念,可以想象Eclipse将成为未来的集成的桌面环境。目前的Eclipse本身就具备资源管理和外部程序的功能,加上无所不能的插件,将构成一个丰富多彩的工作环境而不仅仅是一个IDE。对于程序员来说,没有什么比可以随心所欲的定制工作环境更重要了,你的决心,勇气和创造力在与别人分享成

2、果的过程中一览无余。好了,你是不是心动了,如果你已经对Eclipse有一定的认识,那么,和我一起打造自己的个性化工作环境吧,首先我们一起开发一个天气预报的插件,然后我们打造属于自己的邮件快速监控功能。以下的工作基于一定的前提,那就是你是一名Java程序员,你很欣赏并正开始使用Eclipse这个超酷的工作环境,别忘了下载最新版的Eclipse3.0,本文基于Eclipse3.0开发。2.天气预报插件如果你已经厌倦了总是要登录某些网站从相关网页上获取信息,这里有一个让你通过Eclipse快速获取信息的新方法。让我们从头开始,做一个属于自己的天气预报插件吧,你的Eclipse将具有天气预报功能,是不

3、是很酷呢?在这一部分,我们将要实现一个Eclipse插件,他可以在任何我们想知道的时候通过简单的点击鼠标告诉我们本地区的天气预报,这当然很刺激。对于一个程序员而言,事情就应该如此。让我们开始吧,我们首先要定义一个插件,把他加到菜单和工具栏中。对于没有插件开发经验的你,可以参考教您如何创建、调试和安装Eclipse插件树立基本的插件开发意识,当然,本文将详细的辅助你完成这一创造性的工作。2.1最基础的插件你可以完全参考教您如何创建、调试和安装Eclipse插件的插件示例,制作你的第一个 hello Eclipse 插件,幸运的是,Eclipse3.0完全考虑到你的需求,通过菜单 File - N

4、ew- Other -Plug-in Project,输入项目名称,next出现对话框,只要在插件名处输入muplugin,next 以后选择 Hello,World的插件模板你可以直接新建一个名为myplugin的最简单的插件,但其实我们的天气预报并不比它复杂多少,建完改插件以后的效果如下图。现在,将项目作为运行时工作台运行(run run as runtime workbench),在一个全新的Eclipse窗口中,通过点击菜单 sample menu 的sample Action或者工具栏中的圆形Eclipse 图标,你将看到如下效果的对话框。 到此为止,天气预报插件的原始版做成了,通过

5、修改plugin.xml,我们将菜单改成中文形式,需要修改的地方就2处。 此时在运行时工作台,我们的菜单已经改变。 2.2用VisualEditer制作天气预报对话框虽然菜单是天气预报,但是我们需要的不是hello Eclispe对话框,我们需要的是告诉我们天气的对话框,当然需要我们从头开始,于是我们需要重新构建一个对话框,这个就需要 Visual Editor来帮助进行界面的开发。我们将使用Visual Editor实现一个Swing对话框,当然只用VE做一个对话框是有点大材小用,但是作为起点,已经合适了。选择对话框的超类为javax.swing.JDiaog,点击Finish按钮。等待一段

6、时间后,我们的对话框就基本生成了,鼠标点击左上角图标,直接输入天气预报就是对话框的标题,同时 我们可以看到左侧的VisualEditor面板。然后我们将该对话框于与刚才的天气预报菜单连接找到SampleAction的run函数,如下所示:public void run(IAction action) MessageDialog.openInformation( window.getShell(), Myplugin Plug-in, Hello, Eclipse world); 替换成如下代码 public void run(IAction action) WeatherDialog wd=n

7、ew WeatherDialog(); wd.setSize(400, 335); wd.show(); 此时,点击菜单运行,我们的对话框看起来象这个样子,在此基础上我们还要在上面增加天气预报信息 2.3增加天气预报功能 下面的部分是重点,我们将使用具有解析Html功能的Swing组件JEditPane,来获取网络上的现成的天气预报信息,根据上图,从 VisualEditor的面板中Swing Components组点击JEditPane,加入到对话框中。并修改对话框代码使得最终的代码如下: /* * Created on 2004-9-23 * */package myplugin;impo

8、rt java.io.BufferedReader;import java.io.InputStreamReader;import .URL;import javax.swing.JDialog;import javax.swing.JEditorPane;/* * Title: WatherDialog * Description: 这个是对话框类, 用于显示指定城市的当天的天气预报 * Copyright: Copyright (c) 2004 * Company:UF SOFT * author 赵勇 * version 1.0 */public class WatherDialog e

9、xtends JDialog String city=北京; private JEditorPane jEditorPane = null; /* * This method initializes * / public WatherDialog(String city) super(); this.city=city; initialize(); /* * This method initializes this * return void */ private void initialize() this.setContentPane(getJEditorPane(); try /构建UR

10、L对象 URL url =new URL( /cgi-bin/figureWeather/simpleSearch.cgi?city=+city); String temp=; BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(); /使用openStream得到一输入流 并由此构造一个BufferedReader对象 String inputLine; /从输入流不断的读数据, 直到读完为止 while (inputLine = in.readLine() != null) temp=tem

11、p+inputLine+n; /关闭输入流 in.close(); String weather =temp.substring ( temp.indexOf( )+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 JEdi

12、torPane getJEditorPane() if (jEditorPane = null) jEditorPane = new JEditorPane(); jEditorPane.setContentType( text/html); return jEditorPane; / jve:decl-index=0:visual-constraint=70,19以上代码中最关键的部分就是对话框中的JEditorPane对象,在初始化时,从一个URL 获取天气预报信息,表现为Html标记片段,不用解析,直接调用JEditorPane的setText 方法,就可以将Html格式的信息直接按解析

13、过的方式显示,也就是天气预报信息了,此时Action中的调用需要做修改 public void run(IAction action) WeatherDialog wd=new WeatherDialog(北京); wd.setSize(400, 335); wd.show(); 现在以运行时工作台的方式运行,点击天气预报菜单,可以看到下图: 如果你在上海或者其他城市,试着修改city参数为上海,再次运行,你将发现,你仍然能够得到该城市的天气预报。值得注意的是,Xmethod网站提供了一个天气预报的WebService,可惜只有美国的城市,不然我们可以使用Web Service调用获取天气预报

14、,将会更酷。 现在运行是工作台已经具备了天气预报的功能,还需要更进一步,将改插件导出发布,拷贝到Eclipse根目录的plugins目录中,重新启动(具体参见Eclipse帮助)。现在你自己的Eclipse,就具备了天气预报的功能,只要你点击鼠标,就可以在编程之余轻松的获取天气信息。 除非你的老板认为你在工作时间随时了解天气情况不是一个好主意,我认为你完全可以将这个插件纳入个人收藏的插件之列。你也可以在此基础上扩展,增加一些配置文件和属性设置,定制出满足自己要求的插件。如果能够增加信息的自动过滤和筛选,那将是一次很愉快的体验,如果你有时间和兴趣,不妨一试。3.邮件快速监控插件现在你的工作因为E

15、clipse而更加惬意,更具创造力,那么你还有什么不满?你是否厌倦了各种邮件客户端随时随地的骚扰你呢?你希望你在高兴的时候适时的了解一下邮件的概况?好了,既然想到了为什么犹豫呢,因为你是程序员,你就是要用Eclipse享受完全DIY的乐趣。3.1生成插件本部分我们将在以上myplugin插件的基础上增加一个邮件过滤显示的对话框,类似的我们通过VisualEditer创建一个名为MailDialog的对话框,并增加一个JEditPane用来显示邮箱中我们关注的信息。修改plugin.xml,增加一个我的邮件菜单 现在,你知道要创建一个MailAction的Action类,并在在Run中增加如下代

16、码 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.

17、setSize(400, 335);md.show();以上的代码编译不会通过,但是别着急,慢慢来,很快了。 3.2构建邮件监控对话框 当然你需要建立一个MailConfig类用来表示一个邮箱的具体设置已及相关信息,这里就不在累述说明,详情参见参考资料中的代码。需要说明的式MailConfig除了要记录一个邮箱的地址,用户名和密码外,还提供2个关键字数组,如果为空,不加过滤,如果关键字有值,系统会根据发件人和邮件标题中是否包含关键字来进行显示邮件信息,已保证你的绝对自由。 首先我们需要实现一个MailConfig类,表示邮件配置,每个MailConfig的对象代表一个邮件帐户,我们的系统将能显

18、示多个邮箱的配置,每个MailConfig中使用一个数组来保存需要过滤的收件人和邮件地址。 MailConfig类的中的变量如下: String popServer;String popUser;String popPassword;/设 置 需 要 过 滤 的 关 键 字 : 发 件 人 和 邮 件 主 题String strFrom;String strSubject; /是 否 显 示 邮 件 内 容 boolean isViewContent=false;同样,我们将使用一个对话框来显示邮件信息,MailDialog需要引用javaMail.jar,和activation.jar这两个

19、类包,确保已经有这两个类包并加入到项目的类路径中。最后的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;imp

20、ort 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 jEd

21、itorPane = 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 initialize

22、s 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

23、(); e.printStackTrace(); /*取得所有的邮箱的需要监控的邮件信息 * * return String */ private String getAllMailInfo() String allMailInfo=; if (mc.length 1) allMailInfo=没有配置邮箱!; else for(int i=0;imc.length;i+) /循环获取每个邮箱的邮件信息 allMailInfo=allMailInfo+ getMailInfo(mci); /还没有收到相关的邮件 if (allMailInfo.trim().length() =0) allMa

24、ilInfo=未检测到相关新邮件!; 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.get

25、DefaultInstance( 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)

26、; 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= msgsi; /取得每封邮件的信息, 需要引用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; /* *

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1