Index: model/org/eclipse/jdt/internal/core/DeltaProcessor.java =================================================================== RCS file: /data/cvs/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/DeltaProcessor.java,v retrieving revision 1.241 diff -u -r1.241 DeltaProcessor.java --- model/org/eclipse/jdt/internal/core/DeltaProcessor.java 28 May 2004 15:32:55 -0000 1.241 +++ model/org/eclipse/jdt/internal/core/DeltaProcessor.java 4 Jun 2004 08:31:58 -0000 @@ -2307,14 +2307,23 @@ } if (res.isOpen()) { if (JavaProject.hasJavaNature(res)) { - elementAdded(element, delta, rootInfo); + addToParentInfo(element); + currentDelta().opened(element); + this.state.updateRoots(element.getPath(), delta, this); + + // refresh pkg fragment roots and caches of the project (and its dependents) + this.rootsToRefresh.add(element); + this.projectCachesToReset.add(element); + this.manager.indexManager.indexAll(res); } } else { JavaModel javaModel = this.manager.getJavaModel(); boolean wasJavaProject = javaModel.findJavaProject(res) != null; if (wasJavaProject) { - elementRemoved(element, delta, rootInfo); + close(element); + removeFromParentInfo(element); + currentDelta().closed(element); this.manager.indexManager.discardJobs(element.getElementName()); this.manager.indexManager.removeIndexFamily(res.getFullPath()); } Index: model/org/eclipse/jdt/internal/core/JavaElementDelta.java =================================================================== RCS file: /data/cvs/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaElementDelta.java,v retrieving revision 1.43 diff -u -r1.43 JavaElementDelta.java --- model/org/eclipse/jdt/internal/core/JavaElementDelta.java 27 May 2004 14:41:39 -0000 1.43 +++ model/org/eclipse/jdt/internal/core/JavaElementDelta.java 4 Jun 2004 08:31:58 -0000 @@ -675,6 +675,18 @@ buffer.append("PRIMARY RESOURCE"); //$NON-NLS-1$ prev = true; } + if ((flags & IJavaElementDelta.F_OPENED) != 0) { + if (prev) + buffer.append(" | "); //$NON-NLS-1$ + buffer.append("OPENED"); //$NON-NLS-1$ + prev = true; + } + if ((flags & IJavaElementDelta.F_CLOSED) != 0) { + if (prev) + buffer.append(" | "); //$NON-NLS-1$ + buffer.append("CLOSED"); //$NON-NLS-1$ + prev = true; + } return prev; } /** Index: model/org/eclipse/jdt/internal/core/hierarchy/TypeHierarchy.java =================================================================== RCS file: /data/cvs/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/TypeHierarchy.java,v retrieving revision 1.83 diff -u -r1.83 TypeHierarchy.java --- model/org/eclipse/jdt/internal/core/hierarchy/TypeHierarchy.java 27 May 2004 14:41:39 -0000 1.83 +++ model/org/eclipse/jdt/internal/core/hierarchy/TypeHierarchy.java 4 Jun 2004 08:31:58 -0000 @@ -860,7 +860,15 @@ * Returns true if the given java project delta could affect this type hierarchy */ private boolean isAffectedByJavaProject(IJavaElementDelta delta, IJavaElement element) { - switch (delta.getKind()) { + int kind = delta.getKind(); + int flags = delta.getFlags(); + if ((flags & IJavaElementDelta.F_OPENED) != 0) { + kind = IJavaElementDelta.ADDED; // affected in the same way + } + if ((flags & IJavaElementDelta.F_CLOSED) != 0) { + kind = IJavaElementDelta.REMOVED; // affected in the same way + } + switch (kind) { case IJavaElementDelta.ADDED : try { // if the added project is on the classpath, then the hierarchy has changed