2

我想为我们的产品启用基于项目的首选项对话框。我偶然发现了两个不同的问题:

我如何存储这些项目相关信息。作为一个有根据的猜测,我会尝试这个:

  • IPreferenceStore store = new ScopedPreferenceStore(new ProjectScope(project.getIProject()), Activator.PLUGIN_ID);
  • 然后根据需要设置“项目商店”(例如在偏好页面中作为商店)

如何仅为项目启用首选项页面?我知道我可以使用PreferenceUtils.createPreferenceDialogOn(…). 不幸的是,偏好页面的 ID 必须在org.eclipse.ui.preferencePages扩展点中定义。但如果它们在这个扩展点内,这些页面也在产品的全局“首选项”中。如果在 EP 中未指定它们,则不会显示页面。

有什么提示吗?提前致谢 :)

编辑:我真正想要的是一个属性对话框,而不是首选项对话框。如果您正在使用属性页,则 PreferenceUtils 根本不起作用。如果您通过org.eclipse.ui.propertyPages它提供一个属性页面,它适用于标准的 eclipse 导航器 - 但是我如何在自定义导航器(通用导航器框架)中处理这个?

4

1 回答 1

6

例如,您将需要子类化PropertiesPage,然后在您的 plugin.xml 中添加对它的引用。这使用两个不同的属性页面,一个在选择项目时显示,另一个用于文件。它们都只存在于具有指定项目性质的项目中。

<extension point="org.eclipse.ui.propertyPages">
    <page
        class="com.oaklandsw.transform.editor.TransformProjectPropertiesPage"
    id="com.oaklandsw.transform.filePropPage"
    name="%appHandle">
    <enabledWhen>
    <and>
            <instanceof
             value="org.eclipse.core.resources.IProject">
        </instanceof>
            <adapt type="org.eclipse.core.resources.IResource" >
                <test
                 property="org.eclipse.core.resources.projectNature"
                value="com.oaklandsw.transform.runtime.nature">
                </test>
            </adapt>   
    </and>
    </enabledWhen>
    </page> 
    <page class="com.oaklandsw.transform.editor.TransformFilePropertiesPage"
        id="com.oaklandsw.transform.projectPropPage" name="%appHandle">
        <enabledWhen>
            <and>
        <instanceof
            value="org.eclipse.core.resources.IFile">
        </instanceof>
            <adapt type="org.eclipse.core.resources.IResource" >
                <test property="org.eclipse.core.resources.projectNature"
                    value="com.oaklandsw.transform.runtime.nature" />
            </adapt>        
            </and>
        </enabledWhen>
    </page>
</extension>
于 2012-05-19T17:05:44.737 回答