将面板容器添加到 Eclipse PDE 项目中的 PreferencePage
Adding a panel container to a PreferencePage in an Eclipse PDE project
我正在使用 FieldEditorPreferencePage
class 为我的 Eclipse 插件创建首选项页面。我已经能够将我需要的所有控件添加到页面,但是有几个控件我想使用面板组合在一起。
这是 Eclipse 文档中的示例。但是,没有关于如何将 "Open mode" 面板添加到页面以及如何向其添加控件的信息。
如何将面板添加到 Eclipse PreferencePage
?
添加首选项页面的简要步骤:
- 打开 plugin.xml 并转到 扩展程序 选项卡。
- 添加扩展点
org.eclipse.ui.preferencePages
- 指定 id/name 和其他属性。
- 实施 class 从
PreferencePage
延伸。
如果您想在一个面板中组合多个控件并在 FieldEditorPreferencePage
中使用它,您可以创建新的 class,扩展自 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());
}
}
您可以使用 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);
我最终编写了自己的 GroupFieldEditor
class,基于我发现不完全符合我的要求的两个实现。 FieldEditor
s 可以添加到该控件,然后可以使用 addField()
方法将组添加到 FieldEditorPreferencePage
对象。
实施可用here
例如,这个组在我的插件项目中是这样的:
我正在使用 FieldEditorPreferencePage
class 为我的 Eclipse 插件创建首选项页面。我已经能够将我需要的所有控件添加到页面,但是有几个控件我想使用面板组合在一起。
这是 Eclipse 文档中的示例。但是,没有关于如何将 "Open mode" 面板添加到页面以及如何向其添加控件的信息。
如何将面板添加到 Eclipse PreferencePage
?
添加首选项页面的简要步骤:
- 打开 plugin.xml 并转到 扩展程序 选项卡。
- 添加扩展点
org.eclipse.ui.preferencePages
- 指定 id/name 和其他属性。
- 实施 class 从
PreferencePage
延伸。
如果您想在一个面板中组合多个控件并在 FieldEditorPreferencePage
中使用它,您可以创建新的 class,扩展自 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());
}
}
您可以使用 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);
我最终编写了自己的 GroupFieldEditor
class,基于我发现不完全符合我的要求的两个实现。 FieldEditor
s 可以添加到该控件,然后可以使用 addField()
方法将组添加到 FieldEditorPreferencePage
对象。
实施可用here
例如,这个组在我的插件项目中是这样的: