Java tutorial
/******************************************************************************* * Copyright (c) 2002, 2012 Innoopract Informationssysteme GmbH and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Innoopract Informationssysteme GmbH - initial API and implementation * EclipseSource - ongoing development ******************************************************************************/ package org.eclipse.rap.demo.controls; import java.lang.reflect.InvocationTargetException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jface.dialogs.ErrorDialog; 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.Window; import org.eclipse.rap.rwt.widgets.DialogCallback; import org.eclipse.rap.rwt.widgets.DialogUtil; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.ColorDialog; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.FontDialog; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.MessageBox; public class DialogsTab extends ExampleTab { private Label inputDlgResLabel; private Label loginDlgResLabel; private Label messageDlgResLabel; private Label errorDlgResLabel; private Label messageBoxDlgResLabel; private Button okButton; private Button cancelButton; private Button yesButton; private Button noButton; private Button retryButton; private Button abortButton; private Button ignoreButton; private Button iconErrorButton; private Button iconInformationButton; private Button iconQuestionButton; private Button iconWarningButton; private Button iconWorkingButton; private Button noIconButton; private Button showMessageBoxDlgButton; private Button showColorDialogButton; private Button showFontDialogButton; protected boolean useDialogCallback; public DialogsTab() { super("Dialogs"); } @Override protected void createStyleControls(final Composite parent) { parent.setLayout(new GridLayout(1, true)); createMessageBoxStyleControls(parent); } @Override protected void createExampleControls(final Composite parent) { parent.setLayout(new GridLayout()); Group group1 = new Group(parent, SWT.NONE); group1.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); group1.setText("JFace Dialogs"); group1.setLayout(new GridLayout(3, true)); // JFace input dialog Button showInputDlgButton = new Button(group1, SWT.PUSH); showInputDlgButton.setText("Input Dialog"); showInputDlgButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent event) { showInputDialog(); } }); showInputDlgButton.setLayoutData(createGridDataFillBoth()); Button showProgressDlgButton = new Button(group1, SWT.PUSH); showProgressDlgButton.setText("ProgressDialog"); showProgressDlgButton.setLayoutData(createGridDataFillBoth()); showProgressDlgButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent e) { showProgressDialog(); } }); insertSpaceLabels(group1, 1); inputDlgResLabel = new Label(group1, SWT.WRAP); inputDlgResLabel.setText("Result:"); GridData gdInputDlgResLabel = new GridData(); gdInputDlgResLabel.horizontalSpan = 3; inputDlgResLabel.setLayoutData(gdInputDlgResLabel); Button showMessageInfoDlgButton = new Button(group1, SWT.PUSH); showMessageInfoDlgButton.setLayoutData(createGridDataFillBoth()); showMessageInfoDlgButton.setText("Info Message"); showMessageInfoDlgButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent event) { showMessageDialogInfo(); } }); Button showMessageWarningDlgButton = new Button(group1, SWT.PUSH); showMessageWarningDlgButton.setLayoutData(createGridDataFillBoth()); showMessageWarningDlgButton.setText("Warning Dialog"); showMessageWarningDlgButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent event) { showMessageDialogWarning(); } }); Button showMessageErrorDlgButton = new Button(group1, SWT.PUSH); showMessageErrorDlgButton.setLayoutData(createGridDataFillBoth()); showMessageErrorDlgButton.setText("Error Message"); showMessageErrorDlgButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent event) { showMessageDialogError(); } }); Button showMessageQuestionDlgButton = new Button(group1, SWT.PUSH); showMessageQuestionDlgButton.setLayoutData(createGridDataFillBoth()); showMessageQuestionDlgButton.setText("Question Dialog"); showMessageQuestionDlgButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent event) { showMessageDialogQuestion(); } }); Button showMessageConfirmDlgButton = new Button(group1, SWT.PUSH); showMessageConfirmDlgButton.setLayoutData(createGridDataFillBoth()); showMessageConfirmDlgButton.setText("Confirm Message"); showMessageConfirmDlgButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent event) { showMessageDialogConfirm(); } }); insertSpaceLabels(group1, 1); messageDlgResLabel = new Label(group1, SWT.WRAP); messageDlgResLabel.setText("Result:"); insertSpaceLabels(group1, 2); Button showErrorDlgButton = new Button(group1, SWT.PUSH); showErrorDlgButton.setLayoutData(createGridDataFillBoth()); showErrorDlgButton.setText("Error Dialog"); showErrorDlgButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent event) { showErrorDialog(); } }); insertSpaceLabels(group1, 2); errorDlgResLabel = new Label(group1, SWT.WRAP); errorDlgResLabel.setText("Result:"); insertSpaceLabels(group1, 2); Group group2 = new Group(parent, SWT.NONE); group2.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); group2.setText("Custom Dialogs"); group2.setLayout(new GridLayout(3, true)); Button showLoginDlgButton = new Button(group2, SWT.PUSH); showLoginDlgButton.setText("Login Dialog"); showLoginDlgButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent event) { showLoginDialog(); } }); showLoginDlgButton.setLayoutData(createGridDataFillBoth()); insertSpaceLabels(group2, 2); loginDlgResLabel = new Label(group2, SWT.WRAP); loginDlgResLabel.setText("Result:"); Group swtDialogsGroup = new Group(parent, SWT.NONE); swtDialogsGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); swtDialogsGroup.setText("SWT Dialogs"); swtDialogsGroup.setLayout(new GridLayout(3, true)); final Button cbUseDialogCallback = new Button(swtDialogsGroup, SWT.CHECK); cbUseDialogCallback.setText("Use DialogCallback"); cbUseDialogCallback.setSelection(useDialogCallback); cbUseDialogCallback.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 3, 1)); cbUseDialogCallback.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent event) { useDialogCallback = cbUseDialogCallback.getSelection(); } }); showMessageBoxDlgButton = new Button(swtDialogsGroup, SWT.PUSH); showMessageBoxDlgButton.setText("MessageBox Dialog"); showMessageBoxDlgButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent event) { showMessageBoxDialog(); } }); showMessageBoxDlgButton.setLayoutData(createGridDataFillBoth()); showColorDialogButton = new Button(swtDialogsGroup, SWT.PUSH); showColorDialogButton.setText("ColorDialog"); showColorDialogButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent e) { showColorDialog(); } }); showColorDialogButton.setLayoutData(createGridDataFillBoth()); showFontDialogButton = new Button(swtDialogsGroup, SWT.PUSH); showFontDialogButton.setText("FontDialog"); showFontDialogButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent e) { showFontDialog(); } }); showFontDialogButton.setLayoutData(createGridDataFillBoth()); messageBoxDlgResLabel = new Label(swtDialogsGroup, SWT.WRAP); messageBoxDlgResLabel.setText("Result:"); GridData gdMessageBoxDlgResLabel = new GridData(); gdMessageBoxDlgResLabel.horizontalSpan = 3; messageBoxDlgResLabel.setLayoutData(gdMessageBoxDlgResLabel); } private GridData createGridDataFillBoth() { return new GridData(GridData.FILL_BOTH); } private void insertSpaceLabels(final Group group, final int count) { for (int i = 0; i < count; i++) { new Label(group, SWT.NONE); } } private void showInputDialog() { final IInputValidator val = new IInputValidator() { public String isValid(final String newText) { String result = null; if (newText.length() < 5) { result = "Input text too short!"; } return result; } }; String title = "Input Dialog"; String mesg = "Enter at least five characters"; String def = "default text"; final InputDialog dlg; dlg = new InputDialog(getShell(), title, mesg, def, val); int returnCode = dlg.open(); String resultText = "Result: " + getReturnCodeText(returnCode); if (returnCode == Window.OK) { resultText += ", value: " + dlg.getValue(); } inputDlgResLabel.setText(resultText); inputDlgResLabel.pack(); } private void showProgressDialog() { ProgressMonitorDialog dialog = new ProgressMonitorDialog(getShell()); try { dialog.run(true, true, new IRunnableWithProgress() { public void run(final IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { monitor.beginTask("Counting from one to 20...", 20); for (int i = 1; !monitor.isCanceled() && i <= 20; i++) { monitor.worked(1); Thread.sleep(1000); } monitor.done(); } }); } catch (Exception e) { MessageDialog.openError(getShell(), "Error", e.getMessage()); } } private void showMessageDialogInfo() { String title = "Information"; String mesg = "RAP rocks!"; MessageDialog.openInformation(getShell(), title, mesg); messageDlgResLabel.setText("Result: none"); messageDlgResLabel.pack(); } private void showMessageDialogError() { String title = "Error"; String mesg = "An everyday error occured.\n " + "Nothing to get worried."; MessageDialog.openError(getShell(), title, mesg); messageDlgResLabel.setText("Result: none"); messageDlgResLabel.pack(); } private void showMessageDialogQuestion() { String title = "Question"; String mesg = "Do you like the RAP technology?\n\n" + "Note that you can also press <Return> here. " + "The correct answer is automatically selected."; boolean result = MessageDialog.openQuestion(getShell(), title, mesg); messageDlgResLabel.setText("Result: " + result); messageDlgResLabel.pack(); } private void showMessageDialogConfirm() { String title = "Confirmation"; String mesg = "Nothing will be done. Ok?"; boolean result = MessageDialog.openConfirm(getShell(), title, mesg); messageDlgResLabel.setText("Result: " + result); messageDlgResLabel.pack(); } private void showMessageDialogWarning() { String title = "Warning"; String mesg = "You have been warned."; MessageDialog.openWarning(getShell(), title, mesg); messageDlgResLabel.setText("Result: none"); messageDlgResLabel.pack(); } private void showErrorDialog() { String title = "Error"; int code = 23; String mesg = "An absolutetly weird error occured"; String reason = "Don't know, it just happened ..."; Exception exception = new IndexOutOfBoundsException("negative index: -1"); exception = new RuntimeException(exception); IStatus status = new Status(IStatus.ERROR, "org.eclipse.rap.demo", code, reason, exception); int returnCode = ErrorDialog.openError(getShell(), title, mesg, status); errorDlgResLabel.setText("Result: " + getReturnCodeText(returnCode)); errorDlgResLabel.pack(); } private void showLoginDialog() { String message = "Please sign in with your username and password:"; final LoginDialog loginDialog = new LoginDialog(getShell(), "Login", message); loginDialog.setUsername("john"); int returnCode = loginDialog.open(); String resultText = "Result: " + getReturnCodeText(returnCode); if (returnCode == Window.OK) { String username = loginDialog.getUsername(); String password = loginDialog.getPassword(); String pwInfo = password == null ? "n/a" : password.length() + " chars"; resultText += ", user: " + username + ", password: " + pwInfo; } loginDlgResLabel.setText(resultText); loginDlgResLabel.pack(); } private String getReturnCodeText(final int code) { String result; if (code == Window.OK) { result = "OK"; } else if (code == Window.CANCEL) { result = "CANCEL"; } else { result = String.valueOf(code); } return result; } private void showMessageBoxDialog() { int style = getStyle(); if (okButton.getEnabled() && okButton.getSelection()) { style |= SWT.OK; } if (cancelButton.getEnabled() && cancelButton.getSelection()) { style |= SWT.CANCEL; } if (yesButton.getEnabled() && yesButton.getSelection()) { style |= SWT.YES; } if (noButton.getEnabled() && noButton.getSelection()) { style |= SWT.NO; } if (retryButton.getEnabled() && retryButton.getSelection()) { style |= SWT.RETRY; } if (abortButton.getEnabled() && abortButton.getSelection()) { style |= SWT.ABORT; } if (ignoreButton.getEnabled() && ignoreButton.getSelection()) { style |= SWT.IGNORE; } if (iconErrorButton.getEnabled() && iconErrorButton.getSelection()) { style |= SWT.ICON_ERROR; } if (iconInformationButton.getEnabled() && iconInformationButton.getSelection()) { style |= SWT.ICON_INFORMATION; } if (iconQuestionButton.getEnabled() && iconQuestionButton.getSelection()) { style |= SWT.ICON_QUESTION; } if (iconWarningButton.getEnabled() && iconWarningButton.getSelection()) { style |= SWT.ICON_WARNING; } if (iconWorkingButton.getEnabled() && iconWorkingButton.getSelection()) { style |= SWT.ICON_WORKING; } String title = "MessageBox Title"; String mesg = "Lorem ipsum dolor sit amet consectetuer adipiscing elit."; MessageBox mb = new MessageBox(getShell(), style); mb.setText(title); mb.setMessage(mesg); if (useDialogCallback) { DialogUtil.open(mb, new DialogCallback() { public void dialogClosed(int returnCode) { String returnCodeText = returnCodeText(returnCode); messageBoxDlgResLabel.setText("Result: " + returnCodeText); messageBoxDlgResLabel.pack(); } }); } else { int result = mb.open(); String returnCodeText = returnCodeText(result); messageBoxDlgResLabel.setText("Result: " + returnCodeText); messageBoxDlgResLabel.pack(); } } private void showColorDialog() { final ColorDialog dialog = new ColorDialog(getShell()); if (useDialogCallback) { DialogUtil.open(dialog, new DialogCallback() { public void dialogClosed(int returnCode) { RGB result = dialog.getRGB(); messageBoxDlgResLabel.setText("Result: " + result); messageBoxDlgResLabel.pack(); } }); } else { RGB result = dialog.open(); messageBoxDlgResLabel.setText("Result: " + result); messageBoxDlgResLabel.pack(); } } protected void showFontDialog() { final FontDialog dialog = new FontDialog(getShell(), SWT.SHELL_TRIM); if (useDialogCallback) { DialogUtil.open(dialog, new DialogCallback() { public void dialogClosed(int returnCode) { FontData fontData = returnCode == SWT.OK ? dialog.getFontList()[0] : null; RGB rgb = dialog.getRGB(); messageBoxDlgResLabel.setText("Result: " + fontData + " / " + rgb); messageBoxDlgResLabel.pack(); } }); } else { FontData result = dialog.open(); messageBoxDlgResLabel.setText("Result: " + result + " / " + dialog.getRGB()); messageBoxDlgResLabel.pack(); } } private void createMessageBoxStyleControls(final Composite parent) { createButtonStyleGroup(parent); createIconStyleGroup(parent); } private void createButtonStyleGroup(final Composite parent) { Group group = new Group(parent, SWT.NONE); group.setLayout(new GridLayout()); GridData layoutData = new GridData(SWT.FILL, SWT.FILL, false, false); group.setLayoutData(layoutData); group.setText("SWT MessageBox Styles"); okButton = new Button(group, SWT.CHECK); okButton.setText("SWT.OK"); cancelButton = new Button(group, SWT.CHECK); cancelButton.setText("SWT.CANCEL"); yesButton = new Button(group, SWT.CHECK); yesButton.setText("SWT.YES"); noButton = new Button(group, SWT.CHECK); noButton.setText("SWT.NO"); retryButton = new Button(group, SWT.CHECK); retryButton.setText("SWT.RETRY"); abortButton = new Button(group, SWT.CHECK); abortButton.setText("SWT.ABORT"); ignoreButton = new Button(group, SWT.CHECK); ignoreButton.setText("SWT.IGNORE"); } private void createIconStyleGroup(final Composite parent) { Group group = new Group(parent, SWT.NONE); group.setLayout(new GridLayout()); GridData iconGroupData = new GridData(SWT.FILL, SWT.FILL, false, false); group.setLayoutData(iconGroupData); group.setText("SWT MessageBox Icon Styles"); iconErrorButton = new Button(group, SWT.RADIO); iconErrorButton.setText("SWT.ICON_ERROR"); iconInformationButton = new Button(group, SWT.RADIO); iconInformationButton.setText("SWT.ICON_INFORMATION"); iconQuestionButton = new Button(group, SWT.RADIO); iconQuestionButton.setText("SWT.ICON_QUESTION"); iconWarningButton = new Button(group, SWT.RADIO); iconWarningButton.setText("SWT.ICON_WARNING"); iconWorkingButton = new Button(group, SWT.RADIO); iconWorkingButton.setText("SWT.ICON_WORKING"); noIconButton = new Button(group, SWT.RADIO); noIconButton.setText("No Icon"); noIconButton.setSelection(true); } private static String returnCodeText(int result) { String strResult = ""; switch (result) { case SWT.OK: strResult = "SWT.OK"; break; case SWT.YES: strResult = "SWT.YES"; break; case SWT.NO: strResult = "SWT.NO"; break; case SWT.CANCEL: strResult = "SWT.CANCEL"; break; case SWT.ABORT: strResult = "SWT.ABORT"; break; case SWT.RETRY: strResult = "SWT.RETRY"; break; case SWT.IGNORE: strResult = "SWT.IGNORE"; break; default: strResult = "" + result; break; } return strResult; } }