Cleanup: NotNull/Nullable
[idea/community.git] / java / idea-ui / src / com / intellij / ide / actions / NewProjectAction.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.actions;
3
4 import com.intellij.icons.AllIcons;
5 import com.intellij.ide.impl.NewProjectUtil;
6 import com.intellij.ide.projectWizard.NewProjectWizard;
7 import com.intellij.lang.IdeLanguageCustomization;
8 import com.intellij.lang.java.JavaLanguage;
9 import com.intellij.openapi.actionSystem.ActionPlaces;
10 import com.intellij.openapi.actionSystem.AnAction;
11 import com.intellij.openapi.actionSystem.AnActionEvent;
12 import com.intellij.openapi.application.ApplicationManager;
13 import com.intellij.openapi.project.DumbAware;
14 import com.intellij.openapi.project.Project;
15 import com.intellij.openapi.project.ProjectBundle;
16 import com.intellij.openapi.roots.ui.configuration.ModulesProvider;
17 import com.intellij.openapi.wm.impl.welcomeScreen.NewWelcomeScreen;
18 import org.jetbrains.annotations.NotNull;
19
20 public class NewProjectAction extends AnAction implements DumbAware, NewProjectOrModuleAction {
21   @Override
22   public boolean startInTransaction() {
23     return true;
24   }
25
26   @Override
27   public void actionPerformed(@NotNull AnActionEvent e) {
28     NewProjectWizard wizard = new NewProjectWizard(null, ModulesProvider.EMPTY_MODULES_PROVIDER, null);
29     Project eventProject = getEventProject(e);
30     ApplicationManager.getApplication().invokeLater(() -> NewProjectUtil.createNewProject(eventProject, wizard));
31   }
32
33   @Override
34   public void update(@NotNull AnActionEvent e) {
35     if (NewWelcomeScreen.isNewWelcomeScreen(e)) {
36       e.getPresentation().setIcon(AllIcons.Welcome.CreateNewProject);
37     }
38     updateActionText(this, e);
39   }
40
41   @NotNull
42   @Override
43   public String getActionText(boolean isInNewSubmenu, boolean isInJavaIde) {
44     return ProjectBundle.message("new.project.action.text", isInNewSubmenu ? 1 : 0, isInJavaIde ? 1 : 0);
45   }
46
47   public static <T extends AnAction & NewProjectOrModuleAction> void updateActionText(@NotNull T action, @NotNull AnActionEvent e) {
48     String actionText;
49     if (NewWelcomeScreen.isNewWelcomeScreen(e)) {
50       actionText = action.getTemplateText();
51     }
52     else {
53       boolean inJavaIde = IdeLanguageCustomization.getInstance().getPrimaryIdeLanguages().contains(JavaLanguage.INSTANCE);
54       boolean fromNewSubMenu = isInvokedFromNewSubMenu(action, e);
55       actionText = action.getActionText(fromNewSubMenu, inJavaIde);
56     }
57     e.getPresentation().setText(actionText);
58   }
59
60   private static boolean isInvokedFromNewSubMenu(@NotNull AnAction action, @NotNull AnActionEvent e) {
61     return NewActionGroup.isActionInNewPopupMenu(action) &&
62            (ActionPlaces.MAIN_MENU.equals(e.getPlace()) || ActionPlaces.isPopupPlace(e.getPlace()));
63   }
64 }