diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenModificationTracker.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenModificationTracker.java new file mode 100644 index 000000000000..7047e9eeb929 --- /dev/null +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenModificationTracker.java @@ -0,0 +1,79 @@ +/* + * Copyright 2000-2010 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jetbrains.idea.maven.project; + +import com.intellij.openapi.util.ModificationTracker; +import com.intellij.openapi.util.Pair; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.idea.maven.facade.NativeMavenProjectHolder; + +import java.util.List; + +/** + * @author Konstantin Bulenkov + */ +public class MavenModificationTracker implements ModificationTracker, MavenProjectsTree.Listener { + private long myCounter = 0; + public MavenModificationTracker(MavenProjectsManager manager) { + manager.addProjectsTreeListener(this); + } + + private void inc() { + myCounter++; + } + + @Override + public long getModificationCount() { + return myCounter; + } + + @Override + public void profilesChanged() { + inc(); + } + + @Override + public void projectsIgnoredStateChanged(List ignored, List unignored, Object message) { + inc(); + } + + @Override + public void projectsUpdated(List> updated, List deleted, Object message) { + inc(); + } + + @Override + public void projectResolved(Pair projectWithChanges, + @Nullable NativeMavenProjectHolder nativeMavenProject, + Object message) { + inc(); + } + + @Override + public void pluginsResolved(MavenProject project) { + inc(); + } + + @Override + public void foldersResolved(Pair projectWithChanges, Object message) { + inc(); + } + + @Override + public void artifactsDownloaded(MavenProject project) { + inc(); + } +} diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java index 89f7e2758537..1a50739f30e6 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java @@ -96,6 +96,7 @@ public class MavenProjectsManager extends SimpleProjectComponent private final EventDispatcher myProjectsTreeDispatcher = EventDispatcher.create(MavenProjectsTree.Listener.class); private final List myManagerListeners = ContainerUtil.createEmptyCOWList(); + private ModificationTracker myModificationTracker; public static MavenProjectsManager getInstance(Project p) { return p.getComponent(MavenProjectsManager.class); @@ -104,6 +105,7 @@ public class MavenProjectsManager extends SimpleProjectComponent public MavenProjectsManager(Project project) { super(project); myEmbeddersManager = new MavenEmbeddersManager(myProject); + myModificationTracker = new MavenModificationTracker(this); } public MavenProjectsManagerState getState() { @@ -121,6 +123,10 @@ public class MavenProjectsManager extends SimpleProjectComponent } } + public ModificationTracker getModificationTracker() { + return myModificationTracker; + } + public MavenGeneralSettings getGeneralSettings() { return getWorkspaceSettings().generalSettings; }