package org.orienteer.birt.component.widget; import java.util.Map; import org.apache.wicket.Component; import org.apache.wicket.extensions.ajax.markup.html.AjaxLazyLoadPanel; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.model.IModel; import org.apache.wicket.model.ResourceModel; import org.apache.wicket.util.string.Strings; import org.eclipse.birt.report.engine.api.EngineException; import org.orienteer.birt.component.BirtManagedHtmlReportPanel; import org.orienteer.birt.component.service.BirtReportODocumentConfig; import org.orienteer.core.component.FAIcon; import org.orienteer.core.component.FAIconType; import org.orienteer.core.widget.AbstractWidget; import com.orientechnologies.orient.core.record.impl.ODocument; /** * Base widget for BIRT report widgets with ajax report loading * @param <T> Report object type */ public class AbstractBirtWidget<T> extends AbstractWidget<T>{ /** * */ private static final long serialVersionUID = 1L; public static final String OCLASS_NAME = "BirtWidget"; public static final String PARAMETERS_FIELD_NAME = "parameters"; public static final String REPORT_FIELD_NAME = "report"; public static final String USE_LOCAL_BASE_FIELD_NAME = "useLocalDB"; public static final String VISIBLE_PARAMETERS_FIELD_NAME = "visibleParameters"; public AbstractBirtWidget(String id, IModel<T> model, IModel<ODocument> widgetDocumentModel,final Map<String,Object> additionalParameters) { super(id, model, widgetDocumentModel); /* * parameters * report byte[] * */ AjaxLazyLoadPanel panel = new AjaxLazyLoadPanel("report") { /** * */ private static final long serialVersionUID = 1L; @Override public Component getLazyLoadComponent(String id) { try { return new BirtManagedHtmlReportPanel(id,new BirtReportODocumentConfig(AbstractBirtWidget.this.getWidgetDocumentModel(),additionalParameters)); } catch (EngineException e) { String message = e.getMessage(); if (!Strings.isEmpty(message)){ error(message); } e.printStackTrace(); return new Label(id,"Report error: "+message); } } }; add(panel); } @Override protected FAIcon newIcon(String id) { return new FAIcon(id, FAIconType.table); } @Override protected IModel<String> getDefaultTitleModel() { return new ResourceModel("widget.birt"); } }