simplify GTDUCollector a bit more
[idea/community.git] / java / idea-ui / src / com / intellij / projectImport / ProjectImportProvider.java
1 // Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
2 package com.intellij.projectImport;
3
4 import com.intellij.ide.util.newProjectWizard.StepSequence;
5 import com.intellij.ide.util.projectWizard.ModuleWizardStep;
6 import com.intellij.ide.util.projectWizard.WizardContext;
7 import com.intellij.openapi.extensions.ExtensionPointName;
8 import com.intellij.openapi.project.Project;
9 import com.intellij.openapi.vfs.VirtualFile;
10 import org.intellij.lang.annotations.Language;
11 import org.jetbrains.annotations.Nls;
12 import org.jetbrains.annotations.NonNls;
13 import org.jetbrains.annotations.NotNull;
14 import org.jetbrains.annotations.Nullable;
15
16 import javax.swing.*;
17
18 public abstract class ProjectImportProvider {
19   public static final ExtensionPointName<ProjectImportProvider> PROJECT_IMPORT_PROVIDER = ExtensionPointName.create("com.intellij.projectImportProvider");
20
21   protected ProjectImportBuilder myBuilder;
22
23   protected ProjectImportProvider(ProjectImportBuilder builder) {
24     myBuilder = builder;
25   }
26
27   protected ProjectImportProvider() {
28     myBuilder = null;
29   }
30
31   protected ProjectImportBuilder doGetBuilder() {
32     return myBuilder;
33   }
34
35   public final ProjectImportBuilder getBuilder() {
36     return doGetBuilder();
37   }
38
39   @NonNls @NotNull
40   public String getId(){
41     return getBuilder().getName();
42   }
43
44   @NotNull
45   public @Nls(capitalization = Nls.Capitalization.Sentence) String getName(){
46     return getBuilder().getName();
47   }
48
49   @Nullable
50   public Icon getIcon() {
51     return getBuilder().getIcon();
52   }
53
54   public boolean canImport(@NotNull VirtualFile fileOrDirectory, @Nullable Project project) {
55     if (fileOrDirectory.isDirectory()) {
56       return true;
57     }
58     else {
59       return canImportFromFile(fileOrDirectory);
60     }
61   }
62
63   protected boolean canImportFromFile(VirtualFile file) {
64     return false;
65   }
66
67   public String getPathToBeImported(VirtualFile file) {
68     return getDefaultPath(file);
69   }
70
71   public static String getDefaultPath(VirtualFile file) {
72     return file.isDirectory() ? file.getPath() : file.getParent().getPath();
73   }
74
75   public boolean canCreateNewProject() {
76     return true;
77   }
78
79   public boolean canImportModule() {
80     return true;
81   }
82
83   public void addSteps(StepSequence sequence, WizardContext context, String id) {
84     ModuleWizardStep[] steps = createSteps(context);
85     for (ModuleWizardStep step : steps) {
86       sequence.addSpecificStep(id, step);
87     }
88   }
89
90   public ModuleWizardStep[] createSteps(WizardContext context) {
91     return ModuleWizardStep.EMPTY_ARRAY;
92   }
93
94   @Nullable
95   @Language("HTML")
96   public String getFileSample() {
97     return null;
98   }
99 }