mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-15 02:59:33 +07:00
[java] IDEA-352641 File - New contains many irrelevant templates for Java source sets
GitOrigin-RevId: bd18866f6d60839fa9474c7071aca2761989986e
This commit is contained in:
committed by
intellij-monorepo-bot
parent
aebc03abd0
commit
b79a859047
@@ -1658,6 +1658,10 @@
|
|||||||
implementationClass="com.intellij.codeInsight.daemon.impl.quickfix.VariableAccessFromInnerClassJava10Fix"/>
|
implementationClass="com.intellij.codeInsight.daemon.impl.quickfix.VariableAccessFromInnerClassJava10Fix"/>
|
||||||
<stripTrailingSpacesFilterFactory implementation="com.intellij.codeEditor.JavaStripTrailingSpacesFilterFactory"/>
|
<stripTrailingSpacesFilterFactory implementation="com.intellij.codeEditor.JavaStripTrailingSpacesFilterFactory"/>
|
||||||
|
|
||||||
|
<advancedSetting id="java.show.irrelevant.templates.in.source.roots" default="false"
|
||||||
|
groupKey="advanced.settings.group.java" bundle="messages.JavaBundle"/>
|
||||||
|
<newFileActionCategoryHandler implementation="com.intellij.ide.actions.JavaNewFileCategoryHandler"/>
|
||||||
|
|
||||||
<inspection.basicVisitor class="com.intellij.psi.JavaElementVisitor"/>
|
<inspection.basicVisitor class="com.intellij.psi.JavaElementVisitor"/>
|
||||||
|
|
||||||
<localInspection language="JAVA" shortName="MoveFieldAssignmentToInitializer" enabledByDefault="true" level="INFORMATION"
|
<localInspection language="JAVA" shortName="MoveFieldAssignmentToInitializer" enabledByDefault="true" level="INFORMATION"
|
||||||
|
|||||||
@@ -0,0 +1,43 @@
|
|||||||
|
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||||
|
package com.intellij.ide.actions;
|
||||||
|
|
||||||
|
import com.intellij.ide.IdeView;
|
||||||
|
import com.intellij.openapi.actionSystem.CommonDataKeys;
|
||||||
|
import com.intellij.openapi.actionSystem.DataContext;
|
||||||
|
import com.intellij.openapi.actionSystem.LangDataKeys;
|
||||||
|
import com.intellij.openapi.options.advanced.AdvancedSettings;
|
||||||
|
import com.intellij.openapi.project.Project;
|
||||||
|
import com.intellij.openapi.roots.ProjectFileIndex;
|
||||||
|
import com.intellij.openapi.roots.ProjectRootManager;
|
||||||
|
import com.intellij.psi.PsiDirectory;
|
||||||
|
import com.intellij.util.ThreeState;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes;
|
||||||
|
|
||||||
|
import static com.intellij.ide.actions.CreateTemplateInPackageAction.JAVA_NEW_FILE_CATEGORY;
|
||||||
|
import static com.intellij.ide.actions.CreateTemplateInPackageAction.isInContentRoot;
|
||||||
|
|
||||||
|
final class JavaNewFileCategoryHandler implements NewFileActionCategoryHandler {
|
||||||
|
@Override
|
||||||
|
public @NotNull ThreeState isVisible(@NotNull DataContext dataContext, @NotNull String category) {
|
||||||
|
if (JAVA_NEW_FILE_CATEGORY.equals(category)) return ThreeState.YES;
|
||||||
|
if (AdvancedSettings.getBoolean("java.show.irrelevant.templates.in.source.roots")) return ThreeState.UNSURE;
|
||||||
|
|
||||||
|
Project project = CommonDataKeys.PROJECT.getData(dataContext);
|
||||||
|
IdeView view = LangDataKeys.IDE_VIEW.getData(dataContext);
|
||||||
|
|
||||||
|
if (project == null || view == null) return ThreeState.UNSURE;
|
||||||
|
|
||||||
|
ProjectFileIndex projectFileIndex = ProjectRootManager.getInstance(project).getFileIndex();
|
||||||
|
for (PsiDirectory dir : view.getDirectories()) {
|
||||||
|
if (isInContentRoot(dir.getVirtualFile(), projectFileIndex)) { // cannot distinguish module root from source root
|
||||||
|
return ThreeState.YES;
|
||||||
|
}
|
||||||
|
if (projectFileIndex.isUnderSourceRootOfType(dir.getVirtualFile(), JavaModuleSourceRootTypes.SOURCES)) {
|
||||||
|
return ThreeState.NO;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ThreeState.UNSURE;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1952,3 +1952,5 @@ intention.family.name.delete.private.method=Delete private method
|
|||||||
checkbox.check.for.jdk.updates=Check for JDK updates
|
checkbox.check.for.jdk.updates=Check for JDK updates
|
||||||
intention.family.name.rename.to.ignored=Rename to ignored
|
intention.family.name.rename.to.ignored=Rename to ignored
|
||||||
tooltip.variable.used=Variable ''{0}'' is used
|
tooltip.variable.used=Variable ''{0}'' is used
|
||||||
|
|
||||||
|
advanced.setting.java.show.irrelevant.templates.in.source.roots=Show irrelevant New File templates in Java source roots
|
||||||
@@ -482,6 +482,10 @@ c:com.intellij.find.actions.FindUsagesAction
|
|||||||
- a:getSearchTarget():com.intellij.find.usages.api.SearchTarget
|
- a:getSearchTarget():com.intellij.find.usages.api.SearchTarget
|
||||||
*:com.intellij.find.usages.symbol.SymbolSearchTargetFactory
|
*:com.intellij.find.usages.symbol.SymbolSearchTargetFactory
|
||||||
- a:searchTarget(com.intellij.openapi.project.Project,com.intellij.model.Symbol):com.intellij.find.usages.api.SearchTarget
|
- a:searchTarget(com.intellij.openapi.project.Project,com.intellij.model.Symbol):com.intellij.find.usages.api.SearchTarget
|
||||||
|
*:com.intellij.ide.actions.NewFileActionCategoryHandler
|
||||||
|
- a:isVisible(com.intellij.openapi.actionSystem.DataContext,java.lang.String):com.intellij.util.ThreeState
|
||||||
|
*:com.intellij.ide.actions.NewFileActionWithCategory
|
||||||
|
- a:getCategory():java.lang.String
|
||||||
*:com.intellij.ide.actions.searcheverywhere.PromoAction
|
*:com.intellij.ide.actions.searcheverywhere.PromoAction
|
||||||
- a:getCallToAction():java.lang.String
|
- a:getCallToAction():java.lang.String
|
||||||
- a:getPromotedProductIcon():javax.swing.Icon
|
- a:getPromotedProductIcon():javax.swing.Icon
|
||||||
|
|||||||
@@ -8271,6 +8271,8 @@ a:com.intellij.ide.actions.CreateFromTemplateAction
|
|||||||
- update(com.intellij.openapi.actionSystem.AnActionEvent):V
|
- update(com.intellij.openapi.actionSystem.AnActionEvent):V
|
||||||
a:com.intellij.ide.actions.CreateTemplateInPackageAction
|
a:com.intellij.ide.actions.CreateTemplateInPackageAction
|
||||||
- com.intellij.ide.actions.CreateFromTemplateAction
|
- com.intellij.ide.actions.CreateFromTemplateAction
|
||||||
|
- com.intellij.ide.actions.NewFileActionWithCategory
|
||||||
|
- sf:JAVA_NEW_FILE_CATEGORY:java.lang.String
|
||||||
- p:<init>(java.lang.String,java.lang.String,javax.swing.Icon,java.util.Set):V
|
- p:<init>(java.lang.String,java.lang.String,javax.swing.Icon,java.util.Set):V
|
||||||
- p:<init>(java.util.function.Supplier,java.util.function.Supplier,java.util.function.Supplier,java.util.Set):V
|
- p:<init>(java.util.function.Supplier,java.util.function.Supplier,java.util.function.Supplier,java.util.Set):V
|
||||||
- p:<init>(java.util.function.Supplier,java.util.function.Supplier,javax.swing.Icon,java.util.Set):V
|
- p:<init>(java.util.function.Supplier,java.util.function.Supplier,javax.swing.Icon,java.util.Set):V
|
||||||
@@ -8279,6 +8281,7 @@ a:com.intellij.ide.actions.CreateTemplateInPackageAction
|
|||||||
- pa:checkPackageExists(com.intellij.psi.PsiDirectory):Z
|
- pa:checkPackageExists(com.intellij.psi.PsiDirectory):Z
|
||||||
- p:createFile(java.lang.String,java.lang.String,com.intellij.psi.PsiDirectory):com.intellij.psi.PsiElement
|
- p:createFile(java.lang.String,java.lang.String,com.intellij.psi.PsiDirectory):com.intellij.psi.PsiElement
|
||||||
- pa:doCreate(com.intellij.psi.PsiDirectory,java.lang.String,java.lang.String):com.intellij.psi.PsiElement
|
- pa:doCreate(com.intellij.psi.PsiDirectory,java.lang.String,java.lang.String):com.intellij.psi.PsiElement
|
||||||
|
- getCategory():java.lang.String
|
||||||
- pa:getNavigationElement(com.intellij.psi.PsiElement):com.intellij.psi.PsiElement
|
- pa:getNavigationElement(com.intellij.psi.PsiElement):com.intellij.psi.PsiElement
|
||||||
- p:isAvailable(com.intellij.openapi.actionSystem.DataContext):Z
|
- p:isAvailable(com.intellij.openapi.actionSystem.DataContext):Z
|
||||||
- s:isAvailable(com.intellij.openapi.actionSystem.DataContext,java.util.Set,java.util.function.Predicate):Z
|
- s:isAvailable(com.intellij.openapi.actionSystem.DataContext,java.util.Set,java.util.function.Predicate):Z
|
||||||
@@ -11383,30 +11386,6 @@ c:com.intellij.ide.scratch.ScratchFileActions$ChangeLanguageAction
|
|||||||
- p:getChangeLanguageActionName(java.lang.String):java.lang.String
|
- p:getChangeLanguageActionName(java.lang.String):java.lang.String
|
||||||
- p:getChangeLanguageTitle():java.lang.String
|
- p:getChangeLanguageTitle():java.lang.String
|
||||||
- update(com.intellij.openapi.actionSystem.AnActionEvent):V
|
- update(com.intellij.openapi.actionSystem.AnActionEvent):V
|
||||||
f:com.intellij.ide.scratch.ScratchFileActions$ExportToScratchAction
|
|
||||||
- com.intellij.openapi.project.DumbAwareAction
|
|
||||||
- <init>():V
|
|
||||||
- actionPerformed(com.intellij.openapi.actionSystem.AnActionEvent):V
|
|
||||||
- getActionUpdateThread():com.intellij.openapi.actionSystem.ActionUpdateThread
|
|
||||||
- update(com.intellij.openapi.actionSystem.AnActionEvent):V
|
|
||||||
f:com.intellij.ide.scratch.ScratchFileActions$NewBufferAction
|
|
||||||
- com.intellij.openapi.project.DumbAwareAction
|
|
||||||
- <init>():V
|
|
||||||
- actionPerformed(com.intellij.openapi.actionSystem.AnActionEvent):V
|
|
||||||
- getActionUpdateThread():com.intellij.openapi.actionSystem.ActionUpdateThread
|
|
||||||
- update(com.intellij.openapi.actionSystem.AnActionEvent):V
|
|
||||||
f:com.intellij.ide.scratch.ScratchFileActions$NewFileAction
|
|
||||||
- com.intellij.openapi.project.DumbAwareAction
|
|
||||||
- <init>():V
|
|
||||||
- actionPerformed(com.intellij.openapi.actionSystem.AnActionEvent):V
|
|
||||||
- getActionUpdateThread():com.intellij.openapi.actionSystem.ActionUpdateThread
|
|
||||||
- update(com.intellij.openapi.actionSystem.AnActionEvent):V
|
|
||||||
f:com.intellij.ide.scratch.ScratchFileActions$ShowFilesPopupAction
|
|
||||||
- com.intellij.openapi.project.DumbAwareAction
|
|
||||||
- <init>():V
|
|
||||||
- actionPerformed(com.intellij.openapi.actionSystem.AnActionEvent):V
|
|
||||||
- getActionUpdateThread():com.intellij.openapi.actionSystem.ActionUpdateThread
|
|
||||||
- update(com.intellij.openapi.actionSystem.AnActionEvent):V
|
|
||||||
a:com.intellij.ide.scratch.ScratchFileCreationHelper
|
a:com.intellij.ide.scratch.ScratchFileCreationHelper
|
||||||
- sf:EXTENSION:com.intellij.lang.LanguageExtension
|
- sf:EXTENSION:com.intellij.lang.LanguageExtension
|
||||||
- <init>():V
|
- <init>():V
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import com.intellij.ide.fileTemplates.FileTemplateUtil;
|
|||||||
import com.intellij.ide.fileTemplates.actions.CreateFromTemplateActionBase;
|
import com.intellij.ide.fileTemplates.actions.CreateFromTemplateActionBase;
|
||||||
import com.intellij.ide.util.PropertiesComponent;
|
import com.intellij.ide.util.PropertiesComponent;
|
||||||
import com.intellij.internal.statistic.collectors.fus.fileTypes.FileTypeUsageCounterCollector;
|
import com.intellij.internal.statistic.collectors.fus.fileTypes.FileTypeUsageCounterCollector;
|
||||||
|
import com.intellij.openapi.diagnostic.Logger;
|
||||||
import com.intellij.openapi.fileEditor.FileEditorManager;
|
import com.intellij.openapi.fileEditor.FileEditorManager;
|
||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
import com.intellij.openapi.util.NlsActions;
|
import com.intellij.openapi.util.NlsActions;
|
||||||
@@ -26,9 +27,6 @@ import java.util.Map;
|
|||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Dmitry Avdeev
|
|
||||||
*/
|
|
||||||
public abstract class CreateFileFromTemplateAction extends CreateFromTemplateAction<PsiFile> {
|
public abstract class CreateFileFromTemplateAction extends CreateFromTemplateAction<PsiFile> {
|
||||||
|
|
||||||
protected CreateFileFromTemplateAction() {
|
protected CreateFileFromTemplateAction() {
|
||||||
@@ -114,7 +112,7 @@ public abstract class CreateFileFromTemplateAction extends CreateFromTemplateAct
|
|||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
LOG.error(e);
|
Logger.getInstance(CreateFileFromTemplateAction.class).error(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -31,6 +31,10 @@ import java.util.function.Supplier;
|
|||||||
|
|
||||||
public abstract class CreateFromTemplateAction<T extends PsiElement> extends AnAction implements WriteActionAware {
|
public abstract class CreateFromTemplateAction<T extends PsiElement> extends AnAction implements WriteActionAware {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Declare your own LOG where needed.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
protected static final Logger LOG = Logger.getInstance(CreateFromTemplateAction.class);
|
protected static final Logger LOG = Logger.getInstance(CreateFromTemplateAction.class);
|
||||||
|
|
||||||
protected CreateFromTemplateAction() {
|
protected CreateFromTemplateAction() {
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import com.intellij.openapi.actionSystem.CommonDataKeys;
|
|||||||
import com.intellij.openapi.actionSystem.DataContext;
|
import com.intellij.openapi.actionSystem.DataContext;
|
||||||
import com.intellij.openapi.actionSystem.LangDataKeys;
|
import com.intellij.openapi.actionSystem.LangDataKeys;
|
||||||
import com.intellij.openapi.application.WriteAction;
|
import com.intellij.openapi.application.WriteAction;
|
||||||
|
import com.intellij.openapi.diagnostic.Logger;
|
||||||
import com.intellij.openapi.editor.Editor;
|
import com.intellij.openapi.editor.Editor;
|
||||||
import com.intellij.openapi.module.Module;
|
import com.intellij.openapi.module.Module;
|
||||||
import com.intellij.openapi.module.ModuleUtilCore;
|
import com.intellij.openapi.module.ModuleUtilCore;
|
||||||
@@ -32,7 +33,13 @@ import java.util.Set;
|
|||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
public abstract class CreateTemplateInPackageAction<T extends PsiElement> extends CreateFromTemplateAction<T> {
|
public abstract class CreateTemplateInPackageAction<T extends PsiElement> extends CreateFromTemplateAction<T>
|
||||||
|
implements NewFileActionWithCategory {
|
||||||
|
|
||||||
|
private static final @NotNull Logger LOG = Logger.getInstance(CreateTemplateInPackageAction.class);
|
||||||
|
|
||||||
|
public static final String JAVA_NEW_FILE_CATEGORY = "Java";
|
||||||
|
|
||||||
private final @Nullable Set<? extends JpsModuleSourceRootType<?>> mySourceRootTypes;
|
private final @Nullable Set<? extends JpsModuleSourceRootType<?>> mySourceRootTypes;
|
||||||
|
|
||||||
protected CreateTemplateInPackageAction(String text, String description, Icon icon,
|
protected CreateTemplateInPackageAction(String text, String description, Icon icon,
|
||||||
@@ -57,6 +64,11 @@ public abstract class CreateTemplateInPackageAction<T extends PsiElement> extend
|
|||||||
mySourceRootTypes = rootTypes;
|
mySourceRootTypes = rootTypes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull String getCategory() {
|
||||||
|
return JAVA_NEW_FILE_CATEGORY;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected @Nullable T createFile(String name, String templateName, PsiDirectory dir) {
|
protected @Nullable T createFile(String name, String templateName, PsiDirectory dir) {
|
||||||
return checkOrCreate(name, dir, templateName);
|
return checkOrCreate(name, dir, templateName);
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||||
|
package com.intellij.ide.actions;
|
||||||
|
|
||||||
|
import com.intellij.openapi.actionSystem.DataContext;
|
||||||
|
import com.intellij.util.ThreeState;
|
||||||
|
import org.jetbrains.annotations.ApiStatus;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hides some of the plugin New File... actions depending on context. For instance, web development templates in Java source sets.
|
||||||
|
*/
|
||||||
|
@ApiStatus.Experimental
|
||||||
|
public interface NewFileActionCategoryHandler {
|
||||||
|
@NotNull ThreeState isVisible(@NotNull DataContext dataContext, @NotNull String category);
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||||
|
package com.intellij.ide.actions;
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.ApiStatus;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Marks actions in New File... popup with a named category.
|
||||||
|
*/
|
||||||
|
@ApiStatus.Experimental
|
||||||
|
public interface NewFileActionWithCategory {
|
||||||
|
@NotNull String getCategory();
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||||
|
package com.intellij.ide.actions;
|
||||||
|
|
||||||
|
import com.intellij.openapi.actionSystem.DefaultActionGroup;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
final class NewWebDevelopmentGroup extends DefaultActionGroup implements NewFileActionWithCategory {
|
||||||
|
@Override
|
||||||
|
public @NotNull String getCategory() {
|
||||||
|
return "Web";
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,18 +4,23 @@ package com.intellij.ide.actions;
|
|||||||
import com.intellij.idea.ActionsBundle;
|
import com.intellij.idea.ActionsBundle;
|
||||||
import com.intellij.openapi.actionSystem.*;
|
import com.intellij.openapi.actionSystem.*;
|
||||||
import com.intellij.openapi.actionSystem.ex.ActionUtil;
|
import com.intellij.openapi.actionSystem.ex.ActionUtil;
|
||||||
|
import com.intellij.openapi.extensions.ExtensionPointName;
|
||||||
import com.intellij.openapi.project.DumbAware;
|
import com.intellij.openapi.project.DumbAware;
|
||||||
import com.intellij.openapi.ui.popup.JBPopupFactory;
|
import com.intellij.openapi.ui.popup.JBPopupFactory;
|
||||||
import com.intellij.openapi.ui.popup.ListPopup;
|
import com.intellij.openapi.ui.popup.ListPopup;
|
||||||
import com.intellij.openapi.util.registry.Registry;
|
import com.intellij.openapi.util.registry.Registry;
|
||||||
import com.intellij.openapi.util.text.TextWithMnemonic;
|
import com.intellij.openapi.util.text.TextWithMnemonic;
|
||||||
import com.intellij.ui.awt.RelativePoint;
|
import com.intellij.ui.awt.RelativePoint;
|
||||||
|
import com.intellij.util.ThreeState;
|
||||||
import org.jetbrains.annotations.ApiStatus;
|
import org.jetbrains.annotations.ApiStatus;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.awt.event.InputEvent;
|
import java.awt.event.InputEvent;
|
||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
@ApiStatus.Internal
|
@ApiStatus.Internal
|
||||||
@@ -52,6 +57,15 @@ public class WeighingNewActionGroup extends WeighingActionGroup implements DumbA
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AnAction @NotNull [] getChildren(@Nullable AnActionEvent e) {
|
||||||
|
AnAction[] originalChildren = super.getChildren(e);
|
||||||
|
|
||||||
|
if (e == null) return originalChildren;
|
||||||
|
|
||||||
|
return NewActionCategoryManager.filterVisibleCategories(originalChildren, e.getDataContext());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean shouldBeChosenAnyway(@NotNull AnAction action) {
|
protected boolean shouldBeChosenAnyway(@NotNull AnAction action) {
|
||||||
final Class<? extends AnAction> aClass = action.getClass();
|
final Class<? extends AnAction> aClass = action.getClass();
|
||||||
@@ -80,3 +94,41 @@ public class WeighingNewActionGroup extends WeighingActionGroup implements DumbA
|
|||||||
return Registry.is("ide.project.view.new.file.popup");
|
return Registry.is("ide.project.view.new.file.popup");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final class NewActionCategoryManager {
|
||||||
|
private static final ExtensionPointName<NewFileActionCategoryHandler> EP_NAME =
|
||||||
|
ExtensionPointName.create("com.intellij.newFileActionCategoryHandler");
|
||||||
|
|
||||||
|
public static AnAction[] filterVisibleCategories(AnAction @NotNull [] actions, @NotNull DataContext context) {
|
||||||
|
List<@NotNull NewFileActionCategoryHandler> handlers = EP_NAME.getExtensionList();
|
||||||
|
if (handlers.isEmpty()) return actions;
|
||||||
|
|
||||||
|
List<String> hiddenCategories = new ArrayList<>();
|
||||||
|
|
||||||
|
List<AnAction> visible = new ArrayList<>(actions.length);
|
||||||
|
for (AnAction action : actions) {
|
||||||
|
if (!(action instanceof NewFileActionWithCategory)) {
|
||||||
|
visible.add(action);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
String category = ((NewFileActionWithCategory)action).getCategory();
|
||||||
|
if (hiddenCategories.contains(category)) continue;
|
||||||
|
|
||||||
|
boolean isVisible = true;
|
||||||
|
for (NewFileActionCategoryHandler handler : handlers) {
|
||||||
|
if (handler.isVisible(context, category) == ThreeState.NO) {
|
||||||
|
hiddenCategories.add(category);
|
||||||
|
isVisible = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isVisible) {
|
||||||
|
visible.add(action);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return visible.toArray(AnAction.EMPTY_ARRAY);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,6 +3,7 @@ package com.intellij.ide.scratch;
|
|||||||
|
|
||||||
import com.intellij.icons.AllIcons;
|
import com.intellij.icons.AllIcons;
|
||||||
import com.intellij.ide.actions.NewActionGroup;
|
import com.intellij.ide.actions.NewActionGroup;
|
||||||
|
import com.intellij.ide.actions.NewFileActionWithCategory;
|
||||||
import com.intellij.ide.actions.RecentLocationsAction;
|
import com.intellij.ide.actions.RecentLocationsAction;
|
||||||
import com.intellij.ide.scratch.ScratchImplUtil.LanguageItem;
|
import com.intellij.ide.scratch.ScratchImplUtil.LanguageItem;
|
||||||
import com.intellij.ide.util.DeleteHandler;
|
import com.intellij.ide.util.DeleteHandler;
|
||||||
@@ -62,8 +63,7 @@ public final class ScratchFileActions {
|
|||||||
return ourCurrentBuffer;
|
return ourCurrentBuffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static final class NewFileAction extends DumbAwareAction implements NewFileActionWithCategory {
|
||||||
public static final class NewFileAction extends DumbAwareAction {
|
|
||||||
private static final String ACTION_ID = "NewScratchFile";
|
private static final String ACTION_ID = "NewScratchFile";
|
||||||
|
|
||||||
private final NotNullLazyValue<@Nls String> myActionText = NotNullLazyValue.lazy(() -> {
|
private final NotNullLazyValue<@Nls String> myActionText = NotNullLazyValue.lazy(() -> {
|
||||||
@@ -169,9 +169,14 @@ public final class ScratchFileActions {
|
|||||||
presentation.setIcon(null);
|
presentation.setIcon(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull String getCategory() {
|
||||||
|
return "Scratch";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final class NewBufferAction extends DumbAwareAction {
|
static final class NewBufferAction extends DumbAwareAction {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull ActionUpdateThread getActionUpdateThread() {
|
public @NotNull ActionUpdateThread getActionUpdateThread() {
|
||||||
@@ -388,7 +393,7 @@ public final class ScratchFileActions {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final class ShowFilesPopupAction extends DumbAwareAction {
|
static final class ShowFilesPopupAction extends DumbAwareAction {
|
||||||
@Override
|
@Override
|
||||||
public @NotNull ActionUpdateThread getActionUpdateThread() {
|
public @NotNull ActionUpdateThread getActionUpdateThread() {
|
||||||
return ActionUpdateThread.BGT;
|
return ActionUpdateThread.BGT;
|
||||||
@@ -447,7 +452,7 @@ public final class ScratchFileActions {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final class ExportToScratchAction extends DumbAwareAction {
|
static final class ExportToScratchAction extends DumbAwareAction {
|
||||||
{
|
{
|
||||||
setEnabledInModalContext(true);
|
setEnabledInModalContext(true);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -706,5 +706,8 @@
|
|||||||
<extensionPoint qualifiedName="com.intellij.mlCompletionFeaturesCollector" dynamic="true" beanClass="com.intellij.lang.LanguageExtensionPoint">
|
<extensionPoint qualifiedName="com.intellij.mlCompletionFeaturesCollector" dynamic="true" beanClass="com.intellij.lang.LanguageExtensionPoint">
|
||||||
<with attribute="implementationClass" implements="com.intellij.codeInsight.inline.completion.features.InlineCompletionFeaturesCollector"/>
|
<with attribute="implementationClass" implements="com.intellij.codeInsight.inline.completion.features.InlineCompletionFeaturesCollector"/>
|
||||||
</extensionPoint>
|
</extensionPoint>
|
||||||
|
|
||||||
|
<extensionPoint qualifiedName="com.intellij.newFileActionCategoryHandler" dynamic="true"
|
||||||
|
interface="com.intellij.ide.actions.NewFileActionCategoryHandler"/>
|
||||||
</extensionPoints>
|
</extensionPoints>
|
||||||
</idea-plugin>
|
</idea-plugin>
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
<add-to-group group-id="NewWebDevelopment" anchor="first"/>
|
<add-to-group group-id="NewWebDevelopment" anchor="first"/>
|
||||||
</group>
|
</group>
|
||||||
|
|
||||||
<group id="NewXmlDescriptor" class="com.intellij.ide.actions.NonTrivialActionGroup" popup="true" icon="AllIcons.FileTypes.Xml">
|
<group id="NewXmlDescriptor" class="com.intellij.xml.actions.CreateXmlDescriptorGroup" popup="true" icon="AllIcons.FileTypes.Xml">
|
||||||
<add-to-group group-id="NewGroup" anchor="last"/>
|
<add-to-group group-id="NewGroup" anchor="last"/>
|
||||||
</group>
|
</group>
|
||||||
|
|
||||||
|
|||||||
@@ -724,7 +724,7 @@
|
|||||||
<reference id="NewScratchFile"/>
|
<reference id="NewScratchFile"/>
|
||||||
<action id="NewDir" class="com.intellij.ide.actions.CreateDirectoryOrPackageAction"/>
|
<action id="NewDir" class="com.intellij.ide.actions.CreateDirectoryOrPackageAction"/>
|
||||||
<group class="com.intellij.ide.fileTemplates.actions.FileTemplateSeparator" id="FileTemplateSeparatorGroup"/>
|
<group class="com.intellij.ide.fileTemplates.actions.FileTemplateSeparator" id="FileTemplateSeparatorGroup"/>
|
||||||
<group id="NewWebDevelopment"/>
|
<group id="NewWebDevelopment" class="com.intellij.ide.actions.NewWebDevelopmentGroup"/>
|
||||||
<group id="NewFromTemplate" class="com.intellij.ide.fileTemplates.actions.CreateFromTemplateGroup"/>
|
<group id="NewFromTemplate" class="com.intellij.ide.fileTemplates.actions.CreateFromTemplateGroup"/>
|
||||||
</group>
|
</group>
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ package org.editorconfig.configmanagement.create;
|
|||||||
import com.intellij.application.options.CodeStyle;
|
import com.intellij.application.options.CodeStyle;
|
||||||
import com.intellij.icons.AllIcons;
|
import com.intellij.icons.AllIcons;
|
||||||
import com.intellij.ide.IdeView;
|
import com.intellij.ide.IdeView;
|
||||||
|
import com.intellij.ide.actions.NewFileActionWithCategory;
|
||||||
import com.intellij.ide.actions.OpenFileAction;
|
import com.intellij.ide.actions.OpenFileAction;
|
||||||
import com.intellij.lang.Language;
|
import com.intellij.lang.Language;
|
||||||
import com.intellij.notification.Notification;
|
import com.intellij.notification.Notification;
|
||||||
@@ -34,7 +35,7 @@ import org.jetbrains.annotations.Nullable;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public final class CreateEditorConfigAction extends AnAction implements DumbAware {
|
public final class CreateEditorConfigAction extends AnAction implements DumbAware, NewFileActionWithCategory {
|
||||||
private final static Logger LOG = Logger.getInstance(CreateEditorConfigAction.class);
|
private final static Logger LOG = Logger.getInstance(CreateEditorConfigAction.class);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -77,6 +78,11 @@ public final class CreateEditorConfigAction extends AnAction implements DumbAwar
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull String getCategory() {
|
||||||
|
return "EditorConfig";
|
||||||
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private static PsiFile getPsiFile(@NotNull Project project, @NotNull VirtualFile file) {
|
private static PsiFile getPsiFile(@NotNull Project project, @NotNull VirtualFile file) {
|
||||||
Document document = FileDocumentManager.getInstance().getDocument(file);
|
Document document = FileDocumentManager.getInstance().getDocument(file);
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import com.intellij.icons.AllIcons;
|
|||||||
import com.intellij.ide.IdeView;
|
import com.intellij.ide.IdeView;
|
||||||
import com.intellij.ide.actions.CreateDirectoryOrPackageHandler;
|
import com.intellij.ide.actions.CreateDirectoryOrPackageHandler;
|
||||||
import com.intellij.ide.actions.CreateFileFromTemplateDialog;
|
import com.intellij.ide.actions.CreateFileFromTemplateDialog;
|
||||||
|
import com.intellij.ide.actions.NewFileActionWithCategory;
|
||||||
import com.intellij.ide.fileTemplates.FileTemplate;
|
import com.intellij.ide.fileTemplates.FileTemplate;
|
||||||
import com.intellij.ide.fileTemplates.FileTemplateManager;
|
import com.intellij.ide.fileTemplates.FileTemplateManager;
|
||||||
import com.intellij.ide.fileTemplates.FileTemplateUtil;
|
import com.intellij.ide.fileTemplates.FileTemplateUtil;
|
||||||
@@ -31,12 +32,12 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
|
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
public final class CreatePackageAction extends DumbAwareAction {
|
public final class CreatePackageAction extends DumbAwareAction implements NewFileActionWithCategory {
|
||||||
private static final Logger LOG = Logger.getInstance(CreatePackageAction.class);
|
private static final Logger LOG = Logger.getInstance(CreatePackageAction.class);
|
||||||
|
|
||||||
private static final @NonNls String NAMESPACE_PACKAGE_TYPE = "Namespace Package";
|
private static final @NonNls String NAMESPACE_PACKAGE_TYPE = "Namespace Package";
|
||||||
private static final @NonNls String ORDINARY_PACKAGE_TYPE = "Package";
|
private static final @NonNls String ORDINARY_PACKAGE_TYPE = "Package";
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(@NotNull AnActionEvent e) {
|
public void actionPerformed(@NotNull AnActionEvent e) {
|
||||||
final IdeView view = e.getData(LangDataKeys.IDE_VIEW);
|
final IdeView view = e.getData(LangDataKeys.IDE_VIEW);
|
||||||
@@ -94,6 +95,11 @@ public final class CreatePackageAction extends DumbAwareAction {
|
|||||||
}, EmptyConsumer.getInstance());
|
}, EmptyConsumer.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull String getCategory() {
|
||||||
|
return "Python";
|
||||||
|
}
|
||||||
|
|
||||||
private static CreateDirectoryOrPackageHandler getNewOrdinaryPackageHandler(@NotNull Project project,
|
private static CreateDirectoryOrPackageHandler getNewOrdinaryPackageHandler(@NotNull Project project,
|
||||||
@NotNull PsiDirectory directory,
|
@NotNull PsiDirectory directory,
|
||||||
@NotNull SmartPsiElementPointer<PsiDirectory> directoryPointer) {
|
@NotNull SmartPsiElementPointer<PsiDirectory> directoryPointer) {
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package com.jetbrains.python.actions;
|
|||||||
|
|
||||||
import com.intellij.ide.actions.CreateFileFromTemplateAction;
|
import com.intellij.ide.actions.CreateFileFromTemplateAction;
|
||||||
import com.intellij.ide.actions.CreateFileFromTemplateDialog;
|
import com.intellij.ide.actions.CreateFileFromTemplateDialog;
|
||||||
|
import com.intellij.ide.actions.NewFileActionWithCategory;
|
||||||
import com.intellij.openapi.project.DumbAware;
|
import com.intellij.openapi.project.DumbAware;
|
||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
import com.intellij.psi.PsiDirectory;
|
import com.intellij.psi.PsiDirectory;
|
||||||
@@ -11,8 +12,7 @@ import com.jetbrains.python.PythonFileType;
|
|||||||
import com.jetbrains.python.pyi.PyiFileType;
|
import com.jetbrains.python.pyi.PyiFileType;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
public class CreatePythonFileAction extends CreateFileFromTemplateAction implements DumbAware, NewFileActionWithCategory {
|
||||||
public class CreatePythonFileAction extends CreateFileFromTemplateAction implements DumbAware {
|
|
||||||
public CreatePythonFileAction() {
|
public CreatePythonFileAction() {
|
||||||
super(PyBundle.messagePointer("action.create.python.file.title"), PyBundle.messagePointer("action.create.python.file.description"), PythonFileType.INSTANCE.getIcon());
|
super(PyBundle.messagePointer("action.create.python.file.title"), PyBundle.messagePointer("action.create.python.file.description"), PythonFileType.INSTANCE.getIcon());
|
||||||
}
|
}
|
||||||
@@ -30,4 +30,9 @@ public class CreatePythonFileAction extends CreateFileFromTemplateAction impleme
|
|||||||
protected String getActionName(PsiDirectory directory, @NotNull String newName, String templateName) {
|
protected String getActionName(PsiDirectory directory, @NotNull String newName, String templateName) {
|
||||||
return PyBundle.message("create.python.file.script.action", newName);
|
return PyBundle.message("create.python.file.script.action", newName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull String getCategory() {
|
||||||
|
return "Python";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||||
|
package com.intellij.xml.actions;
|
||||||
|
|
||||||
|
import com.intellij.ide.actions.NewFileActionWithCategory;
|
||||||
|
import com.intellij.ide.actions.NonTrivialActionGroup;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
final class CreateXmlDescriptorGroup extends NonTrivialActionGroup implements NewFileActionWithCategory {
|
||||||
|
@Override
|
||||||
|
public @NotNull String getCategory() {
|
||||||
|
return "XML";
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user