import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
/**
* This class demonstrates JFace's IconAndMessageDialog class
*/
public class DumbUser extends ApplicationWindow {
/**
* DumbUser constructor
*/
public DumbUser() {
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();
}
/**
* 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, true));
// Create the button
Button show = new Button(composite, SWT.NONE);
show.setText("Show");
final Shell shell = parent.getShell();
// Display the dialog
show.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
// Create and show the dialog
DumbMessageDialog dlg = new DumbMessageDialog(shell);
dlg.open();
}
});
parent.pack();
return composite;
}
/**
* The application entry point
*
* @param args the command line arguments
*/
public static void main(String[] args) {
new DumbUser().run();
}
}
/**
* This class demonstrates the IconAndMessageDialog class
*/
class DumbMessageDialog extends IconAndMessageDialog {
public static final int I_DUNNO_ID = IDialogConstants.CLIENT_ID;
public static final String I_DUNNO_LABEL = "I Dunno";
// The image
private Image image;
// The label for the "hidden" message
private Label label;
/**
* DumbMessageDialog constructor
*
* @param parent the parent shell
*/
public DumbMessageDialog(Shell parent) {
super(parent);
// Create the image
try {
image = new Image(parent.getDisplay(), new FileInputStream("java2s.gif"));
} catch (FileNotFoundException e) {}
// Set the default message
message = "Are you sure you want to do something that dumb?";
}
/**
* Sets the message
*
* @param message the message
*/
public void setMessage(String message) {
this.message = message;
}
/**
* Closes the dialog
*
* @return boolean
*/
public boolean close() {
if (image != null) image.dispose();
return super.close();
}
/**
* Creates the dialog area
*
* @param parent the parent composite
* @return Control
*/
protected Control createDialogArea(Composite parent) {
createMessageArea(parent);
// Create a composite to hold the label
Composite composite = new Composite(parent, SWT.NONE);
GridData data = new GridData(GridData.FILL_BOTH);
data.horizontalSpan = 2;
composite.setLayoutData(data);
composite.setLayout(new FillLayout());
// Create the label for the "hidden" message
label = new Label(composite, SWT.LEFT);
return composite;
}
/**
* Creates the buttons
*
* @param parent the parent composite
*/
protected void createButtonsForButtonBar(Composite parent) {
createButton(parent, IDialogConstants.YES_ID, IDialogConstants.YES_LABEL,
true);
createButton(parent, IDialogConstants.NO_ID, IDialogConstants.NO_LABEL, false);
createButton(parent, I_DUNNO_ID, I_DUNNO_LABEL, false);
}
/**
* Handles a button press
*
* @param buttonId the ID of the pressed button
*/
protected void buttonPressed(int buttonId) {
// If they press I Dunno, close the dialog
if (buttonId == I_DUNNO_ID) {
setReturnCode(buttonId);
close();
} else {
// Otherwise, have some fun
label.setText("Yeah, right. You know nothing.");
}
}
/**
* Gets the image to use
*/
protected Image getImage() {
return image;
}
}
|