Eclipse 是一个很让人着迷的开发环境它提供的核心框架和可扩展的插件机制给广大的程序员提供了无限的想象和创造空间目前网上流传相当丰富且全面的开发工具方面的插件但是Eclipse已经超越了开发环境的概念可以想象Eclipse将成为未来的集成的桌面环境目前的Eclipse本身就具备资源管理和外部程序的功能加上无所不能的插件将构成一个丰富多彩的工作环境而不仅仅是一个IDE
Eclipse简介和插件开发
Eclipse 是一个很让人着迷的开发环境它提供的核心框架和可扩展的插件机制给广大的程序员提供了无限的想象和创造空间目前网上流传相当丰富且全面的开发工具方面的插件但是Eclipse已经超越了开发环境的概念可以想象Eclipse将成为未来的集成的桌面环境目前的Eclipse本身就具备资源管理和外部程序的功能加上无所不能的插件将构成一个丰富多彩的工作环境而不仅仅是一个IDE对于程序员来说没有什么比可以随心所欲的定制的工作环境更重要你的决心勇气和创造力在与别人分享成果的过程中一览无余好了你是不是心动了如果你已经对Eclipse有一定的认识那么和我一起打造自己的个性化工作环境吧首先我们一起开发一个天气预报的插件然后我们打造属于自己的邮件快速监控功能
以下的工作基于一定的前提那就是你是一名Java程序员你很欣赏并正开始使用Eclipse这个超酷的工作环境别忘了下载最新版的Eclipse本文基于Eclipse开发
天气预报插件
如果你已经厌倦了总是要登录某些网站从相关网页上获取信息这里有一个让你通过Eclipse快速获取信息的新方法让我们从头开始做一个属于自己的天气预报插件吧你的Eclipse将具有天气预报功能是不是很酷呢?
在这一部分我们将要实现一个Eclipse插件他可以在任何我们想知道的时候通过简单的点击鼠标告诉我们本地区的天气预报这当然很刺激对于一个程序员而言事情就应该如此让我们开始吧我们首先要定义一个插件把他加到菜单和工具栏中对于没有插件开发经验的你可以参考《开发 Eclipse 插件》树立基本的插件开发意识当然本文将详细的辅助你完成这一创造性的工作
最基础的插件
打开菜单 File > New> Other >Plugin Project输入项目名称next出现对话框只要在插件名处输入mupluginnext 以后选择 HelloWorld的插件模板你可以直接新建一个名为myplugin的最简单的插件但其实我们的天气预报并不比它复杂多少建完改插件以后的效果如下图
现在将项目作为运行时工作台运行(run - run as runtime workbench)在一个全新的Eclipse窗口中通过点击菜单 sample menu 的sample Action或者工具栏中的圆形Eclipse 图标你将看到如下效果的对话框
到此为止天气预报插件的原始版做成了通过修改pluginxml我们将菜单改成中文形式需要修改的地方就处详见表格
<actionSet label=Sample Action Set visible=true id=mypluginactionSet>
<menu label=我的空间 id=sampleMenu>
<separator name=sampleGroup>
</separator>
</menu>
<action label=天气预报 icon=icons/samplegif class=mypluginactionsSampleAction
tooltip=Hello Eclipse world menubarPath=sampleMenu/sampleGroup
toolbarPath=sampleGroup id=mypluginactionsSampleAction>
</action>
此时在运行时工作台我们的菜单已经改变
用VisualEditer制作天气预报对话框
虽然菜单是天气预报但是我们需要的不是hello Eclispe对话框我们需要的是告诉我们天气的对话框当然需要我们从头开始于是我们需要重新构建一个对话框这个就需要 Visual Editor来帮助进行界面的开发我们将使用Visual Editor实现一个Swing对话框当然只用VE做一个对话框是有点大材小用但是作为起点已经合适了
首先构建Visual Editer开发环境(读者可参考相关资料)当一切准备齐全鼠标右键点击PackgeExpoler中的 mupluginactionsjava文件从弹出式菜单中选择 new>other>VisualClass新建一个可视化的类弹出界面如下图
选择next然后在name中输入WeatherDialog这个就是我们用来显示天气预报的dialog
选择该对话框的超类为javaxswingJDiaog点击Finish按钮等待一段时间后我们的对话框就基本生成了鼠标点击左上角图标直接输入天气预报就是对话框的标题同时 我们可以看到左侧的VisualEditor面板
然后我们将该对话框于与刚才的天气预报菜单连接找到SampleAction的run函数如下所示
public void run(IAction action) {
MessageDialogopenInformation(
windowgetShell()Myplugin Plugin Hello Eclipse world);
}
替换成如下代码
public void run(IAction action)
{
WeatherDialog wd=new WeatherDialog();
wdsetSize( );
wdshow();
}
此时点击菜单运行我们的对话框看起来象这个样子在此基础上我们还要在上面增加天气预报信息
增加天气预报功能
下面的部分是重点我们将使用具有解析Html功能的Swing组件JEditPane来获取网络上的现成的天气预报信息根据上图从 VisualEditor的面板中Swing Components组点击JEditPane加入到对话框中并修改对话框代码使得最终的代码如下
/*
* Created on
* */
package myplugin;
import javaioBufferedReader;
import javaioInputStreamReader;
import URL;
import javaxswingJDialog;
import javaxswingJEditorPane;
/**
* <p>Title: WatherDialog</p>
* <p>Description: 这个是对话框类用于显示指定城市的当天的天气预报</p>
* <p>Copyright: Copyright (c) </p>
* <p>Company:UF SOFT</p>
* @author 赵勇
* @version
*/
public class WatherDialog extends JDialog
{
String city=北京;
private JEditorPane jEditorPane = null;
/**
* This method initializes
* /
public WatherDialog(String city)
{
super();
thiscity=city;
initialize();
}
/**
* This method initializes this
* @return void
*/
private void initialize()
{
thissetContentPane(getJEditorPane());
try
{
//构建URL对象
URL url =new URL(bin/figureWeather/simpleSearchcgi?city=+city);
String temp=;
BufferedReader in
= new BufferedReader(new InputStreamReader(urlopenStream()));
//使用openStream得到一输入流并由此构造一个BufferedReader对象
String inputLine;
//从输入流不断的读数据直到读完为止
while ((inputLine = inreadLine()) != null)
temp=temp+inputLine+\n;
//关闭输入流
inclose();
String weather
=tempsubstring ( tempindexOf( <body)
templastIndexOf( body>)+);
thisjEditorPane setText(weather);
}
catch (Exception e)
{
eprintStackTrace();
}
thissetTitle(天气预报);
thissetSize( );
}
/**
* This method initializes jEditorPane
*
* @return javaxswingJEditorPane
*/
private JEditorPane getJEditorPane()
{
if (jEditorPane == null)
{
jEditorPane = new JEditorPane();
jEditorPanesetContentType( text/html);
}
return jEditorPane;
}
} // @jve:declindex=:visualconstraint=
以上代码中最关键的部分就是对话框中的JEditorPane对象在初始化时从一个URL 获取天气预报信息表现为Html标记片段不用解析直接调用JEditorPane的setText 方法就可以将Html格式的信息直接按解析过的方式显示也就是天气预报信息了
此时Action中的调用需要做修改
public void run(IAction action)
{
WeatherDialog wd=new WeatherDialog(北京);
wdsetSize( );
wdshow();
}
现在以运行时工