Eclipse插件开发实例 - native2ascii

摘要

在对Java应用程序进行国际化的时候,需要写对应的国际化资源properties文件,在使用像resourcebundle这样的第三方插件可以很方便的实现我们的要求。但是有时候,想要编辑的并不是properties文件,只是用于查看/查找某些内容。在使用第三方的插件的时候就显得有些繁琐。在这里通过开发一个插件来实现一个即时的native2ascii功能。

 

历史

2010-04-07:完成摘要、功能与部分设计

2010-04-09:完成设计

 

功能

1,将所选内容进行native2ascii输出(unicode)

2,查看unicode内容对应的本地编码给出

3,将某个文件进行native2ascii后输出到另一个文件

4,将某个文件进行native2ascii reverse后输出到另一个文件

 

使用

1,选择一段文本,右键,在弹出菜单中选择unicode tool -> native2ascii,可打开unicode视图

2,选择一个文件,右键,在弹出菜单中选择unicode tool -> native2ascii,按f5刷新当前目录,可看到转换后的文件

 

设计

1,添加一个视图,主要由左,右两个文本框组成,分别显示转码前的输出及转码后的输出

     视图中给workbenchwindow添加一个selectionlister,当变化时,更新左,右文本框内的内容

     视图中添加一个工具项,以决定是native2ascii还是native2ascii reverse

2,注册一个右键级联菜单,当选择的是一段文本(ITextSelection)时可见,包含native2ascii和ascii2native两个子菜单分别实现功能1和功能2

3,注册一个右键菜单,当选择的是一个文件(IFile)时可见,包含native2ascii和ascii2native两个子菜单分别实现功能3和功能4

 

实现

1,新建一个插件工程。

2,使用扩展添加一个View,推荐使用向导生成

3,使用popupMenu添加一个menu和action,推荐使用向导生成

4,使用ui.commands扩展添加两个command,使用ui.menus扩展将command添加到popupMenu中

完整的配置如下:

<plugin> <extension point="org.eclipse.ui.popupMenus"> <objectContribution objectClass="org.eclipse.core.resources.IFile" id="org.melord.pde.unicodetool.popup.unicode"> <menu label="Unicode Tool" path="additions" id="org.melord.pde.unicodetool.menu.popup.unicode"> <separator name="group1"> </separator> </menu> <action label="Native to Ascii" class="org.melord.pde.unicodetool.popup.actions.Native2AsciiAction" menubarPath="org.melord.pde.unicodetool.menu.popup.unicode/group1" id="org.melord.pde.unicodetool.action.native2ascii"> </action> <action class="org.melord.pde.unicodetool.popup.actions.Ascii2NativeAction" id="org.melord.pde.unicodetool.action.ascii2native" label="Ascii to Native" menubarPath="org.melord.pde.unicodetool.menu.popup.unicode/group1"> </action> </objectContribution> </extension> <extension point="org.eclipse.ui.views"> <view class="org.melord.pde.unicodetool.views.UnicodeView" icon="icons/sample.gif" id="org.melord.pde.unicodetool.views.UnicodeView" name="Unicode View"> </view> </extension> <extension point="org.eclipse.ui.commands"> <command defaultHandler="org.melord.pde.unicodetool.handlers.Native2AsciiHandler" id="org.melord.pde.unicodetool.commands.native2ascii" name="Native to Ascii"> </command> <command defaultHandler="org.melord.pde.unicodetool.handlers.Ascii2NativeHandler" id="org.melord.pde.unicodetool.commands.ascii2native" name="Ascii to Native"> </command> </extension> <extension point="org.eclipse.ui.menus"> <menuContribution locationURI="popup:org.eclipse.ui.popup.any?after=additions"> <menu id="org.melord.pde.unicodetool.menus.sampleMenu" label="Unicode Tool" mnemonic="M"> <command commandId="org.melord.pde.unicodetool.commands.native2ascii" id="org.melord.pde.unicodetool.menus.command.native2ascii" mnemonic="N"> </command> <command commandId="org.melord.pde.unicodetool.commands.ascii2native" id="org.melord.pde.unicodetool.menus.command.ascii2native" mnemonic="A"> </command> <visibleWhen> <iterate ifEmpty="false"> <instanceof value="org.eclipse.jface.text.ITextSelection"> </instanceof> </iterate> </visibleWhen> </menu> </menuContribution> </extension> 

 

 

5,实现command对应的Handler类与popupAction对应的Action类(请参考附件中的源代码)

6,附录

    1,插件源文件工程

    2,插件运行效果截图

    3,插件如有bug,欢迎指出

 

 

 

 

 

 

你可能感兴趣的:(eclipse,UI)