package jetbrains.mps.ide.make.actions;
/*Generated by MPS */
import com.intellij.openapi.project.Project;
import com.intellij.openapi.wm.StatusBar;
import jetbrains.mps.plugins.custom.BaseCustomProjectPlugin;
import com.intellij.openapi.wm.WindowManager;
import com.intellij.openapi.util.Disposer;
import jetbrains.mps.internal.collections.runtime.Sequence;
import com.intellij.openapi.project.ProjectManager;
import jetbrains.mps.internal.collections.runtime.ISelector;
public class TransientModelsNotification {
private final Project myProject;
private StatusBar myStatusBar;
private TransientModelsWidget myWidget;
public TransientModelsNotification(Project project) {
myProject = project;
}
public void projectOpened() {
BaseCustomProjectPlugin.HACK_PROJECT_COMPONENT_STATE.set(myProject, this);
myStatusBar = WindowManager.getInstance().getStatusBar(myProject);
myWidget = new TransientModelsWidget(myStatusBar);
myStatusBar.addWidget(myWidget);
myWidget.update();
TransientModelBallonDisplayer displayer = new TransientModelBallonDisplayer(myProject, myWidget);
Disposer.register(myWidget, displayer);
displayer.init();
}
public void projectClosed() {
BaseCustomProjectPlugin.HACK_PROJECT_COMPONENT_STATE.set(myProject, null);
myStatusBar.removeWidget(myWidget.ID());
Disposer.dispose(myWidget);
}
public static void updateWidgets() {
for (TransientModelsWidget widget : Sequence.fromIterable(Sequence.fromArray(ProjectManager.getInstance().getOpenProjects())).select(new ISelector<Project, TransientModelsWidget>() {
public TransientModelsWidget select(Project it) {
return ((TransientModelsNotification) BaseCustomProjectPlugin.HACK_PROJECT_COMPONENT_STATE.get(it)).myWidget;
}
})) {
widget.update();
}
}
}