package name.abuchen.portfolio.ui.views;
import java.io.PrintWriter;
import java.io.StringWriter;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Text;
import name.abuchen.portfolio.ui.AbstractFinanceView;
import name.abuchen.portfolio.ui.Messages;
import name.abuchen.portfolio.ui.PortfolioPart;
public class ExceptionView extends AbstractFinanceView
{
private Exception exception;
@Override
protected String getDefaultTitle()
{
return Messages.LabelError;
}
@Override
public void init(PortfolioPart part, Object parameter)
{
super.init(part, parameter);
if (parameter instanceof Exception)
this.exception = (Exception) parameter;
}
@Override
protected Control createBody(Composite parent)
{
Composite container = new Composite(parent, SWT.None);
GridDataFactory.fillDefaults().grab(true, true).applyTo(container);
GridLayoutFactory.fillDefaults().numColumns(1).applyTo(container);
Text entryText = new Text(container, SWT.MULTI | SWT.WRAP | SWT.READ_ONLY | SWT.BORDER | SWT.V_SCROLL);
entryText.setText(createText());
GridDataFactory.fillDefaults().grab(true, true).applyTo(entryText);
return container;
}
private String createText()
{
if (exception == null)
return ""; //$NON-NLS-1$
StringBuilder msg = new StringBuilder();
if (exception.getMessage() != null)
msg.append(exception.getMessage()).append("\n\n"); //$NON-NLS-1$
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
exception.printStackTrace(pw);
msg.append(sw.toString());
return msg.toString();
}
}