package net.bitpot.railways; import com.intellij.ProjectTopics; import com.intellij.openapi.components.ProjectComponent; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.ModuleAdapter; import com.intellij.openapi.project.Project; import net.bitpot.railways.routesView.RoutesView; import org.jetbrains.annotations.NotNull; /** * Plugin project component. Contains minimal functionality just to provide * required initialization to Railways. */ public class RailwaysProjectComp implements ProjectComponent { @SuppressWarnings("unused") private final static Logger log = Logger.getInstance(RailwaysProjectComp.class.getName()); private Project myProject; public RailwaysProjectComp(Project project) { myProject = project; } public void initComponent() { /* Do nothing now */ } public void disposeComponent() { /* Do nothing now */ } @NotNull public String getComponentName() { return "Railways.ProjectComponent"; } public void projectOpened() { myProject.getMessageBus().connect() .subscribe(ProjectTopics.MODULES, new ProjectModulesListener()); } public void projectClosed() { // called when project is being closed } private class ProjectModulesListener extends ModuleAdapter { @Override public void moduleAdded(Project project, Module module) { if (project != myProject) return; // Notify RoutesView RoutesView routesView = RoutesView.getInstance(project); routesView.addModulePane(module); } @Override public void moduleRemoved(Project project, Module module) { if (project != myProject) return; // Notify RoutesView RoutesView routesView = RoutesView.getInstance(project); routesView.removeModulePane(module); } } }