/*******************************************************************************
* All Right Reserved. Copyright (c) 1998, 2004 Jackwind Li Guojie
*
* Created on 2004-5-13 22:13:55 by JACK $Id$
*
******************************************************************************/
import java.lang.reflect.InvocationTargetException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.dialogs.IInputValidator;
import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
public class DialogExamples extends ApplicationWindow {
/**
* @param parentShell
*/
public DialogExamples(Shell parentShell) {
super(parentShell);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.window.Window#createContents(org.eclipse.swt.widgets.Composite)
*/
protected Control createContents(Composite parent) {
Composite composite = new Composite(parent, SWT.NULL);
composite.setLayout(new GridLayout());
/* ------ MessageDialog ------------- */
// openQuestion
final Button buttonOpenMessage = new Button(composite, SWT.PUSH);
buttonOpenMessage.setText("Demo: MessageDialog.openQuestion");
buttonOpenMessage.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
boolean answer =
MessageDialog.openQuestion(
getShell(),
"A Simple Question",
"Is SWT/JFace your favorite Java UI framework?");
System.out.println("Your answer is " + (answer ? "YES" : "NO"));
}
});
final Button buttonMessageDialog = new Button(composite, SWT.PUSH);
buttonMessageDialog.setText("Demo: new MessageDialog");
buttonMessageDialog.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
MessageDialog dialog =
new MessageDialog(
getShell(),
"Select your favorite Java UI framework",
null,
"Which one of the following is your favorite Java UI framework?",
MessageDialog.QUESTION,
new String[] { "AWT", "Swing", "SWT/JFace" },
2);
int answer = dialog.open();
switch (answer) {
case -1: // if the user closes the dialog without clicking any button.
System.out.println("No selection");
break;
case 0 :
System.out.println("Your selection is: AWT");
break;
case 1 :
System.out.println("Your selection is: Swing");
break;
case 2 :
System.out.println("Your selection is: SWT/JFace");
break;
}
}
});
/* ------ InputDialog ------------- */
final Button buttonInputDialog = new Button(composite, SWT.PUSH);
buttonInputDialog.setText("Demo: InputDialog");
buttonInputDialog.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
IInputValidator validator = new IInputValidator() {
public String isValid(String newText) {
if(newText.equalsIgnoreCase("SWT/JFace") ||
newText.equalsIgnoreCase("AWT") ||
newText.equalsIgnoreCase("Swing"))
return null;
else
return "The allowed values are: SWT/JFace, AWT, Swing";
}
};
InputDialog dialog = new InputDialog(getShell(), "Question", "What's your favorite Java UI framework?", "SWT/JFace", validator);
if(dialog.open() == Window.OK) {
System.out.println("Your favorite Java UI framework is: " + dialog.getValue());
}else{
System.out.println("Action cancelled");
}
}
});
/* ------ ProgressMonitorDialog ------------- */
final Button buttonProgressDialog = new Button(composite, SWT.PUSH);
buttonProgressDialog.setText("Demo: ProgressMonitorDialog");
buttonProgressDialog.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
IRunnableWithProgress runnableWithProgress = new IRunnableWithProgress() {
public void run(IProgressMonitor monitor)
throws InvocationTargetException, InterruptedException {
monitor.beginTask("Number counting", 10);
for(int i=0; i<10; i++) {
if(monitor.isCanceled()) {
monitor.done();
return;
}
System.out.println("Count number: " + i);
monitor.worked(1);
Thread.sleep(500); // 0.5s.
}
monitor.done();
}
};
ProgressMonitorDialog dialog = new ProgressMonitorDialog(getShell());
try {
dialog.run(true, true, runnableWithProgress);
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
return super.createContents(parent);
}
public static void main(String[] args) {
ApplicationWindow window = new DialogExamples(null);
window.setBlockOnOpen(true);
window.open();
}
}
|