| Free tutorials for Java, Eclipse and Web programming |
We can use the Birtviewer also in a local RCP Application, it isn't more than an browser view which shows a HTML Page generated by an integrated Webserver.
The following assumes that you are already familiar with Eclipse RCP development. See Eclipse RCP Tutorial in case you need an introduction.
Convert "de.vogella.birt.stocks" to a plugin project, via right mouse click -> Configure -> "Convert to plug-in project".
Create an new plugin project "de.vogella.birt.stocks.rcp". Select the template "RCP Application with a view".
Add the following plugins as dependendies to "de.vogella.birt.stocks.rcp".
Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Rcp Bundle-SymbolicName: de.vogella.birt.stocks.rcp; singleton:=true Bundle-Version: 1.0.0.qualifier Bundle-Activator: de.vogella.birt.stocks.rcp.Activator Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, org.eclipse.birt.report.viewer;bundle-version="2.5.0", org.eclipse.birt.report.engine.emitter.html;bundle-version="2.5.0", de.vogella.birt.stocks;bundle-version="1.0.0", org.eclipse.birt;bundle-version="2.5.0", org.eclipse.birt.chart.ui;bundle-version="2.5.0", org.eclipse.birt.chart.cshelp;bundle-version="2.5.0", org.eclipse.birt.chart.device.extension;bundle-version="2.5.0", org.eclipse.birt.chart.device.pdf;bundle-version="2.5.0", org.eclipse.birt.chart.device.svg;bundle-version="2.5.0", org.eclipse.birt.chart.device.swt;bundle-version="2.5.0", org.eclipse.birt.chart.engine.extension;bundle-version="2.5.0", org.eclipse.birt.chart.examples;bundle-version="2.5.0", org.eclipse.birt.chart.reportitem;bundle-version="2.5.0", org.eclipse.birt.chart.reportitem.ui;bundle-version="2.5.0", org.eclipse.birt.chart.ui.extension;bundle-version="2.5.0", org.eclipse.birt.core.script.function;bundle-version="2.5.0" Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Copy your report to "stock_report_rcp.rptdesign" into this new project. Open this report and change the "open" JavaScript to the following.
count = 0;
/*
* load and init data reader
* import Platform from org.eclipse.core.runtime
*/
importPackage(Packages.org.eclipse.core.runtime);
/* load bundle with POJOs and data loading class */
myBundle = Platform.getBundle("de.vogella.birt.stocks");
/* load data reader class */
readerClass = myBundle.loadClass("de.vogella.birt.stocks.daomock.StockDaoMock");
/* create new instance of DataReader */
readerInstance = readerClass.newInstance();
/* read data */
stock = readerInstance.getStockValues("Java");
Use this code as View.java.
package de.vogella.birt.stocks.rcp;
import java.net.MalformedURLException;
import java.net.URL;
import org.eclipse.birt.report.viewer.utilities.WebViewer;
import org.eclipse.core.runtime.Platform;
import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.part.ViewPart;
import org.osgi.framework.Bundle;
public class View extends ViewPart {
public static final String ID = "de.vogella.birt.stocks.rcp.view";
public void createPartControl(Composite parent) {
String path = "";
try {
Bundle bundle = Platform.getBundle("de.vogella.birt.stocks.rcp");
path = new URL(bundle.getLocation()).getPath();
path = path .substring(6); //"file:/" 0 bis 5
path = path .replace("/", "\\");
path = path + "stock_report_rcp.rptdesign";
}
catch (MalformedURLException me){
System.out.println(me.getStackTrace());
}
Browser browser = new Browser(parent, SWT.NONE);
// Use the filename of your report
WebViewer.display(path, WebViewer.HTML, browser, "frameset"); }
/**
* Passing the focus request to the viewer's control.
*/
public void setFocus() {
}
}