9a05fae9bcd8d91122005882235dff4a82cb05e8
[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.NonNls;
12 import org.jetbrains.annotations.NotNull;
13 import org.jetbrains.annotations.Nullable;
14
15 import javax.swing.*;
16
17 public abstract class ProjectImportProvider {
18   public static final ExtensionPointName<ProjectImportProvider> PROJECT_IMPORT_PROVIDER = ExtensionPointName.create("com.intellij.projectImportProvider");
19
20   protected ProjectImportBuilder myBuilder;
21
22   protected ProjectImportProvider(ProjectImportBuilder builder) {
23     myBuilder = builder;
24   }
25
26   protected ProjectImportProvider() {
27     myBuilder = null;
28   }
29
30   protected ProjectImportBuilder doGetBuilder() {
31     return myBuilder;
32   }
33
34   public final ProjectImportBuilder getBuilder() {
35     return doGetBuilder();
36   }
37
38   @NonNls @NotNull
39   public String getId(){
40     return getBuilder().getName();
41   }
42
43   @NotNull
44   public String getName(){
45     return getBuilder().getName();
46   }
47
48   @Nullable
49   public Icon getIcon() {
50     return getBuilder().getIcon();
51   }
52
53   public boolean canImport(@NotNull VirtualFile fileOrDirectory, @Nullable Project project) {
54     if (fileOrDirectory.isDirectory()) {
55       return true;
56     }
57     else {
58       return canImportFromFile(fileOrDirectory);
59     }
60   }
61
62   protected boolean canImportFromFile(VirtualFile file) {
63     return false;
64   }
65
66   public String getPathToBeImported(VirtualFile file) {
67     return getDefaultPath(file);
68   }
69
70   public static String getDefaultPath(VirtualFile file) {
71     return file.isDirectory() ? file.getPath() : file.getParent().getPath();
72   }
73
74   public boolean canCreateNewProject() {
75     return true;
76   }
77
78   public boolean canImportModule() {
79     return true;
80   }
81
82   public void addSteps(StepSequence sequence, WizardContext context, String id) {
83     ModuleWizardStep[] steps = createSteps(context);
84     for (ModuleWizardStep step : steps) {
85       sequence.addSpecificStep(id, step);
86     }
87   }
88
89   public ModuleWizardStep[] createSteps(WizardContext context) {
90     return ModuleWizardStep.EMPTY_ARRAY;
91   }
92
93   @Nullable
94   @Language("HTML")
95   public String getFileSample() {
96     return null;
97   }
98 }