准备(使用Visual Editor开发)
1.下载eclipse-SDK-3.2-win32.zip,解压到C:\eclipse
2.下载emf-sdo-runtime-2.2.0.zip、GEF-runtime-3.2.zip、VE-runtime-1.2.1.zip、VE-SDK-1.2.1.zip,分别解压,将解压后的plugins和features文件夹下的文件分别复制到C:\eclipse\plugins和C:\eclipse\features文件夹中。
开始开发:
新建一个Java Project名字为myplugin,在myplugin.actions中新建一个WeatherAction 类,代码如下:
package myplugin.actions;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
public class WeatherAction implements IWorkbenchWindowActionDelegate
{
public WeatherAction()
{
}
public void run(IAction action)
{
WeatherDialog wd = new WeatherDialog();
wd.setSize(800, 520);
wd.show();
}
public void selectionChanged(IAction action, ISelection selection)
{
}
public void dispose()
{
}
public void init(IWorkbenchWindow window)
{
}
}
其中WeatherDialog类的代码如下(新建一个Visual Editor类):
package myplugin.actions;
import java.awt.Frame;
import java.awt.Color;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import javax.swing.JDialog;
import javax.swing.JEditorPane;
public class WeatherDialog extends JDialog
{
private static final long serialVersionUID = 1L;
private JEditorPane jEditorPane = null;
public WeatherDialog()
{
super();
initialize();
}
public WeatherDialog(Frame owner)
{
super(owner);
initialize();
}
private void initialize()
{
this.setContentPane(getJEditorPane());
String line = "";
URL url = null;
URLConnection conn = null;
try
{
url = new URL("http://tq.8684.cn/beijing_beijing");
conn = url.openConnection();
HttpURLConnection httpconn =(HttpURLConnection)conn;
if(httpconn.getResponseCode() != HttpURLConnection.HTTP_OK)
return;
BufferedReader br = new BufferedReader(new InputStreamReader(httpconn.getInputStream()));
while(br.ready())
{
line = br.readLine();
if(line.indexOf("北京 北京天气") >= 0)
break;
}
br.readLine();
line = br.readLine();
line = line.replaceAll("bgcolor=\"#6699cc\"", "bgcolor=\"#FF0000\"");
line = "<html><body text=\"#0000FF\"><h2>天气预报:北京</h2>" + line + "</body></html>";
br.close();
httpconn.disconnect();
this.jEditorPane .setText(line);
}
catch (Exception e)
{
e.printStackTrace();
}
this.setTitle("天气预报");
this.setSize(400, 166);
}
private JEditorPane getJEditorPane()
{
if (jEditorPane == null)
{
jEditorPane = new JEditorPane();
jEditorPane.setBackground(Color.BLUE);
jEditorPane.setContentType( "text/html");
jEditorPane.setEnabled(false);
jEditorPane.setEditable(false);
}
return jEditorPane;
}
}
plugin.xml配置文件的内容为:
<?xml version="1.0" encoding="UTF-8"?> <?eclipse version="3.2"?> <plugin> <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.WeatherAction" tooltip="Hello, Eclipse world" menubarPath="sampleMenu/sampleGroup" toolbarPath="sampleGroup" id="myplugin.actions.WeatherAction"> </action> <action label="北京时间" icon="icons/sample.gif" class="myplugin.actions.BJTimeAction" tooltip="Hello, Eclipse world" menubarPath="sampleMenu/sampleGroup" toolbarPath="sampleGroup" id="myplugin.actions.BJTimeAction"> </action> <action label="大中国" icon="icons/sample.gif" class="myplugin.actions.SampleAction" tooltip="Hello, Eclipse world" menubarPath="sampleMenu/sampleGroup" toolbarPath="sampleGroup" id="myplugin.actions.SampleAction"> </action> </actionSet> </extension> </plugin>
如下面的图片所示:
从程序中可以看到,这个天气预报是从http://tq.8684.cn/beijing_beijing获取的,每天更新。
插件部署:
点击File,选择export,选择Plug-in Development下面的Deployable plug-ins and fragments,点击next,选择一个输出目录即可。将这个jar包复制到C:\eclipse\plugins,重启eclipse即可看到自己的eclipse插件。