package org.atdl4j.ui.swt.app.impl;
import org.apache.log4j.Logger;
import org.atdl4j.config.Atdl4jOptions;
import org.atdl4j.ui.app.impl.AbstractAtdl4jUserMessageHandler;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
/**
* Represents the SWT-specific GUI pop-up message screen support.
*
* @author Scott Atwell
* @version 1.0, Mar 1, 2010
*/
public class SWTAtdl4jUserMessageHandler
extends AbstractAtdl4jUserMessageHandler
{
private final Logger logger = Logger.getLogger(SWTAtdl4jUserMessageHandler.class);
private Composite parentComposite;
public void init(Object parentOrShell, Atdl4jOptions atdl4jOptions)
{
init( ((Composite) parentOrShell).getShell(), atdl4jOptions );
}
public void init(Composite aParentComposite, Atdl4jOptions atdl4jOptions)
{
setAtdl4jOptions( atdl4jOptions );
setParentComposite( aParentComposite );
}
/* (non-Javadoc)
* @see org.atdl4j.ui.app.Atdl4jUserMessageHandler#displayException(java.lang.String, java.lang.String, java.lang.Throwable)
*/
@Override
public void displayException(String aTitle, String aMsgText, Throwable e)
{
MessageBox messageBox = new MessageBox(getShell(), SWT.OK | SWT.ICON_ERROR);
if ( aTitle != null )
{
messageBox.setText( aTitle );
logger.warn( aTitle, e );
}
else
{
messageBox.setText( "Exception" );
logger.warn( "Exception: ", e );
}
String msg = extractExceptionMessage( e );
if ( ( aMsgText != null ) && ( aMsgText.length() > 0 ) )
{
messageBox.setMessage(aMsgText + "\n\n" + msg);
}
else
{
messageBox.setMessage( "" + msg );
}
messageBox.open();
}
/* (non-Javadoc)
* @see org.atdl4j.ui.app.Atdl4jUserMessageHandler#displayException(java.lang.String, java.lang.String, java.lang.Throwable)
*/
@Override
public void displayMessage(String aTitle, String aMsgText)
{
MessageBox messageBox = new MessageBox(getShell(), SWT.OK | SWT.ICON_INFORMATION );
if ( aTitle != null )
{
messageBox.setText( aTitle );
}
messageBox.setMessage( aMsgText );
messageBox.open();
}
/**
* @return the parentComposite
*/
private Composite getParentComposite()
{
return this.parentComposite;
}
/**
* @param aParentComposite the parentComposite to set
*/
private void setParentComposite(Composite aParentComposite)
{
this.parentComposite = aParentComposite;
}
/**
* Returns getParentComposite().getShell().
* @return the shell
*/
private Shell getShell()
{
if ( getParentComposite() != null )
{
return getParentComposite().getShell();
}
else
{
return null;
}
}
}