maven modification tracker

This commit is contained in:
Konstantin Bulenkov
2010-08-30 15:18:09 +04:00
parent e0d91553f2
commit 41b7a56d77
2 changed files with 85 additions and 0 deletions
@@ -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<MavenProject> ignored, List<MavenProject> unignored, Object message) {
inc();
}
@Override
public void projectsUpdated(List<Pair<MavenProject, MavenProjectChanges>> updated, List<MavenProject> deleted, Object message) {
inc();
}
@Override
public void projectResolved(Pair<MavenProject, MavenProjectChanges> projectWithChanges,
@Nullable NativeMavenProjectHolder nativeMavenProject,
Object message) {
inc();
}
@Override
public void pluginsResolved(MavenProject project) {
inc();
}
@Override
public void foldersResolved(Pair<MavenProject, MavenProjectChanges> projectWithChanges, Object message) {
inc();
}
@Override
public void artifactsDownloaded(MavenProject project) {
inc();
}
}
@@ -96,6 +96,7 @@ public class MavenProjectsManager extends SimpleProjectComponent
private final EventDispatcher<MavenProjectsTree.Listener> myProjectsTreeDispatcher =
EventDispatcher.create(MavenProjectsTree.Listener.class);
private final List<Listener> 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;
}