📄 customdialog.java
字号:
package cn.pandaoen.game.minesweeper;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.layout.RowData;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Dialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import cn.pandaoen.game.minesweeper.res.Resources;
/**
* @author pan
*/
public class CustomDialog extends Dialog {
private int rows;
private int columns;
private int mines;
private int input;
private Text heightText;
private Text widthText;
private Text minesText;
public CustomDialog(Shell parent) {
super(parent, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
setText(Resources.res.getString("CustomField")); //$NON-NLS-1$
}
public Point getSize() {
return new Point(rows, columns);
}
public void setSize(Point size) {
rows = size.x;
columns = size.y;
}
public int getMines() {
return mines;
}
public void setMines(int mines) {
this.mines = mines;
}
public int open() {
// Create the dialog window
Shell shell = new Shell(getParent(), getStyle());
shell.setText(getText());
createContents(shell);
shell.setImage(Resources.res.getImage("app.gif")); //$NON-NLS-1$
shell.pack();
shell.open();
Display display = getParent().getDisplay();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
return input;
}
/**
* Creates the dialog's contents
*
* @param shell the dialog window
*/
private void createContents(final Shell shell) {
GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 3;
gridLayout.marginHeight = 30;
gridLayout.marginWidth = 20;
gridLayout.horizontalSpacing = 20;
gridLayout.verticalSpacing = 10;
shell.setLayout(gridLayout);
// Show the message
Label label = new Label(shell, SWT.NONE);
label.setText(Resources.res.getString("Height")); //$NON-NLS-1$
GridData data = new GridData();
data.horizontalAlignment = GridData.END;
label.setLayoutData(data);
heightText = new Text(shell, SWT.BORDER);
heightText.setText(rows + ""); //$NON-NLS-1$
data = new GridData(50, -1);
data.horizontalAlignment = GridData.FILL;
heightText.setLayoutData(data);
Composite btnPanel = createButtonPanel(shell);
data = new GridData();
data.horizontalAlignment = GridData.END;
data.verticalAlignment = GridData.FILL;
data.verticalSpan = 3;
btnPanel.setLayoutData(data);
label = new Label(shell, SWT.NONE);
label.setText(Resources.res.getString("Width")); //$NON-NLS-1$
widthText = new Text(shell, SWT.BORDER);
widthText.setText(columns + ""); //$NON-NLS-1$
data = new GridData();
data.horizontalAlignment = GridData.FILL;
widthText.setLayoutData(data);
label = new Label(shell, SWT.NONE);
label.setText(Resources.res.getString("Mines")); //$NON-NLS-1$
minesText = new Text(shell, SWT.BORDER);
minesText.setText(mines + ""); //$NON-NLS-1$
data = new GridData();
data.horizontalAlignment = GridData.FILL;
minesText.setLayoutData(data);
}
private Composite createButtonPanel(final Shell shell) {
Composite buttonPanel = new Composite(shell, SWT.NONE);
RowLayout rowLayout = new RowLayout();
rowLayout.type = SWT.VERTICAL;
rowLayout.justify = true;
buttonPanel.setLayout(rowLayout);
Button ok = new Button(buttonPanel, SWT.PUSH);
ok.setText(Resources.res.getString("OK")); //$NON-NLS-1$
shell.setDefaultButton(ok);
RowData data = new RowData(50, -1);
ok.setLayoutData(data);
ok.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
try {
int w = Integer.parseInt(widthText.getText());
int h = Integer.parseInt(heightText.getText());
int m = Integer.parseInt(minesText.getText());
if (w <= 0 || h <= 0 || m <= 0 || w * h < m) {
//TODO: show error prompt
event.doit = false;
return;
}
rows = h;
columns = w;
mines = m;
input = SWT.OK;
shell.close();
} catch (NumberFormatException e) {
event.doit = false;
return;
}
}
});
Button cancel = new Button(buttonPanel, SWT.PUSH);
data = new RowData(50, -1);
cancel.setLayoutData(data);
cancel.setText(Resources.res.getString("Cancel")); //$NON-NLS-1$
cancel.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
input = SWT.CANCEL;
shell.close();
}
});
return buttonPanel;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -