您的位置:首页 > 编程语言 > Java开发

Eclipse 插件开发

2013-10-30 11:52 513 查看
1.Eclipse的架构

Eclipse是java的IDE(集成开发环境)。

本质上,Eclipse只是一个平台(Runtime(OSGi)),在这个平台上可以集成插件(Plugin),插件提供开发功能。而插件可以再集成插件。如:

Runtime(OSGi)->SWT->JFace->UI

Runtime(OSGi)->Resources

每一个插件可以扩展(Extension)上一层插件,同时可以暴露自己的扩展点(Extension Point),供下层插件扩展自己。



2.如何扩展已有的扩展点

1>编写plugin.xml

<plugin>

<extension point="extension point id">

</extension>

</plugin>

只需将你要扩展的扩展点id写上,就可以按照该扩展点要求的格式(Schema),来扩展它的功能了。

如,想添加一个功能键,就需要扩展Eclipse暴露出来的扩展点org.eclipse.ui.actionSets,按照它规定的格式(Schema)来编写plugin.xml:

<plugin>

<extension point="org.eclipse.ui.actionSets"> //声明扩展点

<actionSet label="Sample Action Set" visible="true" id="HelloPlugIn.actionSet"> //声明功能键组

<menu label="Sample &Menu" id="sampleMenu"> //声明功能键组的菜单

<separator name="sampleGroup"/>

</menu>

<action label="&Sample Action" icon="icons/sample.gif" tooltip="Hello, Eclipse world" //声明该功能键

toolbarPath="sampleGroup" menubarPath="sampleMenu/sampleGroup"

id="helloplugin.actions.SampleAction" class="helloplugin.actions.SampleAction" //声明按下该功能键的响应类,需要编写

/>

</actionSet>

</extension>

</plugin>

接下来我们只需要编写响应类即可。

2>编写扩展点需要的类。

编写扩展点需要的类,如上面,我们想为Eclipse添加一个功能键,当然需要编写一个当按下功能键后,用于响应的类。

该类通常需要实现扩展点提供的接口,或继承扩展点提供的父类,我们只需要实现(implement)接口的方法即可。

如功能键的响应类,我们只需要实现IWorkbenchWindowActionDelegate接口,实现run()方法即可。

public void run(IAction action) {

MessageDialog.openInformation(window.getShell(),"Hello Plug In","Hello Plug In");

}

当按下该功能键后,会弹出框,上写"Hello Plug In"。

3. 扩展点介绍。

既然我们已经知道,编写插件,就是扩展已知扩展点,那如果想写一定功能的插件(Plug In),就需要了解,都有那些扩展点(Extension Point)供我们扩展(Extension)。

Eclipse已经给我们暴露出了足够多的扩展点(Extension Point),以便我们写出功能。大概分为两类:

一是UI,用于扩展Eclipse的用户界面的操作;

一是Resource,用于扩展Eclipse的文件资源的操作。

1>UI扩展点



IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
IWorkbenchPage page = window.getActivePage();
IEditorPart part = page.getActiveEditor();


2> Resource扩展点



IWorkspaceRoot wsroot = ResourcesPlugin.getWorkspace().getRoot();
IProject[] projects = wsroot.getProjects();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: