package pl.net.bluesoft.rnd.processtool.ui.common;
import com.vaadin.ui.Component;
import com.vaadin.ui.Label;
import com.vaadin.ui.Panel;
import com.vaadin.ui.VerticalLayout;
import pl.net.bluesoft.rnd.processtool.model.BpmTask;
import pl.net.bluesoft.rnd.processtool.ui.widgets.ProcessToolDataWidget;
import pl.net.bluesoft.rnd.processtool.ui.widgets.ProcessToolVaadinRenderable;
import pl.net.bluesoft.rnd.processtool.ui.widgets.ProcessToolWidget;
import pl.net.bluesoft.rnd.processtool.ui.widgets.impl.BaseProcessToolWidget;
import java.io.ByteArrayOutputStream;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Collection;
import static com.vaadin.ui.Label.CONTENT_XHTML;
public class FailedProcessToolWidget extends BaseProcessToolWidget implements ProcessToolVaadinRenderable, ProcessToolDataWidget {
private final Exception e;
public FailedProcessToolWidget(Exception e) {
this.e = e;
}
@Override
public String getAttributeValue(String key) {
return super.getAttributeValue(key);
}
@Override
public Component render() {
Panel p = new Panel();
VerticalLayout vl = new VerticalLayout();
vl.addComponent(new Label(getMessage("process.data.widget.exception-occurred")));
vl.addComponent(new Label(e.getMessage()));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
e.printStackTrace(new PrintWriter(baos));
vl.addComponent(new Label("<pre>" + baos.toString() + "</pre>", CONTENT_XHTML));
vl.addStyleName("error");
p.addComponent(vl);
p.setHeight("150px");
return p;
}
@Override
public Collection<String> validateData(BpmTask task, boolean skipRequired) {
return Arrays.asList("process.data.widget.exception-occurred");
}
@Override
public void saveData(BpmTask task) {
}
@Override
public void loadData(BpmTask task) {
}
@Override
public void addChild(ProcessToolWidget child) {
}
}