只需要给workbench添加一个Listener,此逻辑可以添加到ApplicationWorkbenchWindowAdvisor ::postWindowCreate(),
final IWorkbench workbench = PlatformUI.getWorkbench();
final IWorkbenchPage activePage = workbench.getActiveWorkbenchWindow().getActivePage();
workbench.addWorkbenchListener(new IWorkbenchListener() {
@Override
public boolean preShutdown(IWorkbench workbench, boolean forced) {
activePage.closeEditors(activePage.getEditorReferences(), true);
// Tips: View cannot be closed (disposed), because a view can be used in multiple perspective.
// When a view is hide in all perspective, this view will be disposed automatically.
for (IViewReference viewReference : activePage.getViewReferences()) {
activePage.hideView(viewReference);
}
return true;
}
@Override
public void postShutdown(IWorkbench workbench) {
// Do nothing.
}
});