2012-05-31 1 views
0

Я новичок в портлетах Ваадина. Я разработал несколько портлетов с помощью Vaadin, теперь хочу добавить отчеты Birt в портлет Vaadin, но я не знаю, как это сделать, так что, пожалуйста, помогите мне в этом, или если у вас есть какой-либо справочный документ по этому поводу, будет действительно полезноПривет, я хочу добавить сообщение Birt в портлет Vaadin

Заранее спасибо!

Азад

ответ

0

Vaadin почти так же, как Swing. Тогда я нашел код в Интернете http://www.eclipse.org/forums/index.php/mv/msg/119253/721257/ и сделал некоторые небольшие приспособления только для запуска в окне Vaadin:

package com.example.testejanelas; 

import java.io.ByteArrayOutputStream; 
import java.net.URL; 
import java.net.URLClassLoader; 
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.HTMLRenderOption; 
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 com.vaadin.ui.Label; 
import com.vaadin.ui.Window; 

public class ViewParaBIRT extends Window { 

private static final long serialVersionUID = 1L; 

IReportEngine engine = null; 
EngineConfig config = null; 
Label label; 

public ViewParaBIRT(){ 
    setSizeFull(); 
    startPlatform(); 
    System.out.println("Started"); 
    runReport(); 
    stopPlatform(); 
    System.out.println("Finished"); 
    center(); 
} 

public void runReport() { 
    try { 
     IReportRunnable design = null; 
     design = engine 
       .openReportDesign("D:\\workspace.carlos\\TesteJanelas\\src\\com\\example\\birt\\new_report.rptdesign"); 
     IRunAndRenderTask task = engine.createRunAndRenderTask(design); 
     HTMLRenderOption options = new HTMLRenderOption(); 
     ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
     bos.toString("ISO-8859-1"); 
     options.setOutputStream(bos); 
     options.setOutputFormat("html"); 
     options.setEmbeddable(true); 
     task.setRenderOption(options); 
     task.run(); 
     task.close(); 
     label = new Label(bos.toString(),Label.CONTENT_XHTML); 
     addComponent(label); 
     System.out.println("Finished Gen"); 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 
} 

public void startPlatform() { 
    try { 
     config = new EngineConfig(); 
     HashMap context = new HashMap(); 
     URLClassLoader cl = (URLClassLoader) TestBirtViewer.class 
       .getClassLoader(); 
     URL[] myurls = cl.getURLs(); 
     Class cl1 = cl.loadClass("com.mysql.jdbc.Driver"); 
     context.put("PARENT_CLASSLOADER", cl); 
     config.setAppContext(context); 
     Platform.startup(config); 
     IReportEngineFactory factory = (IReportEngineFactory) Platform 
       .createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY); 
     engine = factory.createReportEngine(config); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

public void stopPlatform() { 
    engine.destroy(); 
    Platform.shutdown(); 
} 

} 
+0

Что такое 'TestBirtViewer.class'? – Pere