Eclipse特定于自然的项目属性

2 eclipse eclipse-plugin

我正在开发一个具有自定义项目性质的Eclipse插件.大自然本身运作良好.我需要实现一个特定于项目的属性页面,允许用户自定义特定于该性质的设置; 到目前为止,我一直没有成功,会给予任何帮助.我设想这类似于Java本质如何允许人们设置特定于项目的编译器选项,格式化设置等.

项目设置存储在项目本身中至关重要,类似于Java设置的存储方式(project root)/.settings/org.eclipse.jdt.*.prefs.这些需要在该项目的源代码控制中,因此整个团队都要遵守相同的标准.

这是我到目前为止在plugin.xml中的内容:

  <extension point="org.eclipse.ui.propertyPages">
    <page id="test.MyOverlayPage"
          name="%Key.PropertyPage"
          class="test.MyOverlayPage">
      <enabledWhen>
        <instanceof value="org.eclipse.core.resources.IProject"/>
      </enabledWhen>
    </page>
  </extension>
Run Code Online (Sandbox Code Playgroud)

这显然不会像Java设置那样限制属性页面,但是目前这不会出现在任何项目中,更不用说具有自定义性质的项目了.

我发现以下问题没有解决我的具体问题:

为project explorer eclipse插件创建我们自己的属性页面

Eclipse:在.project文件中存储信息

我还发现了这个Eclipse帮助页面,这个页面严重缺乏细节,我无法在此基础上使用它:

http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fguide%2FresInt_properties.htm

gre*_*449 5

Java属性页使用此:

<enabledWhen>
    <adapt type="org.eclipse.core.resources.IProject">
        <test property="org.eclipse.core.resources.projectNature" 
              value="org.eclipse.jdt.core.javanature"/>
    </adapt>         
</enabledWhen>
Run Code Online (Sandbox Code Playgroud)

adapt不是instanceof因为视图中的UI对象通常不是项目(或其他资源)的实例.相反,他们使用IAdapterManager从UI类转换(适应)到工作区模型类.

test元素添加了对项目性质的测试,这里是Java自然id,但您可以替换您的自然ID.

要在项目中保存首选项,请.settings使用以下内容:

IProject project =  ... get project from selection or something

IScopeContext context = new ProjectScope(project);

Preferences projectPreferences = context.getNode("your nature id");

projectPreferences.put(key, value);

projectPreferences.flush();
Run Code Online (Sandbox Code Playgroud)