In
my previous post, I explained how to develop custom dialogs by extending Dialog
class. There is also another class ‘TitleAreaDialog’. By extending this class you
can define a dialog that has a title area for displaying a title and an image
as well as a common area for displaying a description, a message, or an error
message.
Following
is my Custom Dialog implementation.
package test; import org.eclipse.jface.dialogs.IMessageProvider; import org.eclipse.jface.dialogs.TitleAreaDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.GridData; 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.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; public class CustomDialog extends TitleAreaDialog { public String name; public String age; public String gender; public boolean employeedInSixMonths; private Text text1 = null; private Text text2 = null; private Text text3 = null; private Button button = null; public CustomDialog(Shell parentShell) { super(parentShell); } @Override public void create() { super.create(); setTitle("This is my first custom dialog Title"); setMessage("This is a TitleAreaDialog information message", IMessageProvider.INFORMATION); } @Override protected void okPressed() { // Do operations if you want, when ok button pressed name = text1.getText(); age = text2.getText(); gender = text3.getText(); employeedInSixMonths = button.getSelection(); super.okPressed(); } @Override protected Control createDialogArea(Composite parent) { Composite composite = (Composite) super.createDialogArea(parent); Composite container = new Composite(composite, SWT.NONE); GridLayout gridLayout = new GridLayout(); gridLayout.numColumns = 2; container.setLayout(gridLayout); Label label1 = new Label(container, SWT.NONE); label1.setText("Name:"); text1 = new Text(container, SWT.BORDER); Label label2 = new Label(container, SWT.NONE); label2.setText("Age:"); text2 = new Text(container, SWT.BORDER); Label label3 = new Label(container, SWT.NONE); label3.setText("Gender:"); text3 = new Text(container, SWT.BORDER); button = new Button(container, SWT.CHECK); button.setText("Have you been employed in the past six months?"); GridData gridData1 = new GridData(); GridData gridData2 = new GridData(); GridData gridData3 = new GridData(); gridData1.widthHint = 60; gridData2.widthHint = 60; gridData3.widthHint = 60; label1.setLayoutData(gridData1); label2.setLayoutData(gridData2); label3.setLayoutData(gridData3); GridData gridData4 = new GridData(GridData.FILL_HORIZONTAL); GridData gridData5 = new GridData(GridData.FILL_HORIZONTAL); GridData gridData6 = new GridData(GridData.FILL_HORIZONTAL); text1.setLayoutData(gridData4); text2.setLayoutData(gridData5); text3.setLayoutData(gridData6); GridData gridData7 = new GridData(); gridData7.horizontalSpan = 2; button.setLayoutData(gridData7); return composite; } @Override protected void configureShell(Shell newShell) { super.configureShell(newShell); newShell.setText("My Custom Dialog"); } @Override protected Point getInitialSize() { return new Point(500, 300); } @Override public String toString() { return "CustomDialog [name=" + name + ", age=" + age + ", gender=" + gender + ", employeedInSixMonths=" + employeedInSixMonths + "]"; } }
package test; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class Test { public static void main(String[] args) { /* Instantiate Display object, it represents SWT session */ Display display = new Display(); /* * Define Shell, it represent a window, You can add more than one shell * to Display */ Shell shell = new Shell(display); /* Open shell window */ shell.open(); Dialog dialog = new CustomDialog(Display.getDefault().getActiveShell()); int pressedButton = dialog.open(); if (pressedButton == 0) { System.out.println("Ok button pressed"); System.out.println(dialog); } if (pressedButton == 1) { System.out.println("Cancel button pressed"); } /* * Run the event dispatching loop until an exit condition occurs, which * is typically when the main shell window is closed by the user. */ while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } /* Dispose the display */ display.dispose(); } }
No comments:
Post a Comment