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 @@
+
+
+