From 151db7e50c9149abd72aa1bac850398b9e65765a Mon Sep 17 00:00:00 2001 From: anna Date: Wed, 23 Nov 2011 14:09:09 +0100 Subject: [PATCH] suggest to open from pom.xml/.classpath on import from version control; suggest to create a new project only after nothing was found to open --- .../ProjectImporterCheckoutListener.java | 55 +++++++++++++++++++ .../checkout/CompositeCheckoutListener.java | 14 ++--- resources/src/idea/RichPlatformPlugin.xml | 1 + 3 files changed, 63 insertions(+), 7 deletions(-) create mode 100644 java/idea-ui/src/com/intellij/openapi/vcs/checkout/ProjectImporterCheckoutListener.java diff --git a/java/idea-ui/src/com/intellij/openapi/vcs/checkout/ProjectImporterCheckoutListener.java b/java/idea-ui/src/com/intellij/openapi/vcs/checkout/ProjectImporterCheckoutListener.java new file mode 100644 index 000000000000..e041dfbccf27 --- /dev/null +++ b/java/idea-ui/src/com/intellij/openapi/vcs/checkout/ProjectImporterCheckoutListener.java @@ -0,0 +1,55 @@ +/* + * Copyright 2000-2011 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.openapi.vcs.checkout; + +import com.intellij.openapi.project.Project; +import com.intellij.openapi.ui.Messages; +import com.intellij.openapi.vcs.VcsBundle; +import com.intellij.openapi.vfs.LocalFileSystem; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.projectImport.ProjectOpenProcessor; + +import java.io.File; + +public class ProjectImporterCheckoutListener implements CheckoutListener { + public boolean processCheckedOutDirectory(Project project, File directory) { + final File[] files = directory.listFiles(); + if (files != null) { + final LocalFileSystem localFileSystem = LocalFileSystem.getInstance(); + for (File file : files) { + if (file.isDirectory()) continue; + final VirtualFile virtualFile = localFileSystem.findFileByIoFile(file); + if (virtualFile != null) { + final ProjectOpenProcessor openProcessor = ProjectOpenProcessor.getImportProvider(virtualFile); + if (openProcessor != null) { + int rc = Messages + .showYesNoDialog(project, VcsBundle.message("checkout.open.project.prompt", ProjectCheckoutListener.getProductNameWithArticle(), files[0].getPath()), + VcsBundle.message("checkout.title"), Messages.getQuestionIcon()); + if (rc == 0) { + openProcessor.doOpenProject(virtualFile, project, false); + } + return true; + } + } + } + } + return false; + } + + @Override + public void processOpenedProject(Project lastOpenedProject) { + } +} \ No newline at end of file diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/checkout/CompositeCheckoutListener.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/checkout/CompositeCheckoutListener.java index acfafdc1cbcb..edecdddffe2b 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/checkout/CompositeCheckoutListener.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/checkout/CompositeCheckoutListener.java @@ -76,15 +76,15 @@ public class CompositeCheckoutListener implements CheckoutProvider.Listener { } private void notifyCheckoutListeners(final File directory, final ExtensionPointName epName) { - final VcsAwareCheckoutListener[] vcsAwareExtensions = Extensions.getExtensions(VcsAwareCheckoutListener.EP_NAME); - for (VcsAwareCheckoutListener extension : vcsAwareExtensions) { - myFoundProject = extension.processCheckedOutDirectory(myProject, directory, myVcsKey); + final CheckoutListener[] listeners = Extensions.getExtensions(epName); + for (CheckoutListener listener: listeners) { + myFoundProject = listener.processCheckedOutDirectory(myProject, directory); if (myFoundProject) break; } - final CheckoutListener[] listeners = Extensions.getExtensions(epName); - if (! myFoundProject) { - for (CheckoutListener listener: listeners) { - myFoundProject = listener.processCheckedOutDirectory(myProject, directory); + if (!myFoundProject) { + final VcsAwareCheckoutListener[] vcsAwareExtensions = Extensions.getExtensions(VcsAwareCheckoutListener.EP_NAME); + for (VcsAwareCheckoutListener extension : vcsAwareExtensions) { + myFoundProject = extension.processCheckedOutDirectory(myProject, directory, myVcsKey); if (myFoundProject) break; } } diff --git a/resources/src/idea/RichPlatformPlugin.xml b/resources/src/idea/RichPlatformPlugin.xml index b559d5844165..bc3f3ac5c642 100644 --- a/resources/src/idea/RichPlatformPlugin.xml +++ b/resources/src/idea/RichPlatformPlugin.xml @@ -260,6 +260,7 @@ +