我正在开发一个具有自定义项目性质的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帮助页面,这个页面严重缺乏细节,我无法在此基础上使用它:
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)
| 归档时间: |
|
| 查看次数: |
1583 次 |
| 最近记录: |