package org.plantuml.idea.toolwindow;
import com.intellij.openapi.components.ApplicationComponent;
import com.intellij.openapi.editor.EditorFactory;
import com.intellij.openapi.editor.event.CaretListener;
import com.intellij.openapi.editor.event.DocumentListener;
import com.intellij.openapi.editor.event.EditorEventMulticaster;
import net.sourceforge.plantuml.cucadiagram.dot.GraphvizUtils;
import org.jetbrains.annotations.NotNull;
import org.plantuml.idea.InstallationError;
import org.plantuml.idea.toolwindow.listener.PlantUmlCaretListener;
import org.plantuml.idea.toolwindow.listener.PlantUmlDocumentListener;
public class PlantUmlApplicationComponent implements ApplicationComponent {
private DocumentListener plantUmlDocumentListener = new PlantUmlDocumentListener();
private CaretListener plantUmlCaretListener = new PlantUmlCaretListener();
public PlantUmlApplicationComponent() {
PlantUmlApplicationComponent.class.getClassLoader().setDefaultAssertionStatus(false);
try {
Class<GraphvizUtils> graphvizUtilsClass = GraphvizUtils.class;
} catch (NoClassDefFoundError e) {
throw new InstallationError("Reinstall the plugin. Make sure to install 'plantuml4idea.zip', not the extracted 'plantuml4idea.jar'.", e);
}
}
@Override
public void initComponent() {
EditorEventMulticaster eventMulticaster = EditorFactory.getInstance().getEventMulticaster();
eventMulticaster.addDocumentListener(plantUmlDocumentListener);
eventMulticaster.addCaretListener(plantUmlCaretListener);
}
@Override
public void disposeComponent() {
EditorEventMulticaster eventMulticaster = EditorFactory.getInstance().getEventMulticaster();
eventMulticaster.removeDocumentListener(plantUmlDocumentListener);
eventMulticaster.removeCaretListener(plantUmlCaretListener);
}
@Override
@NotNull
public String getComponentName() {
return "PlantUmlApplicationComponent";
}
}