diff --git a/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleImpl.java b/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleImpl.java index 5bf76d099df1..fe857e9a6a8a 100644 --- a/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleImpl.java @@ -224,7 +224,7 @@ public class LanguageConsoleImpl implements Disposable, TypeSafeDataProvider { private void setupComponents() { setupEditorDefault(myConsoleEditor); setupEditorDefault(myHistoryViewer); - myConsoleEditor.addEditorMouseListener(EditorActionUtil.createEditorPopupHandler(IdeActions.GROUP_CUT_COPY_PASTE)); + myConsoleEditor.addEditorMouseListener(EditorActionUtil.createEditorPopupHandler(IdeActions.GROUP_CONSOLE_EDITOR_POPUP)); //noinspection PointlessBooleanExpression,ConstantConditions if (SEPARATOR_THICKNESS > 0 && myShowSeparatorLine) { myHistoryViewer.getComponent().setBorder(new SideBorder(Color.LIGHT_GRAY, SideBorder.BOTTOM)); diff --git a/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java b/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java index 569839a1c888..c36ff12d1eb8 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java @@ -894,7 +894,7 @@ public class ConsoleViewImpl extends JPanel implements ConsoleView, ObservableCo if (group == null) { group = (ActionGroup)actionManager.getAction(CONSOLE_VIEW_POPUP_MENU); } - final ActionPopupMenu menu = actionManager.createActionPopupMenu(ActionPlaces.UNKNOWN, group); + final ActionPopupMenu menu = actionManager.createActionPopupMenu(ActionPlaces.EDITOR_POPUP, group); menu.getComponent().show(mouseEvent.getComponent(), mouseEvent.getX(), mouseEvent.getY()); } @@ -1092,13 +1092,6 @@ public class ConsoleViewImpl extends JPanel implements ConsoleView, ObservableCo } } - public static class CopyAction extends EditorCopyAction { - @Override - protected boolean isEnabled(AnActionEvent e) { - return super.isEnabled(e) && e.getData(LangDataKeys.CONSOLE_VIEW) != null; - } - } - private class MyHighlighter extends DocumentAdapter implements EditorHighlighter { private HighlighterClient myEditor; diff --git a/platform/platform-api/src/com/intellij/openapi/actionSystem/IdeActions.java b/platform/platform-api/src/com/intellij/openapi/actionSystem/IdeActions.java index 0e7665cd6949..28979e48f084 100644 --- a/platform/platform-api/src/com/intellij/openapi/actionSystem/IdeActions.java +++ b/platform/platform-api/src/com/intellij/openapi/actionSystem/IdeActions.java @@ -82,6 +82,7 @@ public interface IdeActions { @NonNls String GROUP_MAIN_MENU = "MainMenu"; @NonNls String GROUP_MAIN_TOOLBAR = "MainToolBar"; @NonNls String GROUP_EDITOR_POPUP = "EditorPopupMenu"; + @NonNls String GROUP_CONSOLE_EDITOR_POPUP = "ConsoleEditorPopupMenu"; @NonNls String GROUP_CUT_COPY_PASTE = "CutCopyPasteGroup"; @NonNls String GROUP_EDITOR_TAB_POPUP = "EditorTabPopupMenu"; diff --git a/platform/platform-impl/src/com/intellij/ide/actions/PasteAction.java b/platform/platform-impl/src/com/intellij/ide/actions/PasteAction.java index 7ecfffce8358..74e4ac38abb8 100644 --- a/platform/platform-impl/src/com/intellij/ide/actions/PasteAction.java +++ b/platform/platform-impl/src/com/intellij/ide/actions/PasteAction.java @@ -27,6 +27,12 @@ public class PasteAction extends AnAction implements DumbAware { PasteProvider provider = PlatformDataKeys.PASTE_PROVIDER.getData(dataContext); presentation.setEnabled(provider != null && provider.isPastePossible(dataContext)); + if (event.getPlace().equals(ActionPlaces.EDITOR_POPUP) && provider != null) { + presentation.setVisible(presentation.isEnabled()); + } + else { + presentation.setVisible(true); + } } public void actionPerformed(AnActionEvent e) { diff --git a/platform/platform-impl/src/com/intellij/ide/actions/SearchWebAction.java b/platform/platform-impl/src/com/intellij/ide/actions/SearchWebAction.java new file mode 100644 index 000000000000..6bb652771d5c --- /dev/null +++ b/platform/platform-impl/src/com/intellij/ide/actions/SearchWebAction.java @@ -0,0 +1,58 @@ +/* + * Copyright 2000-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.ide.actions; + +import com.intellij.ide.BrowserUtil; +import com.intellij.ide.CopyProvider; +import com.intellij.openapi.actionSystem.*; +import com.intellij.openapi.ide.CopyPasteManager; +import com.intellij.openapi.project.DumbAware; +import com.intellij.openapi.util.text.StringUtil; + +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.Transferable; +import java.net.URLEncoder; + +public class SearchWebAction extends AnAction implements DumbAware { + public void actionPerformed(AnActionEvent e) { + DataContext dataContext = e.getDataContext(); + CopyProvider provider = PlatformDataKeys.COPY_PROVIDER.getData(dataContext); + if (provider == null) { + return; + } + provider.performCopy(dataContext); + Transferable contents = CopyPasteManager.getInstance().getContents(); + String string; + try { + string = contents == null? null : (String)contents.getTransferData(DataFlavor.stringFlavor); + } + catch (Exception ex) { + return; + } + if (StringUtil.isNotEmpty(string)) { + BrowserUtil.launchBrowser("http://www.google.com/search?q="+ URLEncoder.encode(string)); + } + } + + public void update(AnActionEvent event) { + Presentation presentation = event.getPresentation(); + DataContext dataContext = event.getDataContext(); + CopyProvider provider = PlatformDataKeys.COPY_PROVIDER.getData(dataContext); + boolean available = provider != null && provider.isCopyEnabled(dataContext); + presentation.setEnabled(available); + presentation.setVisible(available); + } +} diff --git a/platform/platform-impl/src/com/intellij/notification/EventLogConsole.java b/platform/platform-impl/src/com/intellij/notification/EventLogConsole.java index a10ff97fdb3c..3cce5bdc1135 100644 --- a/platform/platform-impl/src/com/intellij/notification/EventLogConsole.java +++ b/platform/platform-impl/src/com/intellij/notification/EventLogConsole.java @@ -94,7 +94,7 @@ class EventLogConsole { editor.addEditorMouseListener(new EditorPopupHandler() { public void invokePopup(final EditorMouseEvent event) { final ActionManager actionManager = ActionManager.getInstance(); - final ActionPopupMenu menu = actionManager.createActionPopupMenu(ActionPlaces.UNKNOWN, createPopupActions(actionManager, clearLog)); + final ActionPopupMenu menu = actionManager.createActionPopupMenu(ActionPlaces.EDITOR_POPUP, createPopupActions(actionManager, clearLog)); final MouseEvent mouseEvent = event.getMouseEvent(); menu.getComponent().show(mouseEvent.getComponent(), mouseEvent.getX(), mouseEvent.getY()); } @@ -103,9 +103,8 @@ class EventLogConsole { } private DefaultActionGroup createPopupActions(ActionManager actionManager, ClearLog action) { - DefaultActionGroup group = new DefaultActionGroup(); - group.add(new EditorCopyAction()); - group.add(actionManager.getAction(IdeActions.ACTION_COMPARE_CLIPBOARD_WITH_SELECTION)); + AnAction[] children = ((ActionGroup)actionManager.getAction(IdeActions.GROUP_CONSOLE_EDITOR_POPUP)).getChildren(null); + DefaultActionGroup group = new DefaultActionGroup(children); group.addSeparator(); group.add(action); return group; diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/actions/MultiplePasteAction.java b/platform/platform-impl/src/com/intellij/openapi/editor/actions/MultiplePasteAction.java index 2cda172b28ea..d46b4b6837ab 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/actions/MultiplePasteAction.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/actions/MultiplePasteAction.java @@ -134,7 +134,8 @@ public class MultiplePasteAction extends AnAction implements DumbAware { private static boolean isEnabled(AnActionEvent e) { Object component = e.getData(PlatformDataKeys.CONTEXT_COMPONENT); if (!(component instanceof JComponent)) return false; - if (e.getData(PlatformDataKeys.EDITOR) != null) return true; + Editor editor = e.getData(PlatformDataKeys.EDITOR); + if (editor != null) return !editor.isViewer(); Action pasteAction = ((JComponent)component).getActionMap().get(DefaultEditorKit.pasteAction); return pasteAction != null; } diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/actions/SimplePasteAction.java b/platform/platform-impl/src/com/intellij/openapi/editor/actions/SimplePasteAction.java index 932a5a20f365..40a9adbfa2dc 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/actions/SimplePasteAction.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/actions/SimplePasteAction.java @@ -64,5 +64,10 @@ public class SimplePasteAction extends EditorAction { } } + + @Override + public boolean isEnabled(Editor editor, DataContext dataContext) { + return !editor.isViewer(); + } } } diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java index a711db60c85a..bfbf8d42b7bf 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java @@ -4611,6 +4611,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi @Override public boolean isCutVisible(@NotNull DataContext dataContext) { + if (!isCutEnabled(dataContext)) return false; return getSelectionModel().hasSelection() || getSelectionModel().hasBlockSelection(); } diff --git a/platform/platform-resources-en/src/messages/ActionsBundle.properties b/platform/platform-resources-en/src/messages/ActionsBundle.properties index 5da66574eae7..b8a4b1a5b3ec 100644 --- a/platform/platform-resources-en/src/messages/ActionsBundle.properties +++ b/platform/platform-resources-en/src/messages/ActionsBundle.properties @@ -277,6 +277,8 @@ action.$Cut.text=Cu_t action.$Cut.description=Cut to clipboard action.$Copy.text=_Copy action.$Copy.description=Copy to clipboard +action.$SearchWeb.text=_Search with Google +action.$SearchWeb.description=Search selection with Google action.CopyPaths.text=C_opy Paths action.CopyPaths.description=Copy paths corresponding to selected files or directories to clipboard action.CopyReference.text=Cop_y Reference diff --git a/platform/platform-resources/src/idea/LangActions.xml b/platform/platform-resources/src/idea/LangActions.xml index e9799b5dc8f6..fa1c4045d414 100644 --- a/platform/platform-resources/src/idea/LangActions.xml +++ b/platform/platform-resources/src/idea/LangActions.xml @@ -775,8 +775,7 @@ - - + diff --git a/platform/platform-resources/src/idea/PlatformActions.xml b/platform/platform-resources/src/idea/PlatformActions.xml index 426dc7602e06..98ff76d11160 100644 --- a/platform/platform-resources/src/idea/PlatformActions.xml +++ b/platform/platform-resources/src/idea/PlatformActions.xml @@ -406,11 +406,19 @@ + + + + + + + +