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();
}
}
}
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);
}
}
Aggregations