diff options
Diffstat (limited to 'platform/lang-impl/src/com/intellij/ui/JBTreeWithHintProvider.java')
-rw-r--r-- | platform/lang-impl/src/com/intellij/ui/JBTreeWithHintProvider.java | 64 |
1 files changed, 19 insertions, 45 deletions
diff --git a/platform/lang-impl/src/com/intellij/ui/JBTreeWithHintProvider.java b/platform/lang-impl/src/com/intellij/ui/JBTreeWithHintProvider.java index c22eeb16127f..023ed3998829 100644 --- a/platform/lang-impl/src/com/intellij/ui/JBTreeWithHintProvider.java +++ b/platform/lang-impl/src/com/intellij/ui/JBTreeWithHintProvider.java @@ -18,84 +18,58 @@ package com.intellij.ui; import com.intellij.ide.DataManager; import com.intellij.ide.dnd.aware.DnDAwareTree; import com.intellij.openapi.actionSystem.CommonDataKeys; -import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.ui.popup.JBPopup; import com.intellij.psi.PsiElement; -import com.intellij.ui.popup.PopupUpdateProcessor; +import com.intellij.ui.popup.HintUpdateSupply; +import com.intellij.util.ObjectUtils; import org.jetbrains.annotations.Nullable; -import javax.swing.event.TreeSelectionEvent; -import javax.swing.event.TreeSelectionListener; import javax.swing.tree.TreeModel; import javax.swing.tree.TreeNode; -import javax.swing.tree.TreePath; /** * @author Konstantin Bulenkov + * @deprecated + * @see com.intellij.ui.popup.HintUpdateSupply */ public class JBTreeWithHintProvider extends DnDAwareTree { - private JBPopup myHint; + { + new HintUpdateSupply(this) { + @Override + protected PsiElement getPsiElementForHint(Object selectedValue) { + return JBTreeWithHintProvider.this.getPsiElementForHint(selectedValue); + } + }; + } public JBTreeWithHintProvider() { - addSelectionListener(); } public JBTreeWithHintProvider(TreeModel treemodel) { super(treemodel); - addSelectionListener(); } public JBTreeWithHintProvider(TreeNode root) { super(root); - addSelectionListener(); - } - - private void addSelectionListener() { - addTreeSelectionListener(new TreeSelectionListener() { - @Override - public void valueChanged(final TreeSelectionEvent e) { - if (isHintBeingShown() && getClientProperty(ListUtil.SELECTED_BY_MOUSE_EVENT) != Boolean.TRUE) { - final TreePath path = getSelectionPath(); - if (path != null) { - final PsiElement psiElement = getPsiElementForHint(path.getLastPathComponent()); - if (psiElement != null && psiElement.isValid()) { - updateHint(psiElement); - } - } - } - } - }); } @Nullable protected PsiElement getPsiElementForHint(final Object selectedValue) { - // default implementation return CommonDataKeys.PSI_ELEMENT.getData(DataManager.getInstance().getDataContext(this)); } - public void registerHint(final JBPopup hint) { - hideHint(); - myHint = hint; + @Deprecated + public void registerHint(JBPopup hint) { + ObjectUtils.assertNotNull(HintUpdateSupply.getSupply(this)).registerHint(hint); } + @Deprecated public void hideHint() { - if (isHintBeingShown()) { - myHint.cancel(); - } - - myHint = null; + ObjectUtils.assertNotNull(HintUpdateSupply.getSupply(this)).hideHint(); } + @Deprecated public void updateHint(PsiElement element) { - if (!isHintBeingShown()) return; - - final PopupUpdateProcessor updateProcessor = myHint.getUserData(PopupUpdateProcessor.class); - if (updateProcessor != null) { - updateProcessor.updatePopup(element); - } - } - - private boolean isHintBeingShown() { - return myHint != null && myHint.isVisible(); + ObjectUtils.assertNotNull(HintUpdateSupply.getSupply(this)).updateHint(element); } } |