?? preferencedialogclass.java
字號:
/**
*@author: WangJinTao,MengQingChang2006
*/
package jfaceDialog;
import java.io.IOException;
import org.eclipse.jface.preference.*;
import org.eclipse.jface.window.*;
import org.eclipse.swt.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
public class PreferenceDialogClass extends ApplicationWindow {
public PreferenceDialogClass() {
super(null);
}
public static void main(String[] args) {
PreferenceDialogClass preferenceDialog = new PreferenceDialogClass();
preferenceDialog.setBlockOnOpen(true);
preferenceDialog.open();
Display.getCurrent().dispose();
}
protected Control createContents(Composite parent) {
getShell().setText("首選項");
getShell().setSize(200, 80);
Composite composite = new Composite(parent, SWT.NONE);
composite.setLayoutData(new GridData(GridData.FILL_BOTH));
composite.setLayout(new GridLayout());
Button openbutton = new Button(composite, SWT.PUSH);
openbutton.setText("打開首選項");
openbutton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
openPreferenceDialog();
}
});
// 對打開首選項按鈕布局
GridData grid = new GridData(GridData.FILL_HORIZONTAL);
openbutton.setLayoutData(grid);
return composite;
}
private void openPreferenceDialog() {
// 定義PreferenceManager類對象
PreferenceManager pm = new PreferenceManager();
// 定義一個PreferenceNode類對象,即節點對象
PreferenceNode nodeA = new PreferenceNode("NODEA");
// 將常規頁面設置為nodeA的頁面即單擊nodeA節點時顯示常規頁面
nodeA.setPage(new PreferencePageOne());
// 將節點nodeA設置為根節點
pm.addToRoot(nodeA);
// 定義節點nodea
PreferenceNode nodea = new PreferenceNode("NODEa");
nodea.setPage(new PreferencePageTwo());
// 將節點nodea設置為根nodeA的子節點
pm.addTo("NODEA", nodea);
// 定義節點nodeB
PreferenceNode nodeB = new PreferenceNode("NODEB");
nodeB.setPage(new PreferencePageThree());
// 將節點 nodeB設置為根節點
pm.addToRoot(nodeB);
// 定義節點nodeb
PreferenceNode nodeb = new PreferenceNode("NODEb");
nodeb.setPage(new PreferencePageFour());
// 將節點nodeb設置為根節點nodeB的子節點
pm.addTo("NODEB", nodeb);
// 定義一個PreferenceDialog對象,
PreferenceDialog dialog = new PreferenceDialog(getShell(), pm);
// 設置preferencestore對象
PreferenceStore ps = new PreferenceStore("showprefs.properties");
try {
ps.load();
} catch (IOException e) {
}
dialog.setPreferenceStore(ps);
// 打開首選項對話框
dialog.open();
try {
// 保存 preferences
ps.save();
} catch (IOException e) {
e.printStackTrace();
}
}
// 常規頁面
class PreferencePageOne extends PreferencePage {
private Button CheckOne;
private Button CheckTwo;
private Button CheckThree;
private Button CheckFour;
private Button CheckFive;
private Button RadioOne;
private Button RadioTwo;
private static final String ONE = "one";
private static final String TWO = "two";
private static final String THREE = "three";
private static final String FOUR = "four";
private static final String FIVE = "five";
private static final String SIX = "six";
private static final String SEVEN = "seven";
public PreferencePageOne() {
setTitle("常規");
setMessage("常規");
}
// /在常規頁面上添加組件
protected Control createContents(Composite parent) {
Composite comp = new Composite(parent, SWT.NONE);
comp.setLayout(new GridLayout(1, true));
IPreferenceStore preferenceStore = getPreferenceStore();
CheckOne = new Button(comp, SWT.CHECK);
CheckOne.setText("始終在后臺運行(&U)");
CheckOne.setSelection(preferenceStore.getBoolean(ONE));
CheckTwo = new Button(comp, SWT.CHECK);
CheckTwo.setText("讓下一個/上一個部件在對話框打開(&N)");
CheckTwo.setSelection(preferenceStore.getBoolean(TWO));
CheckThree = new Button(comp, SWT.CHECK);
CheckThree.setText("顯示堆狀態(&W)");
CheckThree.setSelection(preferenceStore.getBoolean(THREE));
// 定義分組框
final Group group = new Group(comp, SWT.NONE);
group.setText("打開方式");
GridData grid = new GridData(GridData.FILL_HORIZONTAL);
group.setLayoutData(grid);
group.setLayout(new GridLayout());
// 在分組框上添加組件
RadioOne = new Button(group, SWT.RADIO);
RadioOne.setText("雙擊(&O)");
RadioOne.setSelection(preferenceStore.getBoolean(SIX));
RadioTwo = new Button(group, SWT.RADIO);
RadioTwo.setText("單擊(&S)");
RadioTwo.setSelection(preferenceStore.getBoolean(SEVEN));
CheckFour = new Button(group, SWT.CHECK);
CheckFour.setText("根據懸浮提示選擇(&H)");
CheckFour.setSelection(preferenceStore.getBoolean(FOUR));
// 將CheckFour按鈕設置為不可用狀態
CheckFour.setEnabled(false);
// 對CheckFour按鈕進行布局
GridData buttongrid = new GridData();
buttongrid.horizontalIndent = 20;
CheckFour.setLayoutData(buttongrid);
CheckFive = new Button(group, SWT.CHECK);
CheckFive.setText("使用尖頭鍵時打開(&K)");
CheckFive.setSelection(preferenceStore.getBoolean(FIVE));
// 將CheckFive按鈕設置為不可用狀態
CheckFive.setEnabled(false);
CheckFive.setLayoutData(buttongrid);
// 在group上定義標簽
new Label(group, SWT.NONE).setText("注意:此選項可能并不對所有視圖都有效");
RadioTwo.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
// 當選擇了RadioTwo按鈕后,CheckFour和CheckFive將被激活否則
// 處于不可用狀態
if (RadioTwo.getSelection() == true) {
CheckFour.setEnabled(true);
CheckFive.setEnabled(true);
} else {
CheckFour.setEnabled(false);
CheckFive.setEnabled(false);
}
}
});
return comp;
}
protected void performDefaults() {
IPreferenceStore preferenceStore = getPreferenceStore();
// 將按鈕狀態重置
CheckOne.setSelection(preferenceStore.getDefaultBoolean(ONE));
CheckTwo.setSelection(preferenceStore.getDefaultBoolean(TWO));
CheckThree.setSelection(preferenceStore.getDefaultBoolean(THREE));
CheckFour.setSelection(preferenceStore.getDefaultBoolean(FOUR));
CheckFive.setSelection(preferenceStore.getDefaultBoolean(FIVE));
RadioOne.setSelection(preferenceStore.getDefaultBoolean(SIX));
RadioTwo.setSelection(preferenceStore.getDefaultBoolean(FOUR));
}
protected void performApply() {
if (getControl() == null) {
return;
}
}
public boolean performOk() {
performApply();
return true;
}
}
// 瀏覽器頁面
class PreferencePageTwo extends PreferencePage {
public PreferencePageTwo() {
setTitle("Web瀏覽器");
setMessage("Web瀏覽器");
}
protected Control createContents(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
composite.setLayout(new GridLayout(2, true));
return composite;
}
protected void performApply() {
if (getControl() == null) {
return;
}
}
public boolean performOk() {
performApply();
return true;
}
}
// Ant頁面
class PreferencePageThree extends PreferencePage {
public PreferencePageThree() {
setTitle("Ant");
setMessage("Ant");
}
protected Control createContents(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
composite.setLayout(new GridLayout(2, true));
return composite;
}
protected void performApply() {
if (getControl() == null) {
return;
}
}
public boolean performOk() {
performApply();
return true;
}
}
// /編輯器頁面
class PreferencePageFour extends PreferencePage {
public PreferencePageFour() {
setTitle("編輯器");
setMessage("編輯器");
}
protected Control createContents(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
composite.setLayout(new GridLayout(2, true));
return composite;
}
protected void performApply() {
if (getControl() == null) {
return;
}
}
public boolean performOk() {
performApply();
return true;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -