From 6429469c1bb576f4af5d9bd6473e0e3a71b7c7d5 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Wed, 10 Jun 2020 18:00:44 +0200 Subject: [PATCH] Use message bus instead of PropertyChangeSupport for active lookup change notifications GitOrigin-RevId: 650343c69ac523dbe1b7d7ec716c1b84d7f1f7e4 --- .../intellij/codeInsight/lookup/LookupManager.java | 12 ++++++++++++ .../codeInsight/lookup/LookupManagerListener.java | 11 +++++++++++ .../codeInsight/lookup/impl/LookupManagerImpl.java | 9 +++++++-- 3 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupManagerListener.java diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupManager.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupManager.java index 5ca489c4a68f..2f8eba89588c 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupManager.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupManager.java @@ -61,8 +61,20 @@ public abstract class LookupManager { @NonNls public static final String PROP_ACTIVE_LOOKUP = "activeLookup"; + /** + * @deprecated Use {@link LookupManagerListener.TOPIC} + */ + @Deprecated public abstract void addPropertyChangeListener(@NotNull PropertyChangeListener listener); + /** + * @deprecated Use {@link LookupManagerListener.TOPIC} + */ + @Deprecated public abstract void addPropertyChangeListener(@NotNull PropertyChangeListener listener, @NotNull Disposable disposable); + /** + * @deprecated Use {@link LookupManagerListener.TOPIC} + */ + @Deprecated public abstract void removePropertyChangeListener(@NotNull PropertyChangeListener listener); @NotNull diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupManagerListener.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupManagerListener.java new file mode 100644 index 000000000000..72645aecfee5 --- /dev/null +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupManagerListener.java @@ -0,0 +1,11 @@ +// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +package com.intellij.codeInsight.lookup; + +import com.intellij.util.messages.Topic; +import org.jetbrains.annotations.Nullable; + +public interface LookupManagerListener { + void activeLookupChanged(@Nullable Lookup oldLookup, @Nullable Lookup newLookup); + + Topic TOPIC = Topic.create("lookup manager listener", LookupManagerListener.class); +} diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupManagerImpl.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupManagerImpl.java index 9bcc2d5ad082..297136fe1925 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupManagerImpl.java @@ -155,7 +155,7 @@ public class LookupManagerImpl extends LookupManager { public void dispose() { myActiveLookup = null; myActiveLookupEditor = null; - myPropertyChangeSupport.firePropertyChange(PROP_ACTIVE_LOOKUP, lookup, null); + fireActiveLookupChanged(lookup, null); } }); @@ -170,10 +170,15 @@ public class LookupManagerImpl extends LookupManager { alarm.cancelAllRequests(); // no items -> no doc } - myPropertyChangeSupport.firePropertyChange(PROP_ACTIVE_LOOKUP, null, myActiveLookup); + fireActiveLookupChanged(null, myActiveLookup); return lookup; } + void fireActiveLookupChanged(LookupImpl oldLookup, LookupImpl newLookup) { + myPropertyChangeSupport.firePropertyChange(PROP_ACTIVE_LOOKUP, oldLookup, newLookup); + myProject.getMessageBus().syncPublisher(LookupManagerListener.TOPIC).activeLookupChanged(oldLookup, newLookup); + } + private void showJavadoc(LookupImpl lookup) { if (myActiveLookup != lookup) return;