Author: scabanovich
Date: 2010-09-06 10:34:02 -0400 (Mon, 06 Sep 2010)
New Revision: 24736
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/FileSystemsImpl.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/FileSystemsLoader.java
Log:
https://jira.jboss.org/browse/JBIDE-3875
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/FileSystemsImpl.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/FileSystemsImpl.java 2010-09-06
13:39:19 UTC (rev 24735)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/FileSystemsImpl.java 2010-09-06
14:34:02 UTC (rev 24736)
@@ -202,15 +202,35 @@
public void resourceChanged(IResourceChangeEvent event) {
if(!isActive() || event == null || event.getDelta() == null) return;
if(!checkDelta(event.getDelta())) return;
+ IFile f = findFile(event.getDelta());
+ if(f != null && f.getName().equals(".classpath")) { //$NON-NLS-1$
+ new FileSystemsLoader().updateClassPath(this);
+ return;
+ }
fileSystemsRenameListener.checkFileSystemRename(event);
requireUpdate();
}
+
+ IFile findFile(IResourceDelta delta) {
+ IResource r = delta.getResource();
+ if(r instanceof IFile) return (IFile)r;
+ IResourceDelta[] ds = delta.getAffectedChildren();
+ for (IResourceDelta d: ds) {
+ IFile f = findFile(d);
+ if(f != null) return f;
+ }
+ return null;
+ }
+
+ private void onUpdateClassPath() {
+
+ }
UpdateRunnable currentUpdate = null;
void requireUpdate() {
- if(lock == 0) {
+ if(lock == 0 && currentUpdate == null) {
// synchronized (this) {
currentUpdate = new UpdateRunnable();
// }
@@ -271,6 +291,10 @@
ModelPlugin.getWorkspace().removeResourceChangeListener(FileSystemsImpl.this);
} else {
doUpdate();
+ if(request != 0) {
+ request = 0;
+ doUpdate();
+ }
}
if(this == currentUpdate) currentUpdate = null;
}
@@ -373,4 +397,3 @@
}
}
-
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/FileSystemsLoader.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/FileSystemsLoader.java 2010-09-06
13:39:19 UTC (rev 24735)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/filesystems/impl/FileSystemsLoader.java 2010-09-06
14:34:02 UTC (rev 24736)
@@ -66,11 +66,15 @@
XObjectLoader loader = XModelObjectLoaderUtil.getObjectLoader(cs[i]);
if(loader != null) b &= loader.update(cs[i]);
}
+ updateClassPath(object);
+ ((FileSystemsImpl)object).updateOverlapped();
+ return b;
+ }
+
+ public void updateClassPath(XModelObject object) {
updateLibs(object);
removeMissingJarSystems(object);
updateSrcs(object);
- ((FileSystemsImpl)object).updateOverlapped();
- return b;
}
public void load(XModelObject object) {