cleanup: remove useless '@author nik' from javadoc comments
[idea/community.git] / java / idea-ui / src / com / intellij / ide / util / frameworkSupport / AddFrameworkSupportDialog.java
1 // Copyright 2000-2018 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.ide.util.frameworkSupport;
3
4 import com.intellij.facet.impl.DefaultFacetsProvider;
5 import com.intellij.framework.addSupport.FrameworkSupportInModuleProvider;
6 import com.intellij.ide.util.newProjectWizard.AddSupportForFrameworksPanel;
7 import com.intellij.ide.util.newProjectWizard.impl.FrameworkSupportModelBase;
8 import com.intellij.openapi.application.WriteAction;
9 import com.intellij.openapi.module.Module;
10 import com.intellij.openapi.project.ProjectBundle;
11 import com.intellij.openapi.roots.ModifiableRootModel;
12 import com.intellij.openapi.roots.ModuleRootManager;
13 import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainer;
14 import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainerFactory;
15 import com.intellij.openapi.ui.DialogWrapper;
16 import com.intellij.openapi.util.Disposer;
17 import com.intellij.openapi.vfs.VirtualFile;
18 import org.jetbrains.annotations.NotNull;
19 import org.jetbrains.annotations.Nullable;
20
21 import javax.swing.*;
22 import java.util.List;
23
24 public class AddFrameworkSupportDialog extends DialogWrapper {
25   private final AddSupportForFrameworksPanel myAddSupportPanel;
26   private final Module myModule;
27
28   private AddFrameworkSupportDialog(@NotNull Module module, final @NotNull String contentRootPath, final List<FrameworkSupportInModuleProvider> providers) {
29     super(module.getProject(), true);
30     setTitle(ProjectBundle.message("dialog.title.add.frameworks.support"));
31     myModule = module;
32     final LibrariesContainer container = LibrariesContainerFactory.createContainer(module.getProject());
33     final FrameworkSupportModelBase model = new FrameworkSupportModelImpl(module.getProject(), contentRootPath, container);
34     myAddSupportPanel = new AddSupportForFrameworksPanel(providers, model, false, null) {
35       @Override
36       protected void onFrameworkStateChanged() {
37         setOKActionEnabled(isOKActionEnabled());
38       }
39     };
40
41     setOKActionEnabled(isOKActionEnabled());
42     Disposer.register(myDisposable, myAddSupportPanel);
43     init();
44   }
45
46   @Nullable
47   public static AddFrameworkSupportDialog createDialog(@NotNull Module module) {
48     VirtualFile[] roots = ModuleRootManager.getInstance(module).getContentRoots();
49     if (roots.length == 0) return null;
50
51     List<FrameworkSupportInModuleProvider> providers = FrameworkSupportUtil.getProviders(module, DefaultFacetsProvider.INSTANCE);
52     if (providers.isEmpty()) return null;
53
54     return new AddFrameworkSupportDialog(module, roots[0].getPath(), providers);
55   }
56
57   public static boolean isAvailable(@NotNull Module module) {
58     VirtualFile[] roots = ModuleRootManager.getInstance(module).getContentRoots();
59     return roots.length != 0 && FrameworkSupportUtil.hasProviders(module, DefaultFacetsProvider.INSTANCE);
60   }
61
62   @Override
63   public boolean isOKActionEnabled() {
64     return myAddSupportPanel.hasSelectedFrameworks();
65   }
66
67   @Override
68   protected void doOKAction() {
69     if (myAddSupportPanel.hasSelectedFrameworks()) {
70       if (!myAddSupportPanel.validate()) return;
71       if (!myAddSupportPanel.downloadLibraries(myAddSupportPanel.getMainPanel())) return;
72
73       WriteAction.run(() -> {
74         ModifiableRootModel model = ModuleRootManager.getInstance(myModule).getModifiableModel();
75         myAddSupportPanel.addSupport(myModule, model);
76         model.commit();
77       });
78     }
79     super.doOKAction();
80   }
81
82   @Override
83   protected String getDimensionServiceKey() {
84     return "#com.intellij.ide.util.frameworkSupport.AddFrameworkSupportDialog";
85   }
86
87   @Override
88   protected String getHelpId() {
89     return "reference.frameworks.support.dialog";
90   }
91
92   @Override
93   protected JComponent createCenterPanel() {
94     return myAddSupportPanel.getMainPanel();
95   }
96
97   @Override
98   public JComponent getPreferredFocusedComponent() {
99     return myAddSupportPanel.getFrameworksTree();
100   }
101 }