Eclipse插件开发之实例解析Word文档下载推荐.docx
- 文档编号:18791318
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:24
- 大小:103KB
Eclipse插件开发之实例解析Word文档下载推荐.docx
《Eclipse插件开发之实例解析Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Eclipse插件开发之实例解析Word文档下载推荐.docx(24页珍藏版)》请在冰豆网上搜索。
myplugin.actionSet"
>
<
menu
我的空间"
sampleMenu"
separator
name="
sampleGroup"
/separator>
/menu>
action
天气预报"
icon="
icons/sample.gif"
class="
myplugin.actions.SampleAction"
tooltip="
Hello,Eclipseworld"
menubarPath="
sampleMenu/sampleGroup"
toolbarPath="
/action>
此时在运行时工作台,我们的菜单已经改变。
2.2用VisualEditer制作天气预报对话框
虽然菜单是天气预报,但是我们需要的不是helloEclispe对话框,我们需要的是告诉我们天气的对话框,当然需要我们从头开始,于是我们需要重新构建一个对话框,这个就需要VisualEditor来帮助进行界面的开发。
我们将使用VisualEditor实现一个Swing对话框,当然只用VE做一个对话框是有点大材小用,但是作为起点,已经合适了。
选择对话框的超类为javax.swing.JDiaog,点击Finish按钮。
等待一段时间后,我们的对话框就基本生成了,鼠标点击左上角图标,直接输入天气预报就是对话框的标题,同时我们可以看到左侧的VisualEditor面板。
然后我们将该对话框于与刚才的天气预报菜单连接找到SampleAction的run函数,如下所示:
publicvoidrun(IActionaction){
MessageDialog.openInformation(
window.getShell(),
"
MypluginPlug-in"
);
}
替换成如下代码
publicvoidrun(IActionaction)
{
WeatherDialogwd=newWeatherDialog();
wd.setSize(400,335);
wd.show();
此时,点击菜单运行,我们的对话框看起来象这个样子,在此基础上我们还要在上面增加天气预报信息
2.3增加天气预报功能
下面的部分是重点,我们将使用具有解析Html功能的Swing组件JEditPane,来获取网络上的现成的天气预报信息,根据上图,从VisualEditor的面板中SwingComponents组点击JEditPane,加入到对话框中。
并修改对话框代码使得最终的代码如下:
/*
*Createdon2004-9-23
**/
packagemyplugin;
importjava.io.BufferedReader;
importjava.io.InputStreamReader;
import.URL;
importjavax.swing.JDialog;
importjavax.swing.JEditorPane;
/**
*<
p>
Title:
WatherDialog<
/p>
Description:
这个是对话框类,
用于显示指定城市的当天的天气预报<
Copyright:
Copyright(c)2004<
Company:
UFSOFT<
*@author赵勇
*@version1.0
*/
publicclassWatherDialogextendsJDialog
{
Stringcity="
北京"
;
privateJEditorPanejEditorPane=null;
/**
*Thismethodinitializes
*/
publicWatherDialog(Stringcity)
super();
this.city=city;
initialize();
*Thismethodinitializesthis
*@returnvoid
privatevoidinitialize()
this.setContentPane(getJEditorPane());
try
//构建URL对象
URLurl
=newURL("
//cgi-bin/figureWeather/simpleSearch.cgi?
city="
+city);
Stringtemp="
"
BufferedReaderin
=newBufferedReader(newInputStreamReader(url.openStream()));
//使用openStream得到一输入流
并由此构造一个BufferedReader对象
StringinputLine;
//从输入流不断的读数据,
直到读完为止
while((inputLine=in.readLine())
!
=null)
temp=temp+inputLine+"
\n"
//关闭输入流
in.close();
Stringweather
=temp.substring
(
temp.indexOf("
body"
),
temp.lastIndexOf("
body>
)+5);
this.jEditorPane.setText(weather);
}
catch(Exceptione)
e.printStackTrace();
this.setTitle("
this.setSize(400,166);
*ThismethodinitializesjEditorPane
*
*@returnjavax.swing.JEditorPane
*/
privateJEditorPanegetJEditorPane()
if(jEditorPane==null)
jEditorPane=newJEditorPane();
jEditorPane.setContentType("
text/html"
returnjEditorPane;
}
//@jve:
decl-index=0:
visual-constraint="
70,19"
以上代码中最关键的部分就是对话框中的JEditorPane对象,在初始化时,从一个URL获取天气预报信息,表现为Html标记片段,不用解析,直接调用JEditorPane的setText方法,就可以将Html格式的信息直接按解析过的方式显示,也就是天气预报信息了,此时Action中的调用需要做修改
WeatherDialogwd=newWeatherDialog("
现在以运行时工作台的方式运行,点击天气预报菜单,可以看到下图:
如果你在上海或者其他城市,试着修改city参数为"
上海"
,再次运行,你将发现,你仍然能够得到该城市的天气预报。
值得注意的是,Xmethod网站提供了一个天气预报的WebService,可惜只有美国的城市,不然我们可以使用WebService调用获取天气预报,将会更酷。
现在运行是工作台已经具备了天气预报的功能,还需要更进一步,将改插件导出发布,拷贝到Eclipse根目录的plugins目录中,重新启动(具体参见Eclipse帮助)。
现在你自己的Eclipse,就具备了天气预报的功能,只要你点击鼠标,就可以在编程之余轻松的获取天气信息。
除非你的老板认为你在工作时间随时了解天气情况不是一个好主意,我认为你完全可以将这个插件纳入个人收藏的插件之列。
你也可以在此基础上扩展,增加一些配置文件和属性设置,定制出满足自己要求的插件。
如果能够增加信息的自动过滤和筛选,那将是一次很愉快的体验,如果你有时间和兴趣,不妨一试。
3.邮件快速监控插件
现在你的工作因为Eclipse而更加惬意,更具创造力,那么你还有什么不满?
你是否厌倦了各种邮件客户端随时随地的骚扰你呢?
你希望你在高兴的时候适时的了解一下邮件的概况?
好了,既然想到了为什么犹豫呢,因为你是程序员,你就是要用Eclipse享受完全DIY的乐趣。
3.1生成插件
本部分我们将在以上myplugin插件的基础上增加一个邮件过滤显示的对话框,类似的我们通过VisualEditer创建一个名为MailDialog的对话框,并增加一个JEditPane用来显示邮箱中我们关注的信息。
修改plugin.xml,增加一个"
我的邮件"
菜单
邮件信息"
myplugin.actions.MailAction"
现在,你知道要创建一个MailAction的Action类,并在在Run中增加如下代码
MailConfigmail=newMailConfig();
StringpopServer="
server"
StringpopUser="
zhaoyong"
StringpopPassword="
1234"
//设置需要过滤的关键字:
发件人和邮件主题
String[]strFrom=newString[]{"
};
String[]strSubject=newString[]{"
测试"
MailConfig[]mc=newMailConfig[]{mail};
MailDialogmd=newMailDialog(mc);
System.err.println("
runrunrun"
);
md.setSize(400,335);
md.show();
以上的代码编译不会通过,但是别着急,慢慢来,很快了。
3.2构建邮件监控对话框
当然你需要建立一个MailConfig类用来表示一个邮箱的具体设置已及相关信息,这里就不在累述说明,详情参见参考资料中的代码。
需要说明的式MailConfig除了要记录一个邮箱的地址,用户名和密码外,还提供2个关键字数组,如果为空,不加过滤,如果关键字有值,系统会根据发件人和邮件标题中是否包含关键字来进行显示邮件信息,已保证你的绝对自由。
首先我们需要实现一个MailConfig类,表示邮件配置,每个MailConfig的对象代表一个邮件帐户,我们的系统将能显示多个邮箱的配置,每个MailConfig中使用一个数组来保存需要过滤的收件人和邮件地址。
MailConfig类的中的变量如下:
StringpopServer;
StringpopUser;
StringpopPassword;
//设置需要过滤的关键字
:
发件人和邮件主题
String[]strFrom;
String[]strSubject;
//是否显示邮件内容
booleanisViewContent=false;
同样,我们将使用一个对话框来显示邮件信息,MailDialog需要引用javaMail.jar,和activation.jar这两个类包,确保已经有这两个类包并加入到项目的类路径中。
最后的MailDialog代码如下:
importjava.io.IOException;
importjava.util.Properties;
importjavax.mail.Folder;
importjavax.mail.Message;
importjavax.mail.MessagingException;
importjavax.mail.Session;
importjavax.mail.Store;
importjavax.mail.internet.InternetAddress;
importjavax.swing.JTextPane;
*@authorzhaoyong
*
*TODOTochangethe
templateforthis
generatedtypecommentgoto
*Window-Preferences-
Java-CodeStyle-CodeTemplates
publicclassMailDialogextendsJDialog
privateJTextPanejTextPane=null;
//可以显示多个邮件配置
MailConfig[]mc=null;
*构造函数
*@parammc:
需要显示的多个邮箱配置对象。
publicMailDialog(MailConfig[]mc)
if(mc!
=null)
this.mc=mc;
else
System.err.println
(
邮件配置错误!
*初始化
//设定显示内容的面板
this.setContentPane
(getJTextPane());
//取得所有的新邮件信息
Strings=getAllMailInfo();
//将信息显示在对话框中
this.jTextPane.setText(s);
this.setSize(251,100);
{
//发生错误显示错误信息
this.jTextPane.setText
(e.toString());
/**取得所有的邮箱的需要监控的邮件信息
*
*@returnString
privateStringgetAllMailInfo()
StringallMailInfo="
if(mc.length<
1)
allMailInfo="
没有配置邮箱!
else
{
for(inti=0;
i<
mc.length;
i++)
{
//循环获取每个邮箱的邮件信息
allMailInfo=allMailInfo+
getMailInfo(mc[i]);
}
}
//还没有收到相关的邮件
if(allMailInfo.trim().length()==0)
未检测到相关新邮件!
returnallMailInfo;
/*
*得到一个邮箱中满足条件的
所有新邮件的字符串形式
**/
privateStringgetMailInfo(MailConfigmc)
//最终输出的邮件信息
StringmailInfo="
//每个邮箱服务器上的Store和Folder对象
Storestore=null;
Folderfolder=null;
Propertiesprops=System.getProperties();
//与邮件服务器生成一个Session
Sessionsession=
Session.getDefaultInstance(props,null);
//给出服务器,用户名,密码连接服务器
store=session.getStore("
pop3"
store.connect(mc.getPopServer(),mc.getPopUser(),mc.getPopPassword());
//取得默认的邮件Folder
folder=store.getDefaultFolder();
if(folder==null)
thrownewException
("
Nodefaultfolder"
//取得收件箱
folder=folder.getFolder("
INBOX"
thrownewException("
NoPOP3INBOX"
//以只读方式打开收件箱
folder.open(Folder.READ_ONLY);
//获取所有新邮件并处理
Message[]msgs=folder.getMessages();
for(inti=0;
i<
msgs.length;
i++)
Messagemessage=msgs[i];
//取得每封邮件的信息,
需要引用MailConfig对象进行关键字过滤
mailInfo=mailInfo+
getMessageInfo(message,mc);
catch(Exceptionex)
ex.printStackTrace();
finally
//安全的关闭邮件服务器资源
if(folder!
=null)folder.close(true);
if(store!
=null)store.close();
catch(Exceptionex2)
ex2.printStackTrace();
returnmailInfo;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Eclipse 插件 开发 实例 解析
![提示](https://static.bdocx.com/images/bang_tan.gif)