Search in sources :

Example 16 with Facet

use of com.intellij.facet.Facet in project intellij-community by JetBrains.

the class FacetPointersManagerImpl method refreshPointers.

private void refreshPointers(@NotNull final Module module) {
    //todo[nik] refresh only pointers related to renamed module/facet?
    List<Pair<FacetPointerImpl, String>> changed = new ArrayList<>();
    for (FacetPointerImpl pointer : myPointers.values()) {
        final String oldId = pointer.getId();
        pointer.refresh();
        if (!oldId.equals(pointer.getId())) {
            changed.add(Pair.create(pointer, oldId));
        }
    }
    for (Pair<FacetPointerImpl, String> pair : changed) {
        FacetPointerImpl pointer = pair.getFirst();
        final Facet facet = pointer.getFacet();
        Class facetClass = facet != null ? facet.getClass() : Facet.class;
        while (facetClass != Object.class) {
            final EventDispatcher<FacetPointerListener> dispatcher = myDispatchers.get(facetClass);
            if (dispatcher != null) {
                //noinspection unchecked
                dispatcher.getMulticaster().pointerIdChanged(pointer, pair.getSecond());
            }
            facetClass = facetClass.getSuperclass();
        }
    }
}
Also used : ArrayList(java.util.ArrayList) FacetPointerListener(com.intellij.facet.pointers.FacetPointerListener) Pair(com.intellij.openapi.util.Pair) Facet(com.intellij.facet.Facet)

Example 17 with Facet

use of com.intellij.facet.Facet in project intellij-community by JetBrains.

the class FacetPointersManagerImpl method initComponent.

@Override
public void initComponent() {
    MessageBusConnection connection = myProject.getMessageBus().connect();
    connection.subscribe(ProjectTopics.MODULES, new ModuleListener() {

        @Override
        public void moduleAdded(@NotNull Project project, @NotNull Module module) {
            refreshPointers(module);
        }

        @Override
        public void modulesRenamed(@NotNull Project project, @NotNull List<Module> modules, @NotNull Function<Module, String> oldNameProvider) {
            for (Module module : modules) {
                refreshPointers(module);
            }
        }
    });
    connection.subscribe(FacetManager.FACETS_TOPIC, new FacetManagerAdapter() {

        @Override
        public void facetAdded(@NotNull Facet facet) {
            refreshPointers(facet.getModule());
        }

        @Override
        public void beforeFacetRenamed(@NotNull Facet facet) {
            final FacetPointerImpl pointer = myPointers.get(constructId(facet));
            if (pointer != null) {
                pointer.refresh();
            }
        }

        @Override
        public void facetRenamed(@NotNull final Facet facet, @NotNull final String oldName) {
            refreshPointers(facet.getModule());
        }
    });
    for (Module module : ModuleManager.getInstance(myProject).getModules()) {
        refreshPointers(module);
    }
}
Also used : Project(com.intellij.openapi.project.Project) MessageBusConnection(com.intellij.util.messages.MessageBusConnection) ModuleListener(com.intellij.openapi.project.ModuleListener) Module(com.intellij.openapi.module.Module) FacetManagerAdapter(com.intellij.facet.FacetManagerAdapter) Facet(com.intellij.facet.Facet)

Aggregations

Facet (com.intellij.facet.Facet)17 Module (com.intellij.openapi.module.Module)8 Project (com.intellij.openapi.project.Project)4 ArrayList (java.util.ArrayList)4 NotNull (org.jetbrains.annotations.NotNull)4 FacetManagerAdapter (com.intellij.facet.FacetManagerAdapter)3 ProjectFacetsConfigurator (com.intellij.facet.impl.ProjectFacetsConfigurator)3 MessageBusConnection (com.intellij.util.messages.MessageBusConnection)3 Nullable (org.jetbrains.annotations.Nullable)3 FacetTypeId (com.intellij.facet.FacetTypeId)2 MultiValuesMap (com.intellij.openapi.util.MultiValuesMap)2 Pair (com.intellij.openapi.util.Pair)2 PythonFacetSettings (com.jetbrains.python.facet.PythonFacetSettings)2 FacetConfiguration (com.intellij.facet.FacetConfiguration)1 ModifiableFacetModel (com.intellij.facet.ModifiableFacetModel)1 FacetPointerListener (com.intellij.facet.pointers.FacetPointerListener)1 FacetEditor (com.intellij.facet.ui.FacetEditor)1 CompilerManager (com.intellij.openapi.compiler.CompilerManager)1 ModuleType (com.intellij.openapi.module.ModuleType)1 ModuleListener (com.intellij.openapi.project.ModuleListener)1