|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
java主要分三块,j2se:java的基础核心语言。j2me:java的微型模块,专门针对内存小,没有持续电源等小型设备。j2ee:java的企业模块,专门针对企业数据库服务器的连接维护。
Eclipse的扩大机制是其一个主要特征,但跟着Eclipse功效越做越强,插件愈来愈多,你会发明GUI上的图标愈来愈多,Menu,toolbar,contextmenu都被占满了,实在良多item并非我们必要的,可是contribute这些item的插件我们是必要的,那怎样往失落它们扩大的那些菜单项呢?
1.在Plugin.xml中定制
这是最复杂的举措,良多时分我们本人想写代码往复失落一些菜单项,但效果其实不好.以是能在Plugin.xml中定制的,我们就 只管写在plugin.xml内里.上面举一个右键菜单的例子:
扩大右键菜单必要扩大org.eclipse.ui.popupMenus扩大点,我们一样平常都在它上面new一个action,但这个action扩大以后不论在 任何界面城市呈现,假如我们想在某些前提下埋没失落它该怎样办?细心察看下org.eclipse.ui.popupMenus扩大点,实在我们还能够新建objectContribution扩大
<extensionpoint="org.eclipse.ui.popupMenus">
<objectContribution
id="my.example.objectContribution"
nameFilter="*example*"
objectClass="java.io.File">
<action
class="my.example.MyAction"
id="my.example.MyAction"
label="Exe"
menubarPath="additional">
</action>
</objectContribution>
</extension>
objectContribution内里也包括一个action,但这个action在popupmenu里呈现是有前提的:我们给它界说了一个nameFilter, 只要当selection()的path中包括了"example"才会显现,不然这个action是不会呈现在 popupmenu里的.这里的selection假定选中的是一个File,假如选中的是你本人写的类,那namefilter会在你的类的toString办法内里找keyword.
2.利用Eclipse的Activities扩大
plugin.xml其实不能办理一切成绩,当我们其实没有举措在plugin.xml中限定某些extension的呈现的时分,能够思索利用Eclipse的Activities.Activities的官方界说人人能够google一下eclipse的help.我团体的了解就是它能够和perspective一样把持UI的显现,可是Perspective计划的太易于扩大了,假设PluginA在perspective上扩大了一个UI,那末PluginB在每次进进这个perspective的时分就必定能够看得见它,并且在Eclipse的扩大机制下,PluginB是没有权力往删了PluginA的contribution的(Eclipse的ExtensionRegistry却是供应了一个removeExtension办法,但运转的时分会报错).在如许的情形下,Activities的代价就表现出来了,你只需给它一个Extension的id,它就能够帮你把这个Extensiondisable失落.比方:
<extension
point="org.eclipse.ui.activities">
<activity
id="my.example.activity"
name="WizardActivity">
</activity>
<activityPatternBinding
activityId="my.example.activity"
pattern="my.example/mywizard">
</activityPatternBinding>
</extension>
对照主要的是activityPatternBinding中的pattern属性,它是由pluginid+"/"+local-id构成.好比在插件my.example中扩大了 org.eclipse.ui.newWizards,id是mywizard,那末下面这个activityPatternBinding就会disable失落my.example的mywizard扩大,你在 GUI中就看不见这个wizard了.pattern是撑持正则表达式的,以是假如有"."的话必要用本义字符.注重,这里的disable的意义并非说我把mywizard这个扩大删失落了,而是屏障了它,mywizard仍旧在 ExtensionRegistry中.
3.用代码来静态把持UI
办法2只是埋没失落一些扩大,可是有一些需求并非复杂的埋没就能够了,我比来碰着的一个需求就是:有一个flag,只要当flag==1的时分扩大是可见的,不然是不成见的,必要disable这个扩大.这时候就必需要加一些代码才干完成了,仍是以办法2中的mywizard为例:
IWorkbenchActivitySupport workbenchActivitySupport = PlatformUI.getWorkbench().getActivitySupport();
IActivityManager activityManager = workbenchActivitySupport.getActivityManager();
Set enabledActivityIds = new HashSet(activityManager.getEnabledActivityIds());
if(flag==1)
{
if (enabledActivityIds.add("my.example.activity"))
workbenchActivitySupport.setEnabledActivityIds(enabledActivityIds);
}
else{
if(enabledActivityIds.remove("my.example.activity"))
workbenchActivitySupport.setEnabledActivityIds(enabledActivityIds);
}
Activities能够是enable大概disable的,当你在plugin.xml中界说好了一个Activity,缺省它是disable的,就是说activityPatternBinding 婚配的扩大是会被disable的,但你也能够把Activities设成enable的(在plugin.xml大概用代码都能够设置),它婚配的扩大是能够一般利用的.
在下面的codesample中,我们经由过程activityManager.getEnabledActivityIds()失掉一切enable的Activities.假如flag==1,那my.example.activity 也应当被到场到enableActivities中,如许mywizard就能够显现在界面上,反之,就要在enableActivities中remove失落my.example.activity,它就酿成
disable,会把mywizard埋没.
但是我同意你的观点,对于大型项目来说,应该是采用框架的一部分,根据功能的不同而改进,欢迎你能再提出些宝贵意见,我会多多学习的。说到jbuilder,我可能是个人感觉,用的时候确实没有vs爽,我最喜欢的IDE是net网页编程beans,谢谢。 |
|