From 701d66ecfc53c82e19da9d2178316bde9148a70f Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 17 Oct 2012 20:01:55 +0200 Subject: [PATCH] IDEA-93059 "Open" action does nothing if you select a directory which doesn't have .idea under it --- .../src/com/intellij/openapi/ui/Messages.java | 2 +- .../src/com/intellij/ide/actions/OpenFileAction.java | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/platform/platform-api/src/com/intellij/openapi/ui/Messages.java b/platform/platform-api/src/com/intellij/openapi/ui/Messages.java index 47ac3cbdd30b..8e06c6053b4b 100644 --- a/platform/platform-api/src/com/intellij/openapi/ui/Messages.java +++ b/platform/platform-api/src/com/intellij/openapi/ui/Messages.java @@ -819,7 +819,7 @@ public class Messages { /** * Shows dialog with given message and title, information icon {@link #getInformationIcon()} and OK button */ - public static void showInfoMessage(Project project, @Nls String message, @Nls String title) { + public static void showInfoMessage(@Nullable Project project, @Nls String message, @Nls String title) { if (canShowMacSheetPanel()) { MacMessages.getInstance().showOkMessageDialog(title, message, OK_BUTTON, WindowManager.getInstance().suggestParentWindow(project)); return; diff --git a/platform/platform-impl/src/com/intellij/ide/actions/OpenFileAction.java b/platform/platform-impl/src/com/intellij/ide/actions/OpenFileAction.java index 0a8cd3f70c9e..0902a83ebbc9 100644 --- a/platform/platform-impl/src/com/intellij/ide/actions/OpenFileAction.java +++ b/platform/platform-impl/src/com/intellij/ide/actions/OpenFileAction.java @@ -88,6 +88,15 @@ public class OpenFileAction extends AnAction implements DumbAware { FileChooser.chooseFiles(descriptor, project, userHomeDir, new Consumer>() { @Override public void consume(final List files) { + for (VirtualFile file : files) { + if (!descriptor.isFileSelectable(file)) { // on Mac, it could be selected anyway + Messages.showInfoMessage(project, + file.getPresentableUrl() + " contains no " + + ApplicationNamesInfo.getInstance().getFullProductName() + " project", + "Cannot Open Project"); + return; + } + } doOpenFile(project, files); } });