f7f89a7af9e90695037ba35f5c4887b297f3b103
[idea/community.git] / java / idea-ui / src / com / intellij / projectImport / ProjectImportBuilder.java
1 // Copyright 2000-2020 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.DataManager;
5 import com.intellij.ide.JavaUiBundle;
6 import com.intellij.ide.util.projectWizard.ProjectBuilder;
7 import com.intellij.openapi.actionSystem.CommonDataKeys;
8 import com.intellij.openapi.extensions.ExtensionPointName;
9 import com.intellij.openapi.module.ModifiableModuleModel;
10 import com.intellij.openapi.module.Module;
11 import com.intellij.openapi.options.ConfigurationException;
12 import com.intellij.openapi.project.Project;
13 import com.intellij.openapi.roots.ui.configuration.ModulesProvider;
14 import com.intellij.packaging.artifacts.ModifiableArtifactModel;
15 import org.jetbrains.annotations.NotNull;
16 import org.jetbrains.annotations.Nullable;
17
18 import javax.swing.*;
19 import java.util.List;
20
21 /**
22  * @author Vladislav.Kaznacheev
23  */
24 public abstract class ProjectImportBuilder<T> extends ProjectBuilder {
25   public static final ExtensionPointName<ProjectImportBuilder<?>> EXTENSIONS_POINT_NAME = new ExtensionPointName<>("com.intellij.projectImportBuilder");
26
27   private boolean myUpdate;
28   private String myFileToImport;
29
30   public abstract @NotNull String getName();
31
32   public abstract Icon getIcon();
33
34   public @Nullable List<T> getList() {
35     return null;
36   }
37
38   public abstract boolean isMarked(final T element);
39
40   public void setList(List<T> list) throws ConfigurationException {
41   }
42
43   public abstract void setOpenProjectSettingsAfter(boolean on);
44
45   @Override
46   public List<Module> commit(@NotNull Project project, ModifiableModuleModel model, ModulesProvider modulesProvider) {
47     return commit(project, model, modulesProvider, null);
48   }
49
50   public abstract @Nullable List<Module> commit(Project project, ModifiableModuleModel model, ModulesProvider modulesProvider, ModifiableArtifactModel artifactModel);
51
52   public void setFileToImport(@NotNull String path) {
53     myFileToImport = path;
54   }
55
56   public String getFileToImport() {
57     return myFileToImport;
58   }
59
60   public static @Nullable Project getCurrentProject() {
61     return CommonDataKeys.PROJECT.getData(DataManager.getInstance().getDataContext());
62   }
63
64   protected String getTitle() {
65     return JavaUiBundle.message("project.import.wizard.title", getName());
66   }
67
68   @Override
69   public boolean isUpdate() {
70     return myUpdate;
71   }
72
73   public void setUpdate(final boolean update) {
74     myUpdate = update;
75   }
76 }