By
extending Dialog class, you can create custom dialogs. Following are some of
the useful methods, you need to override while creating custom dialogs.
Method
|
Description
|
protected
void okPressed()
|
Notifies
that the ok button of this dialog has been pressed.
|
protected
Control createDialogArea(Composite parent)
|
Creates
and returns the contents of the upper part of this dialog (above the button
bar). The returned control's layout data must be an instance of GridData.
This method must not modify the parent's layout.
|
protected
void configureShell(Shell newShell)
|
Configures
the given shell in preparation for opening this window in it.
|
protected
Point getInitialSize()
|
Returns
the initial size to use for the shell.
|
package test; import org.eclipse.jface.dialogs.Dialog; 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 Dialog { 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 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); GridLayout gridLayout = new GridLayout(); gridLayout.numColumns = 2; composite.setLayout(gridLayout); Label label1 = new Label(composite, SWT.NONE); label1.setText("Name:"); text1 = new Text(composite, SWT.BORDER); Label label2 = new Label(composite, SWT.NONE); label2.setText("Age:"); text2 = new Text(composite, SWT.BORDER); Label label3 = new Label(composite, SWT.NONE); label3.setText("Gender:"); text3 = new Text(composite, SWT.BORDER); button = new Button(composite, 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(450, 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