eu.cloudwave.wp5.feedback.eclipse.base.ui.dialogs.AbstractMessageDialog.java Source code

Java tutorial

Introduction

Here is the source code for eu.cloudwave.wp5.feedback.eclipse.base.ui.dialogs.AbstractMessageDialog.java

Source

/*******************************************************************************
 * Copyright 2015 Software Evolution and Architecture Lab, University of Zurich
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 ******************************************************************************/
package eu.cloudwave.wp5.feedback.eclipse.base.ui.dialogs;

import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.PlatformUI;

import eu.cloudwave.wp5.feedback.eclipse.base.ui.thread.AbstractUiTask;

/**
 * An abstract implementation of a {@link MessageDialog} that provides two Buttons, one to cancel (i.e. do nothing) and
 * one for a custom action. The custom action has to be implemented by subclasses.
 */
public abstract class AbstractMessageDialog {

    /**
     * Displays the current {@link MessageDialog}.
     * 
     * @param title
     *          the title of the {@link MessageDialog}
     * @param message
     *          the message of the {@link MessageDialog}
     * @param dialogImageType
     *          one of the following values:
     *          <ul>
     *          <li>MessageDialog.NONE for a dialog with no image</li>
     *          <li>MessageDialog.ERROR for a dialog with an error image</li>
     *          <li>MessageDialog.INFORMATION for a dialog with an information image</li>
     *          <li>MessageDialog.QUESTION for a dialog with a question image</li>
     *          <li>MessageDialog.WARNING for a dialog with a warning image</li>
     *          </ul>
     * @param buttonText
     *          the text of the button
     */
    public final void display(final String title, final String message, final int dialogImageType,
            final String buttonText) {
        new AbstractUiTask() {
            @Override
            public void doWork() {
                final Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
                final String[] buttons = new String[] { "Cancel", buttonText };
                final MessageDialog messageDialog = new MessageDialog(shell, title, null, message,
                        MessageDialog.ERROR, buttons, 0);
                final int action = messageDialog.open();
                if (action == 1) {
                    action(shell);
                }
            }
        }.run();
    }

    /**
     * The action that should be executed.
     */
    protected abstract void action(Shell shell);

}