//Send questions, comments, bug reports, etc. to the authors:
//Rob Warner (rwarner@interspatial.com)
//Robert Harris (rbrt_harris@yahoo.com)
import org.eclipse.swt.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
/**
* This class demonstrates how to create your own dialog classes. It allows users
* to input a String
*/
public class InputDialog extends Dialog {
private String message;
private String input;
/**
* InputDialog constructor
*
* @param parent the parent
*/
public InputDialog(Shell parent) {
// Pass the default styles here
this(parent, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
}
/**
* InputDialog constructor
*
* @param parent the parent
* @param style the style
*/
public InputDialog(Shell parent, int style) {
// Let users override the default styles
super(parent, style);
setText("Input Dialog");
setMessage("Please enter a value:");
}
/**
* Gets the message
*
* @return String
*/
public String getMessage() {
return message;
}
/**
* Sets the message
*
* @param message the new message
*/
public void setMessage(String message) {
this.message = message;
}
/**
* Gets the input
*
* @return String
*/
public String getInput() {
return input;
}
/**
* Sets the input
*
* @param input the new input
*/
public void setInput(String input) {
this.input = input;
}
/**
* Opens the dialog and returns the input
*
* @return String
*/
public String open() {
// Create the dialog window
Shell shell = new Shell(getParent(), getStyle());
shell.setText(getText());
createContents(shell);
shell.pack();
shell.open();
Display display = getParent().getDisplay();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
// Return the entered value, or null
return input;
}
/**
* Creates the dialog's contents
*
* @param shell the dialog window
*/
private void createContents(final Shell shell) {
shell.setLayout(new GridLayout(2, true));
// Show the message
Label label = new Label(shell, SWT.NONE);
label.setText(message);
GridData data = new GridData();
data.horizontalSpan = 2;
label.setLayoutData(data);
// Display the input box
final Text text = new Text(shell, SWT.BORDER);
data = new GridData(GridData.FILL_HORIZONTAL);
data.horizontalSpan = 2;
text.setLayoutData(data);
// Create the OK button and add a handler
// so that pressing it will set input
// to the entered value
Button ok = new Button(shell, SWT.PUSH);
ok.setText("OK");
data = new GridData(GridData.FILL_HORIZONTAL);
ok.setLayoutData(data);
ok.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
input = text.getText();
shell.close();
}
});
// Create the cancel button and add a handler
// so that pressing it will set input to null
Button cancel = new Button(shell, SWT.PUSH);
cancel.setText("Cancel");
data = new GridData(GridData.FILL_HORIZONTAL);
cancel.setLayoutData(data);
cancel.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
input = null;
shell.close();
}
});
// Set the OK button as the default, so
// user can type input and press Enter
// to dismiss
shell.setDefaultButton(ok);
}
}