java—向EclipsePDE项目中的preferencepage添加面板容器

taor4pac  于 2021-07-13  发布在  Java
关注(0)|答案(3)|浏览(356)

我用的是 FieldEditorPreferencePage 类以创建eclipse插件的首选项页。我已经能够添加我需要的所有控件到页面中,但是有几个控件我想使用一个面板组合在一起。
下面是eclipse文档中的一个示例。但是,没有关于如何将“打开模式”面板添加到页面以及如何将控件添加到页面的信息。
如何向eclipse添加面板 PreferencePage ?

mpbci0fu

mpbci0fu1#

最后我写了我自己的 GroupFieldEditor 类,基于我发现的两个不完全符合我要求的实现。 FieldEditor 可以将s添加到该控件,然后可以将组添加到 FieldEditorPreferencePage 对象使用 addField() 方法。
这里提供了实现
例如,这是组在我的插件项目中的外观:

soat7uwm

soat7uwm2#

你可以用 RadioGroupFieldEditor 添加由组控件包围的一组单选按钮。
比如:

RadioGroupFieldEditor groupPref = new RadioGroupFieldEditor("preference key",
      "Group title message", 3, 
      new String[][] {
        {"radio 1 text", "preference value 1"}, 
        {"radio 2 text", "preference value 2"}, 
        {"radio 3 text", "preference value 3"}},
     getFieldEditorParent(), true /* use a group */);
addField(groupPref);
3duebb1j

3duebb1j3#

添加首选项页面的简单步骤:
打开plugin.xml并转到扩展选项卡。
添加扩展点 org.eclipse.ui.preferencePages 指定id/名称和其他属性。
实现类扩展自 PreferencePage .
如果要将面板中的多个控件分组并在中使用它 FieldEditorPreferencePage ,您可以从中创建新的扩展类 org.eclipse.jface.preference.FieldEditor . 例如:

public class MyFieldEditor extends FieldEditor {
    public MyFieldEditor(String name, String labelText, Composite parent) {
        super(name, labelText, parent);
    }

    protected void doFillIntoGrid(Composite parent, int numColumns) {
        //...add your controls to panel
        Group grpOpenMode = new Group(parent, SWT.NONE);
        grpOpenMode.setText("Open mode");
        grpOpenMode.setBounds(10, 10, 230, 117);

        btnDoubleClick = new Button(grpOpenMode, SWT.RADIO);
        btnDoubleClick.setBounds(10, 21, 90, 16);
        btnDoubleClick.setText("Double click");

        btnSingleClick = new Button(grpOpenMode, SWT.RADIO);
        btnSingleClick.setBounds(10, 43, 90, 16);
        btnSingleClick.setText("Single Click");

        Button btnSelectOnHover = new Button(grpOpenMode, SWT.CHECK);
        btnSelectOnHover.setBounds(20, 63, 123, 16);
        btnSelectOnHover.setText("Select on hover");

        Button btnOpenUsingArrowKey = new Button(grpOpenMode, SWT.CHECK);
        btnOpenUsingArrowKey.setBounds(20, 85, 188, 16);
        btnOpenUsingArrowKey.setText("Open when using arrow keys");
    }

    protected void doLoad() {
        // get preference value, and set data to UI, Invoked after doFillIntoGrid(...)
        String prefix = getPreferenceName();
        boolean isDoubleClick = getPreferenceStore().getBoolean(prefix+"_isDoubleClick");
        btnDoubleClick.setSelection(isDoubleClick);
        btnSingleClick.setSelection(!isDoubleClick);
        btnSelectOnHoverget.setSelection(getPreferenceStore().getBoolean(prefix+"_selectOnHover");
    }

    protected void doLoadDefault() {
        //Invoked in preferencePages.performDefaults() - user click "Restore Default" button
    }

    protected void doStore() {
        //save data of UI to preference store. Invoked in preferencePages.performOk() - user click "OK"/"Apply" button
        getPreferenceStore().setValue(getPreferenceName()+"_isDoubleClick",btnDoubleClick.getSelection());
    }
}

相关问题