package jetbrains.mps.ide.java.platform.highlighters;
/*Generated by MPS */
import com.intellij.openapi.components.ProjectComponent;
import jetbrains.mps.project.MPSProject;
import java.util.Deque;
import jetbrains.mps.nodeEditor.checking.EditorChecker;
import jetbrains.mps.internal.collections.runtime.DequeSequence;
import java.util.LinkedList;
import jetbrains.mps.ide.MPSCoreComponents;
import jetbrains.mps.nodeEditor.Highlighter;
import jetbrains.mps.ide.java.platform.highlighters.methodcallsfixer.MethodCallsFixer;
import jetbrains.mps.nodeEditor.checking.DisposableEditorChecker;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
public class JavaHighlighters implements ProjectComponent {
private MPSProject myProject;
private Deque<EditorChecker> myCheckers = DequeSequence.fromDequeNew(new LinkedList<EditorChecker>());
public JavaHighlighters(MPSProject project, MPSCoreComponents coreComponents) {
myProject = project;
}
@Override
public void projectOpened() {
}
@Override
public void projectClosed() {
}
@Override
public void initComponent() {
Highlighter highlighter = getHighlighter();
highlighter.addChecker(DequeSequence.fromDequeNew(myCheckers).pushElement(new OverrideMethodsChecker(myProject)));
highlighter.addChecker(DequeSequence.fromDequeNew(myCheckers).pushElement(new ToDoHighlighter()));
highlighter.addChecker(DequeSequence.fromDequeNew(myCheckers).pushElement(new MethodCallsFixer(myProject.getRepository())));
}
@Override
public void disposeComponent() {
Highlighter highlighter = getHighlighter();
while (DequeSequence.fromDequeNew(myCheckers).isNotEmpty()) {
EditorChecker checker = DequeSequence.fromDequeNew(myCheckers).popElement();
highlighter.removeChecker(checker);
if (checker instanceof DisposableEditorChecker) {
((DisposableEditorChecker) checker).dispose();
}
}
myProject = null;
}
@NonNls
@NotNull
@Override
public String getComponentName() {
return "JavaHighlighters";
}
private Highlighter getHighlighter() {
return myProject.getComponent(Highlighter.class);
}
}