i am getting null pointer exceprtion when try to close the report browser.
the same code is working perfectly in adobe reader 8. i am getting this problem adobe reader 9.
i am exporting the report file as a pdf and saving locally. report is displayed in the browser from local directory.
till its working fine. when close the report file.. i am getting the following error:
java.lang.NullPointerException
at org.eclipse.swt.ole.win32.OleClientSite.onPaint(OleClientSite.java:921)
at org.eclipse.swt.ole.win32.OleClientSite.access$2(OleClientSite.java:906)
at org.eclipse.swt.ole.win32.OleClientSite$1.handleEvent(OleClientSite.java:131)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1027)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1012)
at org.eclipse.swt.widgets.Composite.WM_PAINT(Composite.java:1424)
at org.eclipse.swt.widgets.Control.windowProc(Control.java:3842)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4541)
at org.eclipse.swt.internal.ole.win32.COM.CoFreeUnusedLibraries(Native Method)
at org.eclipse.swt.ole.win32.OleClientSite.releaseObjectInterfaces(OleClientSite.java:1084)
at org.eclipse.swt.ole.win32.OleControlSite.releaseObjectInterfaces(OleControlSite.java:683)
at org.eclipse.swt.ole.win32.OleClientSite.onDispose(OleClientSite.java:852)
at org.eclipse.swt.ole.win32.OleClientSite.access$1(OleClientSite.java:847)
at org.eclipse.swt.ole.win32.OleClientSite$1.handleEvent(OleClientSite.java:128)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1027)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1008)
at org.eclipse.swt.widgets.Widget.release(Widget.java:804)
at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:755)
at org.eclipse.swt.widgets.Widget.release(Widget.java:807)
at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:755)
at org.eclipse.swt.widgets.Widget.release(Widget.java:807)
at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:755)
at org.eclipse.swt.widgets.Canvas.releaseChildren(Canvas.java:174)
at org.eclipse.swt.widgets.Decorations.releaseChildren(Decorations.java:771)
at org.eclipse.swt.widgets.Shell.releaseChildren(Shell.java:1211)
at org.eclipse.swt.widgets.Widget.release(Widget.java:807)
at org.eclipse.swt.widgets.Widget.dispose(Widget.java:441)
at org.eclipse.swt.widgets.Decorations.dispose(Decorations.java:446)
at org.eclipse.swt.widgets.Shell.dispose(Shell.java:674)
at org.eclipse.swt.widgets.Decorations.closeWidget(Decorations.java:308)
at org.eclipse.swt.widgets.Decorations.WM_CLOSE(Decorations.java:1643)
at org.eclipse.swt.widgets.Control.windowProc(Control.java:3789)
at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:337)
at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1576)
at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:1937)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4528)
at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2366)
at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:477)
at org.eclipse.swt.widgets.Control.windowProc(Control.java:3877)
at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:337)
at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1576)
at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:1937)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4528)
at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2366)
at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:477)
at org.eclipse.swt.widgets.Control.windowProc(Control.java:3877)
at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:337)
at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1576)
at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:1937)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4528)
at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2371)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3420)
at com.siemens.med.cad.hqm.view.mainUI.HQMMainForm.buildMainShell(HQMMainForm.java:246)
at com.siemens.med.cad.hqm.event.UserLoginEventHandler.loginDisplay(UserLoginEventHandler.java:240)
at com.siemens.med.cad.hqm.event.UserLoginEventHandler.widgetSelected(UserLoginEventHandler.java:97)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:228)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3823)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3422)
this is my code:
private void displayReport(String reportTitle) {
// Shell to display the report
Display display = Display.getDefault() ;
Shell shell = new Shell(SWT.RESIZE //Display of the active Shell being used
| SWT.CLOSE | SWT.MIN | SWT.MAX | SWT.APPLICATION_MODAL);
shell.setText(reportTitle);
shell.setLayout(new FillLayout());
shell.setMaximized(false);
shell.setSize(800, 600);
// Composite
Composite comp = new Composite(shell, SWT.NONE);
comp.setLayout(new FillLayout());
// Browser
final Browser browser = new Browser(comp, SWT.FLAT);
// Setting the file to browser
try {
File file = new File(exportFile);
URL url = file.toURL();
browser.setUrl("file:" + url.getPath());
} catch (MalformedURLException malURLEx) {
// malURLEx.printStackTrace();
throw new ProgrammingExceptionAdapter(malURLEx);
}
// Add a dispose listener to the shell
// and delete the temp file at dispose.
shell.addDisposeListener(new DisposeListener() {
public void widgetDisposed(DisposeEvent arg0) {
File file = new File(exportFile);
if (file != null && file.exists()) {
file.delete();
}
browser.dispose();
}
});
// Opening the file
shell.open();
shell.setFocus();
}