From 212043cc4333b0f247c96fa2695135c88e96415c Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Fri, 5 Feb 2010 20:40:11 +0300 Subject: [PATCH] customizations weren't applied to project view context menu (RUBY-5713) --- .../ide/favoritesTreeView/FavoritesTreeViewPanel.java | 8 ++++++-- .../projectView/impl/AbstractProjectViewPSIPane.java | 9 ++++----- .../newStructureView/StructureViewComponent.java | 9 ++++++--- .../ide/ui/customization/CustomizationUtil.java | 18 ++++++++++++++++++ 4 files changed, 34 insertions(+), 10 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/FavoritesTreeViewPanel.java b/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/FavoritesTreeViewPanel.java index 846cc7cd24..3e0914bbaa 100644 --- a/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/FavoritesTreeViewPanel.java +++ b/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/FavoritesTreeViewPanel.java @@ -27,6 +27,7 @@ import com.intellij.ide.projectView.impl.ModuleGroup; import com.intellij.ide.projectView.impl.nodes.LibraryGroupElement; import com.intellij.ide.projectView.impl.nodes.NamedLibraryElement; import com.intellij.ide.ui.customization.CustomActionsSchema; +import com.intellij.ide.ui.customization.CustomizationUtil; import com.intellij.ide.util.DeleteHandler; import com.intellij.ide.util.DirectoryChooserUtil; import com.intellij.ide.util.EditorHelper; @@ -47,7 +48,10 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.wm.ToolWindowManager; import com.intellij.pom.Navigatable; import com.intellij.psi.*; -import com.intellij.ui.*; +import com.intellij.ui.ScrollPaneFactory; +import com.intellij.ui.SimpleTextAttributes; +import com.intellij.ui.TreeSpeedSearch; +import com.intellij.ui.TreeToolTipHandler; import com.intellij.util.ArrayUtil; import com.intellij.util.EditSourceOnDoubleClickHandler; import com.intellij.util.EditSourceOnEnterKeyHandler; @@ -143,7 +147,7 @@ public class FavoritesTreeViewPanel extends JPanel implements DataProvider { } }); JScrollPane scrollPane = ScrollPaneFactory.createScrollPane(myTree); - myTreePopupHandler = PopupHandler.installPopupHandler(myTree, (ActionGroup)CustomActionsSchema.getInstance().getCorrectedAction(IdeActions.GROUP_FAVORITES_VIEW_POPUP), ActionPlaces.FAVORITES_VIEW_POPUP, ActionManager.getInstance()); + myTreePopupHandler = CustomizationUtil.installPopupHandler(myTree, IdeActions.GROUP_FAVORITES_VIEW_POPUP, ActionPlaces.FAVORITES_VIEW_POPUP); add(scrollPane, BorderLayout.CENTER); //add(createActionsToolbar(), BorderLayout.NORTH); diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/impl/AbstractProjectViewPSIPane.java b/platform/lang-impl/src/com/intellij/ide/projectView/impl/AbstractProjectViewPSIPane.java index 720abbbfa2..ba6eae1052 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/impl/AbstractProjectViewPSIPane.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/impl/AbstractProjectViewPSIPane.java @@ -23,16 +23,15 @@ import com.intellij.ide.DataManager; import com.intellij.ide.PsiCopyPasteManager; import com.intellij.ide.projectView.BaseProjectTreeBuilder; import com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode; +import com.intellij.ide.ui.customization.CustomActionsSchema; +import com.intellij.ide.ui.customization.CustomizationUtil; import com.intellij.ide.util.treeView.AbstractTreeBuilder; import com.intellij.ide.util.treeView.AbstractTreeUpdater; import com.intellij.ide.util.treeView.TreeBuilderUtil; -import com.intellij.openapi.actionSystem.ActionPlaces; -import com.intellij.openapi.actionSystem.DataContext; -import com.intellij.openapi.actionSystem.IdeActions; +import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.ActionCallback; import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.ui.PopupHandler; import com.intellij.ui.TreeSpeedSearch; import com.intellij.ui.TreeToolTipHandler; import com.intellij.util.EditSourceOnDoubleClickHandler; @@ -145,7 +144,7 @@ public abstract class AbstractProjectViewPSIPane extends AbstractProjectViewPane } } }); - PopupHandler.installPopupHandler(myTree, IdeActions.GROUP_PROJECT_VIEW_POPUP, ActionPlaces.PROJECT_VIEW_POPUP); + CustomizationUtil.installPopupHandler(myTree, IdeActions.GROUP_PROJECT_VIEW_POPUP, ActionPlaces.PROJECT_VIEW_POPUP); } public final ActionCallback updateFromRoot(boolean restoreExpandedPaths) { diff --git a/platform/lang-impl/src/com/intellij/ide/structureView/newStructureView/StructureViewComponent.java b/platform/lang-impl/src/com/intellij/ide/structureView/newStructureView/StructureViewComponent.java index b524239f19..f0c2a8b09c 100644 --- a/platform/lang-impl/src/com/intellij/ide/structureView/newStructureView/StructureViewComponent.java +++ b/platform/lang-impl/src/com/intellij/ide/structureView/newStructureView/StructureViewComponent.java @@ -25,6 +25,7 @@ import com.intellij.ide.structureView.impl.StructureViewFactoryImpl; import com.intellij.ide.structureView.impl.StructureViewState; import com.intellij.ide.structureView.impl.common.PsiTreeElementBase; import com.intellij.ide.ui.customization.CustomActionsSchema; +import com.intellij.ide.ui.customization.CustomizationUtil; import com.intellij.ide.util.treeView.*; import com.intellij.ide.util.treeView.smartTree.*; import com.intellij.ide.util.treeView.smartTree.TreeModel; @@ -44,7 +45,10 @@ import com.intellij.pom.Navigatable; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiElement; import com.intellij.psi.impl.source.tree.CompositeElement; -import com.intellij.ui.*; +import com.intellij.ui.AutoScrollFromSourceHandler; +import com.intellij.ui.AutoScrollToSourceHandler; +import com.intellij.ui.TreeSpeedSearch; +import com.intellij.ui.TreeToolTipHandler; import com.intellij.ui.treeStructure.Tree; import com.intellij.util.Alarm; import com.intellij.util.ArrayUtil; @@ -247,8 +251,7 @@ public class StructureViewComponent extends SimpleToolWindowPanel implements Tre private void addTreeMouseListeners() { EditSourceOnDoubleClickHandler.install(getTree()); - ActionGroup group = (ActionGroup)CustomActionsSchema.getInstance().getCorrectedAction(IdeActions.GROUP_STRUCTURE_VIEW_POPUP); - PopupHandler.installPopupHandler(getTree(), group, ActionPlaces.STRUCTURE_VIEW_POPUP, ActionManager.getInstance()); + CustomizationUtil.installPopupHandler(getTree(), IdeActions.GROUP_STRUCTURE_VIEW_POPUP, ActionPlaces.STRUCTURE_VIEW_POPUP); } private void addTreeKeyListener() { diff --git a/platform/platform-impl/src/com/intellij/ide/ui/customization/CustomizationUtil.java b/platform/platform-impl/src/com/intellij/ide/ui/customization/CustomizationUtil.java index 7312285f9f..789456c390 100644 --- a/platform/platform-impl/src/com/intellij/ide/ui/customization/CustomizationUtil.java +++ b/platform/platform-impl/src/com/intellij/ide/ui/customization/CustomizationUtil.java @@ -16,10 +16,13 @@ package com.intellij.ide.ui.customization; import com.intellij.openapi.actionSystem.*; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.keymap.impl.ui.Group; import com.intellij.openapi.util.Pair; +import com.intellij.ui.PopupHandler; import com.intellij.util.diff.Diff; import com.intellij.util.ui.tree.TreeUtil; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; @@ -27,6 +30,9 @@ import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; +import java.awt.*; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseListener; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; @@ -282,4 +288,16 @@ public class CustomizationUtil { return result.toArray(new ActionUrl[result.size()]); } + public static MouseListener installPopupHandler(JComponent component, @NotNull final String groupId, final String place) { + if (ApplicationManager.getApplication() == null) return new MouseAdapter(){}; + PopupHandler popupHandler = new PopupHandler() { + public void invokePopup(Component comp, int x, int y) { + ActionGroup group = (ActionGroup)CustomActionsSchema.getInstance().getCorrectedAction(groupId); + final ActionPopupMenu popupMenu = ActionManager.getInstance().createActionPopupMenu(place, group); + popupMenu.getComponent().show(comp, x, y); + } + }; + component.addMouseListener(popupHandler); + return popupHandler; + } } -- 2.11.4.GIT