【问题标题】:Project specific preference page in Eclipse RCP applicationEclipse RCP 应用程序中的项目特定首选项页面
【发布时间】:2012-05-18 11:56:47
【问题描述】:

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

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

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

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

对此有任何提示吗?在此先感谢:)

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

【问题讨论】:

  • 也许我应该补充一点,我使用 FieldEditorPreferencePage 作为父级。
  • 很难想象您希望它如何呈现给用户。当用户转到 Window -> Preferences 时,这将是全局的。您是否在谈论通过与项目关联的属性访问您的首选项页面(例如,在项目资源管理器中,选择项目,然后选择属性)?如果这是您想要的,这当然是可能的。

标签: java eclipse rcp


【解决方案1】:

您需要继承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>

【讨论】:

  • 可以用 FieldEditorPreferencePage 做这样的事情吗?
  • 这主要是有效的——我能够为属性对话框贡献一个属性页面。 b我的问题是:我们不使用“标准”导航器;我们使用通用导航器框架自己编写了一个。在这里,您没有可能打开属性对话框 - 上面提到的 PreferenceUtils 不起作用,因为...嗯,它是针对首选项的,而不是针对属性的 ;)
  • 我解决了这个问题:我必须向我想要的菜单提供一个 ID 为 org.eclipse.ui.file.properties 的命令才能获得属性对话框(我认为命令的名称有点误导......)跨度>
猜你喜欢
  • 2012-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-01
相关资源
最近更新 更多