Я знаю, что на этот вопрос уже давно дан ответ, но я хочу обновить его рабочим фрагментом кода, на случай, если кому-нибудь понадобится. Я проверил это на Затмении Луны, Индиго и Кеплера.
public void resourceChanged(final IResourceChangeEvent event) {
if (event == null || event.getDelta() == null) {
return;
}
try {
event.getDelta().accept(new IResourceDeltaVisitor() {
public boolean visit(final IResourceDelta delta) throws CoreException {
IResource resource = delta.getResource();
if (((resource.getType() & IResource.PROJECT) != 0)
&& resource.getProject().isOpen()
&& delta.getKind() == IResourceDelta.CHANGED
&& ((delta.getFlags() & IResourceDelta.OPEN) != 0)) {
IProject project = (IProject)resource;
projectOpened(project);
}
return true;
}
});
} catch (CoreException e) {
e.printStackTrace();
}
}