/*
 * Copyright 2012 by A-SIT, Secure Information Technology Center Austria
 *
 * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
 * the European Commission - subsequent versions of the EUPL (the "Licence");
 * You may not use this work except in compliance with the Licence.
 * You may obtain a copy of the Licence at:
 * http://joinup.ec.europa.eu/software/page/eupl
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the Licence is distributed on an "AS IS" basis,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the Licence for the specific language governing permissions and
 * limitations under the Licence.
 */
package at.asit.pdfover.gui.controls;

// Imports
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;

/**
 * A Message dialog
 */
public class Dialog {

	private MessageBox box;
	
	/**
	 * Message box buttons
	 */
	public enum BUTTONS {
		/** Display only ok button */
		OK,
		/** Display buttons ok and cancel */
		OK_CANCEL,
		/** Display retry and cancel buttons */
		RETRY_CANCEL,
		/** Display abort, retry and ignore buttons */
		ABORT_RETRY_IGNORE
	};
	
	/**
	 * Message box icon
	 */
	public enum ICON {
		/** Error icon */
		ERROR,
		/** Information icon */
		INFORMATION,
		/** Question icon */
		QUESTION,
		/** Warning icon */
		WARNING,
		/** Working icon */
		WORKING
	};
	
	/**
	 * @param parent The parent shell
	 * @param title The dialog title
	 * @param message The dialog message
	 * @param button The BUTTONS to be shown
	 * @param icon The ICON to be displayed
	 */
	public Dialog(Shell parent, String title, String message, BUTTONS button, ICON icon) {
		this.initialize(parent, title, message, button, icon);
	}

	private void initialize(Shell parent, String title, String message, BUTTONS button, ICON icon) {
		int boxstyle = 0;
		switch (icon) {
			case ERROR:
				boxstyle |= SWT.ICON_ERROR;
				break;
			case INFORMATION:
				boxstyle |= SWT.ICON_INFORMATION;
				break;
			case QUESTION:
				boxstyle |= SWT.ICON_QUESTION;
				break;
			case WARNING:
				boxstyle |= SWT.ICON_WARNING;
				break;
			case WORKING:
				boxstyle |= SWT.ICON_WORKING;
				break;
		}

		switch(button) {
			case OK:
				boxstyle |= SWT.OK;
				break;
			case OK_CANCEL:
				boxstyle |= SWT.OK | SWT.CANCEL;
				break;
			case RETRY_CANCEL:
				boxstyle |= SWT.RETRY | SWT.CANCEL;
				break;
			case ABORT_RETRY_IGNORE:
				boxstyle |= SWT.RETRY | SWT.ABORT | SWT.IGNORE;
				break;
		}

		this.box = new MessageBox(parent, boxstyle);
		this.box.setMessage(message);
		this.box.setText(title);
	}

	/**
	 * Open error dialog
	 * 
	 * @return SWT.OK | SWT.IGNORE | SWT.ABORT | SWT.RETRY | SWT.CANCEL
	 */
	public int open() {
		return this.box.open();
	}
}