2011-11-23 64 views
1

我正在研究Android的Eclipse插件。为了使插件如果选择的文件夹是一个项目,我在插件清单添加Android项目的对象类

org.eclipse.core.resources.IProject

为对象类控制才可见。但是,这使得控件对于任何Eclipse项目都可见。是否有可能让插件仅对Android项目可见?我没有找到像IAndroidProject这样的界面。

回答

1

这不会通过接口或“instanceof”测试来完成。您需要利用Eclipe的“自然”概念。

基本上,您需要调用“IProject.getNature()”并检查它是否返回“null”(不是Android项目)或实际的IProjectNature实例。如果我没有记错,Android项目的ID本质是com.android.ide.eclipse.adt.AndroidNature

编辑:请注意,如果你想通过plugin.xml中声明(“时”或“enabledWhen”或这样的)来实现这一点,你需要有一个“和”含有:

  • 一个“instanceof”测试检查org.eclipse.core.resources.IProject
  • 测试org.eclipse.core.resources.projectNature检查上述字符串。

,赋予类似的东西:

<and> 
    <instanceof value="org.eclipse.core.resources.IProject"/> 
    <test 
     property="org.eclipse.core.resources.projectNature" 
     value="com.android.ide.eclipse.adt.AndroidNature"> 
    </test> 
</and> 
+0

感谢您的宝贵信息。你尽力回答你的问题。但我无法这样做。但后来我搜索了我的问题,发现了这一点。我只是添加了标签 其中有诀窍。这工作正常。可以吗?或者这是做错的方式? –

+0

做同样的事情通常有多种方式,基本的想法是指向你的“自然”,因为它是你所需要的;然后我只给了你在plugin.xml的一些地方给出的例子......但是根据扩展点,它不是通过我在这里突出显示的语法的_always_。如果你找到了适合你的方式,那就是好方法:)。 – Kellindil

0

只需添加下面你给出的标签的plugin.xml:

<filter name="projectNature" value="com.android.ide.eclipse.adt.AndroidNature"> </filter> 

这使得魔术。