最终效果图
方式一:加载本地json数据文件
rcp项目目录结构:
java代码:
OleFrame oleFrame = new OleFrame(container, SWT.NONE);
oleFrame.setLayoutData(new GridData(GridData.FILL_BOTH));
OleControlSite controlSite = new OleControlSite(oleFrame, SWT.NONE, "ShockwaveFlash.ShockwaveFlash");
controlSite.doVerb(OLE.OLEIVERB_SHOW);
final OleAutomation automation = new OleAutomation(controlSite);
int[] methodIDs = automation.getIDsOfNames(new String[] { "LoadMovie" });
Bundle bundle = Platform.getBundle(Activator.PLUGIN_ID);
String file = null;
String file2 = null;
try {
file = FileLocator.toFileURL(FileLocator.find(bundle, new Path("ofc/open-flash-chart.swf"), null)).getPath();
file2 = FileLocator.toFileURL(FileLocator.find(bundle, new Path("ofc/data.json"), null)).getPath();
} catch (IOException e) {
e.printStackTrace();
}
Variant[] methodArgs = {
new Variant(0), new Variant(file.substring(1) + "?data-file=" + file2.substring(1)) };
automation.invoke(methodIDs[0], methodArgs);
OK!
方式二:远程加载json数据
远程web项目目录结构
java代码:
OleFrame oleFrame = new OleFrame(container, SWT.NONE);
oleFrame.setLayoutData(new GridData(GridData.FILL_BOTH));
OleControlSite controlSite = new OleControlSite(oleFrame, SWT.NONE, "ShockwaveFlash.ShockwaveFlash");
controlSite.doVerb(OLE.OLEIVERB_SHOW);
final OleAutomation automation = new OleAutomation(controlSite);
int[] methodIDs = automation.getIDsOfNames(new String[] { "LoadMovie" });
Bundle bundle = Platform.getBundle(Activator.PLUGIN_ID);
Variant[] methodArgs = {
new Variant(0), new Variant("http://localhost/rcp-server/open-flash-chart.swf?data-file=data.json") };
automation.invoke(methodIDs[0], methodArgs);
备注:
如果远程不是通过文件加载的数据,需要把data-file参数换为ofc,如下:
http://localhost/rcp-server/open-flash-chart.swf?ofc=data.json