package zielu.gittoolbox;
import com.intellij.openapi.components.AbstractProjectComponent;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;
import zielu.gittoolbox.cache.PerRepoInfoCache;
import zielu.gittoolbox.ui.projectView.ProjectViewManager;
import zielu.gittoolbox.ui.statusBar.StatusBarManager;
import zielu.gittoolbox.util.ProjectAwares;
public class GitToolBoxProject extends AbstractProjectComponent {
private final Logger LOG = Logger.getInstance(getClass());
private PerRepoInfoCache perRepoInfoCache;
private StatusBarManager myStatusBarManager;
private ProjectViewManager myProjectViewManager;
private ProjectAwares myAwares;
public GitToolBoxProject(@NotNull Project project) {
super(project);
}
public static GitToolBoxProject getInstance(@NotNull Project project) {
return project.getComponent(GitToolBoxProject.class);
}
@Override
public void initComponent() {
perRepoInfoCache = PerRepoInfoCache.create(myProject);
myStatusBarManager = StatusBarManager.create(myProject);
myProjectViewManager = ProjectViewManager.create(myProject);
myAwares = ProjectAwares.create(
perRepoInfoCache,
myStatusBarManager,
myProjectViewManager
);
}
@Override
public void disposeComponent() {
perRepoInfoCache.dispose();
myStatusBarManager.dispose();
myProjectViewManager.dispose();
myAwares.dispose();
}
public PerRepoInfoCache perRepoStatusCache() {
return perRepoInfoCache;
}
@Override
public void projectOpened() {
myAwares.opened();
LOG.debug("Project opened");
}
@Override
public void projectClosed() {
myAwares.closed();
LOG.debug("Project closed");
}
}