package testreport; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.net.URL; import java.util.HashMap; import org.eclipse.birt.core.framework.Platform; import org.eclipse.birt.report.engine.api.EngineConfig; import org.eclipse.birt.report.engine.api.EngineConstants; import org.eclipse.birt.report.engine.api.EngineException; import org.eclipse.birt.report.engine.api.HTMLRenderContext; import org.eclipse.birt.report.engine.api.HTMLRenderOption; import org.eclipse.birt.report.engine.api.IRenderOption; import org.eclipse.birt.report.engine.api.IReportEngine; import org.eclipse.birt.report.engine.api.IReportEngineFactory; import org.eclipse.birt.report.engine.api.IReportRunnable; import org.eclipse.birt.report.engine.api.IRunAndRenderTask; import org.eclipse.jface.action.IToolBarManager; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.SWT; import org.eclipse.swt.browser.Browser; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.ISharedImages; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.part.ViewPart; public class View extends ViewPart { public static final String ID = "TestReport.view"; private Browser browser; private TableViewer viewer; /** * The content provider class is responsible for providing objects to the * view. It can wrap existing objects in adapters or simply return objects * as-is. These objects may be sensitive to the current input of the view, * or ignore it and always show the same content (like Task List, for * example). */ class ViewContentProvider implements IStructuredContentProvider { public void inputChanged(Viewer v, Object oldInput, Object newInput) { } public void dispose() { } public Object[] getElements(Object parent) { return new String[] { "One", "Two", "Three" }; } } class ViewLabelProvider extends LabelProvider implements ITableLabelProvider { public String getColumnText(Object obj, int index) { return getText(obj); } public Image getColumnImage(Object obj, int index) { return getImage(obj); } public Image getImage(Object obj) { return PlatformUI.getWorkbench().getSharedImages().getImage( ISharedImages.IMG_OBJ_ELEMENT); } } /** * This is a callback that will allow us to create the viewer and initialize * it. */ // public void createPartControl(Composite parent) { // viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL // | SWT.V_SCROLL); // viewer.setContentProvider(new ViewContentProvider()); // viewer.setLabelProvider(new ViewLabelProvider()); // viewer.setInput(getViewSite()); // } public void createPartControl(Composite parent) { browser = new Browser(parent, SWT.NONE); try { this.previewReport(); } catch (EngineException e) { e.printStackTrace(); } initializeToolBar(); } private void previewReport() throws EngineException { EngineConfig config = new EngineConfig(); // Create the report engine IReportEngineFactory factory = (IReportEngineFactory) Platform .createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY); IReportEngine engine = factory.createReportEngine(config); IReportRunnable design = null; try { // Open a report design - // use design to // modify design, retrieve // embedded images etc. String report = "http://10.1.1.148:9090/DsrEli-ReportServer/test.rptdesign"; // String report = "http://10.1.1.148:9090/DsrEli-ReportServer/frameset?__report=report/main/Annuallywork.rptdesign"; URL url = new URL(report); InputStream fs = url.openStream(); design = engine.openReportDesign(fs); IRunAndRenderTask task = engine.createRunAndRenderTask(design); // Set Render context to handle url // and image locations HTMLRenderContext renderContext = new HTMLRenderContext(); renderContext.setImageDirectory("c:/test"); HashMap<String, HTMLRenderContext> contextMap = new HashMap<String, HTMLRenderContext>(); contextMap.put(EngineConstants.APPCONTEXT_HTML_RENDER_CONTEXT,renderContext); task.setAppContext(contextMap); // Set rendering options - // such as file or stream output, // output format, whether it is // embeddable, etc // Render report to // Byte IRenderOption options; options = new HTMLRenderOption(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); options.setOutputStream(bos); options.setOutputFormat("html"); task.setRenderOption(options); // run the report and destroy the task.run(); task.close(); // set Browser text browser.setText(bos.toString()); engine.destroy(); } catch (Exception e) { e.printStackTrace(); } } /** * Passing the focus request to the viewer's control. */ public void setFocus() { viewer.getControl().setFocus(); } private void initializeToolBar() { IToolBarManager toolBarManager = getViewSite().getActionBars().getToolBarManager(); } }