|
Re: How to monitor ViewPart close button event [message #899476 is a reply to message #899469] |
Wed, 01 August 2012 06:03 |
Timm Baumeister Messages: 14 Registered: July 2012 |
Junior Member |
|
|
I found the answer in a bug report.
IPartListener2 shows some strange behavior:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=54559
The suggested workaround is to use findViewReference in partDeactivated or partHidden. Unfortunately it isn't working either because it returns a non null value if used within these functions. It's necessary to wait a little before doing the call, i.e. package it in a runnable which waits for 200ms.
final id = /** ID of my view **/
IPartListener2 listener = new IPartListener2() {
@Override
public void partActivated(IWorkbenchPartReference partRef) {
}
@Override
public void partBroughtToTop(IWorkbenchPartReference partRef) {
}
@Override
public void partClosed(IWorkbenchPartReference partRef) {
}
@Override
public void partDeactivated(final IWorkbenchPartReference partRef) {
if (!id.equals(partRef.getId()))
return;
if (!(partRef.getPart(false) instanceof IViewPart))
return;
final IViewPart vp = (IViewPart)partRef.getPart(false);
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(200);
} catch (InterruptedException e) {
}
if (vp.getSite()!=null && vp.getSite().getPage()!=null) {
if (vp.getSite().getPage().findViewReference(partRef.getId())==null)
/****** MY VIEW REALLY GOT CLOSED! ******/;
}
}
});
}
@Override
public void partOpened(IWorkbenchPartReference partRef) {
}
@Override
public void partHidden(IWorkbenchPartReference partRef) {
}
@Override
public void partVisible(IWorkbenchPartReference partRef) {
}
@Override
public void partInputChanged(IWorkbenchPartReference partRef) {
}
};
page.addPartListener(listener);
[Updated on: Wed, 01 August 2012 12:14] Report message to a moderator
|
|
|
Powered by
FUDForum. Page generated in 0.03625 seconds