【问题标题】:How to link a parent preference page to a child preference page in Eclipse RCP?如何在 Eclipse RCP 中将父首选项页面链接到子首选项页面?
【发布时间】:2018-09-22 19:28:35
【问题描述】:

我在 Eclipse 中有一个包含复选框的首选项页面。这是家长偏好页面。

子偏好页面应包含基于父页面中某些复选框值的不同字段编辑器。

示例:如果选中父项中的复选框,则在子项中创建一个文本字段。

我想在按下应用时更新/重绘子页面。

我试图通过以下方式做到这一点:

我的子页面类如下所示:

public class MyChildPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage

重写 setVisible 方法:

@Override
public void setVisible(final boolean visible)
{        
    super.setVisible(visible);        
    if (visible)
        createFieldEditors();            
}

我的 createFieldEditors 方法每次都使用相同的 Composite 创建字段。

仍然没有更新。

有没有办法在更改焦点/可见性时重新触发偏好页面创建?

这个问题没有回答,类似: Refresh the contents of an eclipse preference page

【问题讨论】:

    标签: java eclipse eclipse-plugin eclipse-rcp


    【解决方案1】:

    您可以尝试拨打FieldEditorPreferencePage#initialize() 代替吗?这会在每个字段编辑器上调用 load()

    【讨论】:

    • 它仍然不会再次调用洞偏好页面初始化,我可能会添加不同的字段...
    【解决方案2】:

    您应该只创建一次字段编辑器。

    您可以覆盖FieldEditorPreferencePagepropertyChange 方法,以便获知每个首选项属性更改:

    @Override
    public void propertyChange(PropertyChangeEvent event) {
    
      String propertyId = event.getProperty();
    
      ... 
    
      super.propertyChange();
    }
    

    【讨论】:

    • 所以,总而言之,偏好页面不能动态创建,字段只能使用propertyChange基于其他字段启用/禁用,对吗?
    • 您可以使字段不可见以及禁用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    相关资源
    最近更新 更多