import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.jface.dialogs.IInputValidator;
import org.eclipse.jface.window.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
/**
* This class demonstrates JFace's InputDialog class
*/
public class GetInput extends ApplicationWindow {
/**
* GetInput constructor
*/
public GetInput() {
super(null);
}
/**
* Runs the application
*/
public void run() {
// Don't return from open() until window closes
setBlockOnOpen(true);
// Open the main window
open();
// Dispose the display
Display.getCurrent().dispose();
}
/**
* Configures the shell
*
* @param shell the shell
*/
protected void configureShell(Shell shell) {
super.configureShell(shell);
// Set the title bar text
shell.setText("Get Input");
}
/**
* Creates the main window's contents
*
* @param parent the main window
* @return Control
*/
protected Control createContents(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
composite.setLayout(new GridLayout(1, false));
// Create a label to display what the user typed in
final Label label = new Label(composite, SWT.NONE);
label.setText("This will display the user input from InputDialog");
// Create the button to launch the error dialog
Button show = new Button(composite, SWT.PUSH);
show.setText("Get Input");
show.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
InputDialog dlg = new InputDialog(Display.getCurrent().getActiveShell(),
"", "Enter 5-8 characters", label.getText(), new LengthValidator());
if (dlg.open() == Window.OK) {
// User clicked OK; update the label with the input
label.setText(dlg.getValue());
}
}
});
parent.pack();
return composite;
}
/**
* The application entry point
*
* @param args the command line arguments
*/
public static void main(String[] args) {
new GetInput().run();
}
}
/**
* This class validates a String. It makes sure that the String is between 5 and 8
* characters
*/
class LengthValidator implements IInputValidator {
/**
* Validates the String. Returns null for no error, or an error message
*
* @param newText the String to validate
* @return String
*/
public String isValid(String newText) {
int len = newText.length();
// Determine if input is too short or too long
if (len < 5) return "Too short";
if (len > 8) return "Too long";
// Input must be OK
return null;
}
}