将面板容器添加到Eclipse PDE项目中的PreferencePage

时间:2016-03-28 13:33:45

标签: java eclipse eclipse-pde

我正在使用FieldEditorPreferencePage类来为我的Eclipse插件创建首选项页面。我已经能够将所需的所有控件添加到页面中,但是我想使用面板将几个控件组合在一起。

以下是Eclipse文档中的一个示例。但是,没有关于如何将“打开模式”面板添加到页面以及如何向其添加控件的信息。

如何将面板添加到Eclipse PreferencePage

enter image description here

3 个答案:

答案 0 :(得分:1)

我最终编写了自己的GroupFieldEditor类,基于我发现的两个不完全符合我要求的实现。可以将FieldEditor添加到该控件,然后可以使用FieldEditorPreferencePage方法将该组添加到addField()对象。

实施可用here

例如,这是该组在插件项目中的显示方式:

enter image description here

答案 1 :(得分:0)

添加首页的简要步骤:

  1. 打开plugin.xml并转到扩展程序标签。
  2. 添加扩展点org.eclipse.ui.preferencePages
  3. 指定ID /名称和其他属性。
  4. 实施类扩展自PreferencePage
  5. 如果要在面板中对多个控件进行分组并在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());
        }
    }
    

答案 2 :(得分:0)

您可以使用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);