From 6118e329585d4f568554f3f7e41c4b1b5cfe3b52 Mon Sep 17 00:00:00 2001 From: UNV Date: Wed, 24 Sep 2025 00:22:25 +0300 Subject: [PATCH] Adding @ActionImpl annotations to New actions. Refactoring and localizing. --- .../impl/ide/actions/CreateClassAction.java | 185 ++++++++++-------- .../ide/actions/CreateModuleInfoAction.java | 98 ++++++---- .../ide/actions/CreatePackageInfoAction.java | 159 ++++++++------- .../ide/actions/NewJavaSpecialFileGroup.java | 32 +++ plugin/src/main/resources/META-INF/plugin.xml | 10 - 5 files changed, 275 insertions(+), 209 deletions(-) create mode 100644 plugin/src/main/java/com/intellij/java/impl/ide/actions/NewJavaSpecialFileGroup.java diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/actions/CreateClassAction.java b/plugin/src/main/java/com/intellij/java/impl/ide/actions/CreateClassAction.java index 567ead38b..b74453f0d 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/actions/CreateClassAction.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/actions/CreateClassAction.java @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.intellij.java.impl.ide.actions; import com.intellij.java.impl.ide.fileTemplates.JavaCreateFromTemplateHandler; @@ -24,7 +23,11 @@ import com.intellij.java.language.psi.PsiClass; import com.intellij.java.language.psi.PsiNameHelper; import com.intellij.java.language.psi.util.PsiUtil; -import consulo.application.AllIcons; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ActionImpl; +import consulo.annotation.component.ActionParentRef; +import consulo.annotation.component.ActionRef; +import consulo.annotation.component.ActionRefAnchor; import consulo.application.dumb.DumbAware; import consulo.fileTemplate.FileTemplate; import consulo.fileTemplate.FileTemplateManager; @@ -51,92 +54,106 @@ * * @since 5.1 */ +@ActionImpl(id = "JavaNewClass", parents = @ActionParentRef(value = @ActionRef(id = "NewGroup1"), anchor = ActionRefAnchor.FIRST)) public class CreateClassAction extends JavaCreateTemplateInPackageAction implements DumbAware { - public CreateClassAction() { - super(LocalizeValue.empty(), LocalizeValue.empty(), AllIcons.Nodes.Class, true); - } - - @Override - protected void buildDialog(final Project project, PsiDirectory directory, CreateFileFromTemplateDialog.Builder builder) { - builder.setTitle(JavaCoreLocalize.actionCreateNewClass()); - builder.addKind(JavaLocalize.titleClass(), AllIcons.Nodes.Class, JavaTemplateUtil.INTERNAL_CLASS_TEMPLATE_NAME); - builder.addKind(JavaLocalize.titleInterface(), AllIcons.Nodes.Interface, JavaTemplateUtil.INTERNAL_INTERFACE_TEMPLATE_NAME); - - LanguageLevel level = PsiUtil.getLanguageLevel(directory); - if (level.isAtLeast(LanguageLevel.JDK_16)) { - builder.addKind(JavaLocalize.titleRecord(), PlatformIconGroup.nodesRecord(), JavaTemplateUtil.INTERNAL_RECORD_TEMPLATE_NAME); + public CreateClassAction() { + super(LocalizeValue.empty(), LocalizeValue.empty(), PlatformIconGroup.nodesClass(), true); + } + + @Override + @RequiredReadAction + protected void buildDialog(final Project project, PsiDirectory directory, CreateFileFromTemplateDialog.Builder builder) { + builder.setTitle(JavaCoreLocalize.actionCreateNewClass()); + builder.addKind(JavaLocalize.titleClass(), PlatformIconGroup.nodesClass(), JavaTemplateUtil.INTERNAL_CLASS_TEMPLATE_NAME); + builder.addKind( + JavaLocalize.titleInterface(), + PlatformIconGroup.nodesInterface(), + JavaTemplateUtil.INTERNAL_INTERFACE_TEMPLATE_NAME + ); + + LanguageLevel level = PsiUtil.getLanguageLevel(directory); + if (level.isAtLeast(LanguageLevel.JDK_16)) { + builder.addKind(JavaLocalize.titleRecord(), PlatformIconGroup.nodesRecord(), JavaTemplateUtil.INTERNAL_RECORD_TEMPLATE_NAME); + } + if (level.isAtLeast(LanguageLevel.JDK_1_5)) { + builder.addKind(JavaLocalize.titleEnum(), PlatformIconGroup.nodesEnum(), JavaTemplateUtil.INTERNAL_ENUM_TEMPLATE_NAME); + builder.addKind( + JavaLocalize.titleAnnotation(), + PlatformIconGroup.nodesAnnotationtype(), + JavaTemplateUtil.INTERNAL_ANNOTATION_TYPE_TEMPLATE_NAME + ); + } + + for (FileTemplate template : FileTemplateManager.getInstance(project).getAllTemplates()) { + JavaCreateFromTemplateHandler handler = new JavaCreateFromTemplateHandler(); + if (handler.handlesTemplate(template) && JavaCreateFromTemplateHandler.canCreate(directory)) { + builder.addKind(LocalizeValue.of(template.getName()), JavaFileType.INSTANCE.getIcon(), template.getName()); + } + } + + builder.setValidator(new InputValidatorEx() { + @Override + public String getErrorText(String inputString) { + if (inputString.length() > 0 && !PsiNameHelper.getInstance(project).isQualifiedName(inputString)) { + return "This is not a valid Java qualified name"; + } + return null; + } + + @RequiredUIAccess + @Override + public boolean checkInput(String inputString) { + return true; + } + + @RequiredUIAccess + @Override + public boolean canClose(String inputString) { + return !StringUtil.isEmptyOrSpaces(inputString) && getErrorText(inputString) == null; + } + }); } - if (level.isAtLeast(LanguageLevel.JDK_1_5)) { - builder.addKind(JavaLocalize.titleEnum(), AllIcons.Nodes.Enum, JavaTemplateUtil.INTERNAL_ENUM_TEMPLATE_NAME); - builder.addKind(JavaLocalize.titleAnnotation(), AllIcons.Nodes.Annotationtype, JavaTemplateUtil.INTERNAL_ANNOTATION_TYPE_TEMPLATE_NAME); + + @Override + protected Class getModuleExtensionClass() { + return JavaModuleExtension.class; } - for (FileTemplate template : FileTemplateManager.getInstance(project).getAllTemplates()) { - final JavaCreateFromTemplateHandler handler = new JavaCreateFromTemplateHandler(); - if (handler.handlesTemplate(template) && JavaCreateFromTemplateHandler.canCreate(directory)) { - builder.addKind(LocalizeValue.of(template.getName()), JavaFileType.INSTANCE.getIcon(), template.getName()); - } + @Nonnull + @Override + protected LocalizeValue getErrorTitle() { + return JavaCoreLocalize.titleCannotCreateClass(); } - builder.setValidator(new InputValidatorEx() { - @Override - public String getErrorText(String inputString) { - if (inputString.length() > 0 && !PsiNameHelper.getInstance(project).isQualifiedName(inputString)) { - return "This is not a valid Java qualified name"; - } - return null; - } - - @RequiredUIAccess - @Override - public boolean checkInput(String inputString) { - return true; - } - - @RequiredUIAccess - @Override - public boolean canClose(String inputString) { - return !StringUtil.isEmptyOrSpaces(inputString) && getErrorText(inputString) == null; - } - }); - } - - @Override - protected Class getModuleExtensionClass() { - return JavaModuleExtension.class; - } - - @Nonnull - @Override - protected LocalizeValue getErrorTitle() { - return JavaCoreLocalize.titleCannotCreateClass(); - } - - @Nonnull - @Override - protected LocalizeValue getActionName(PsiDirectory directory, String newName, String templateName) { - return JavaCoreLocalize.progressCreatingClass(StringUtil.getQualifiedName(JavaDirectoryService.getInstance().getPackage(directory).getQualifiedName(), newName)); - } - - @Override - protected final PsiClass doCreate(PsiDirectory dir, String className, String templateName) throws IncorrectOperationException { - return JavaDirectoryService.getInstance().createClass(dir, className, templateName, true); - } - - @Override - protected String removeExtension(String templateName, String className) { - return StringUtil.trimEnd(className, ".java"); - } - - @Override - protected PsiElement getNavigationElement(@Nonnull PsiClass createdElement) { - return createdElement.getLBrace(); - } - - @Override - protected void postProcess(PsiClass createdElement, String templateName, Map customProperties) { - super.postProcess(createdElement, templateName, customProperties); - - moveCaretAfterNameIdentifier(createdElement); - } + @Nonnull + @Override + protected LocalizeValue getActionName(PsiDirectory directory, String newName, String templateName) { + return JavaCoreLocalize.progressCreatingClass(StringUtil.getQualifiedName( + JavaDirectoryService.getInstance().getPackage(directory).getQualifiedName(), + newName + )); + } + + @Override + protected final PsiClass doCreate(PsiDirectory dir, String className, String templateName) throws IncorrectOperationException { + return JavaDirectoryService.getInstance().createClass(dir, className, templateName, true); + } + + @Override + protected String removeExtension(String templateName, String className) { + return StringUtil.trimEnd(className, ".java"); + } + + @Override + protected PsiElement getNavigationElement(@Nonnull PsiClass createdElement) { + return createdElement.getLBrace(); + } + + @Override + @RequiredUIAccess + protected void postProcess(PsiClass createdElement, String templateName, Map customProperties) { + super.postProcess(createdElement, templateName, customProperties); + + moveCaretAfterNameIdentifier(createdElement); + } } diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/actions/CreateModuleInfoAction.java b/plugin/src/main/java/com/intellij/java/impl/ide/actions/CreateModuleInfoAction.java index 0ae34b397..8201f038b 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/actions/CreateModuleInfoAction.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/actions/CreateModuleInfoAction.java @@ -18,6 +18,7 @@ import com.intellij.java.language.impl.JavaFileType; import com.intellij.java.language.impl.psi.impl.light.AutomaticJavaModule; import com.intellij.java.language.psi.util.PsiUtil; +import consulo.annotation.component.ActionImpl; import consulo.dataContext.DataContext; import consulo.fileTemplate.AttributesDefaults; import consulo.fileTemplate.FileTemplate; @@ -26,12 +27,11 @@ import consulo.ide.action.CreateFromTemplateActionBase; import consulo.java.localize.JavaLocalize; import consulo.language.content.LanguageContentFolderScopes; -import consulo.language.editor.LangDataKeys; import consulo.language.psi.PsiDirectory; +import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; import consulo.language.psi.scope.GlobalSearchScope; import consulo.language.psi.search.FilenameIndex; -import consulo.language.util.ModuleUtilCore; import consulo.module.Module; import consulo.module.content.ProjectFileIndex; import consulo.module.content.ProjectRootManager; @@ -49,51 +49,67 @@ import static com.intellij.java.language.psi.PsiJavaModule.MODULE_INFO_CLASS; import static com.intellij.java.language.psi.PsiJavaModule.MODULE_INFO_FILE; +@ActionImpl(id = "NewModuleInfo") public class CreateModuleInfoAction extends CreateFromTemplateActionBase { - public CreateModuleInfoAction() { - super(JavaLocalize.actionCreateNewModuleInfoTitle(), JavaLocalize.actionCreateNewModuleInfoDescription(), JavaFileType.INSTANCE.getIcon()); - } - - @Override - public void update(@Nonnull AnActionEvent e) { - if (!e.getPresentation().isVisible()) { - return; + public CreateModuleInfoAction() { + super( + JavaLocalize.actionCreateNewModuleInfoTitle(), + JavaLocalize.actionCreateNewModuleInfoDescription(), + JavaFileType.INSTANCE.getIcon() + ); } - DataContext ctx = e.getDataContext(); - boolean available = Optional.ofNullable(ctx.getData(IdeView.KEY)).map(view -> getTargetDirectory(ctx, view)).filter(PsiUtil::isLanguageLevel9OrHigher).map - (ModuleUtilCore::findModuleForPsiElement).map(module -> FilenameIndex.getVirtualFilesByName(module.getProject(), MODULE_INFO_FILE, GlobalSearchScope.moduleScope(module)).isEmpty()).orElse(false); - e.getPresentation().setEnabledAndVisible(available); - } - @Nullable - @Override - protected PsiDirectory getTargetDirectory(DataContext ctx, IdeView view) { - PsiDirectory[] directories = view.getDirectories(); - if (directories.length == 1) { - PsiDirectory psiDir = directories[0]; - VirtualFile vDir = psiDir.getVirtualFile(); - ProjectFileIndex index = ProjectRootManager.getInstance(psiDir.getProject()).getFileIndex(); - if (vDir.equals(index.getSourceRootForFile(vDir)) && index.isUnderContentFolderType(vDir, LanguageContentFolderScopes.onlyProduction())) { - return psiDir; - } + @Override + public void update(@Nonnull AnActionEvent e) { + if (!e.getPresentation().isVisible()) { + return; + } + DataContext ctx = e.getDataContext(); + boolean available = Optional.ofNullable(ctx.getData(IdeView.KEY)) + .map(view -> getTargetDirectory(ctx, view)) + .filter(PsiUtil::isLanguageLevel9OrHigher) + .map(PsiElement::getModule) + .map( + module -> FilenameIndex.getVirtualFilesByName( + module.getProject(), + MODULE_INFO_FILE, + GlobalSearchScope.moduleScope(module) + ).isEmpty() + ) + .orElse(false); + e.getPresentation().setEnabledAndVisible(available); } - return null; - } + @Nullable + @Override + protected PsiDirectory getTargetDirectory(DataContext ctx, IdeView view) { + PsiDirectory[] directories = view.getDirectories(); + if (directories.length == 1) { + PsiDirectory psiDir = directories[0]; + VirtualFile vDir = psiDir.getVirtualFile(); + ProjectFileIndex index = ProjectRootManager.getInstance(psiDir.getProject()).getFileIndex(); + if (vDir.equals(index.getSourceRootForFile(vDir)) + && index.isUnderContentFolderType(vDir, LanguageContentFolderScopes.onlyProduction())) { + return psiDir; + } + } + + return null; + } - @Override - protected FileTemplate getTemplate(@Nonnull Project project, @Nonnull PsiDirectory dir) { - return FileTemplateManager.getInstance(project).getInternalTemplate(INTERNAL_MODULE_INFO_TEMPLATE_NAME); - } + @Override + protected FileTemplate getTemplate(@Nonnull Project project, @Nonnull PsiDirectory dir) { + return FileTemplateManager.getInstance(project).getInternalTemplate(INTERNAL_MODULE_INFO_TEMPLATE_NAME); + } - @Override - protected AttributesDefaults getAttributesDefaults(@Nonnull DataContext ctx) { - return new AttributesDefaults(MODULE_INFO_CLASS).withFixedName(true); - } + @Override + protected AttributesDefaults getAttributesDefaults(@Nonnull DataContext ctx) { + return new AttributesDefaults(MODULE_INFO_CLASS).withFixedName(true); + } - @Override - protected Map getLiveTemplateDefaults(@Nonnull DataContext ctx, @Nonnull PsiFile file) { - Module module = ctx.getData(LangDataKeys.MODULE); - return Collections.singletonMap("MODULE_NAME", module != null ? AutomaticJavaModule.moduleName(module.getName()) : "module_name"); - } + @Override + protected Map getLiveTemplateDefaults(@Nonnull DataContext ctx, @Nonnull PsiFile file) { + Module module = ctx.getData(Module.KEY); + return Collections.singletonMap("MODULE_NAME", module != null ? AutomaticJavaModule.moduleName(module.getName()) : "module_name"); + } } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/actions/CreatePackageInfoAction.java b/plugin/src/main/java/com/intellij/java/impl/ide/actions/CreatePackageInfoAction.java index f28d0106d..9fb221512 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ide/actions/CreatePackageInfoAction.java +++ b/plugin/src/main/java/com/intellij/java/impl/ide/actions/CreatePackageInfoAction.java @@ -20,6 +20,8 @@ import com.intellij.java.language.psi.PsiJavaPackage; import com.intellij.java.language.psi.PsiNameHelper; import com.intellij.java.language.psi.util.PsiUtil; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ActionImpl; import consulo.application.dumb.DumbAware; import consulo.dataContext.DataContext; import consulo.fileTemplate.AttributesDefaults; @@ -28,7 +30,6 @@ import consulo.ide.IdeView; import consulo.ide.action.CreateFromTemplateActionBase; import consulo.ide.localize.IdeLocalize; -import consulo.java.impl.JavaBundle; import consulo.java.localize.JavaLocalize; import consulo.language.content.LanguageContentFolderScopes; import consulo.language.psi.PsiDirectory; @@ -36,6 +37,7 @@ import consulo.module.content.ProjectRootManager; import consulo.platform.base.localize.CommonLocalize; import consulo.project.Project; +import consulo.ui.annotation.RequiredUIAccess; import consulo.ui.ex.action.AnActionEvent; import consulo.ui.ex.awt.Messages; import consulo.ui.ex.awt.UIUtil; @@ -47,89 +49,98 @@ /** * @author Bas Leijdekkers */ +@ActionImpl(id = "NewPackageInfo") public class CreatePackageInfoAction extends CreateFromTemplateActionBase implements DumbAware { - public CreatePackageInfoAction() { - super(JavaLocalize.actionCreateNewPackageInfoTitle(), JavaLocalize.actionCreateNewPackageInfoDescription(), JavaFileType.INSTANCE.getIcon()); - } - - @Nullable - @Override - protected PsiDirectory getTargetDirectory(DataContext dataContext, IdeView view) { - final PsiDirectory[] directories = view.getDirectories(); - for (PsiDirectory directory : directories) { - final PsiJavaPackage aPackage = JavaDirectoryService.getInstance().getPackage(directory); - if (aPackage == null) { - continue; - } - if (directory.findFile(PsiJavaPackage.PACKAGE_INFO_FILE) != null) { - Messages.showErrorDialog( - dataContext.getData(Project.KEY), - JavaBundle.message("error.package.already.contains.package-info", aPackage.getQualifiedName()), - IdeLocalize.titleCannotCreateFile().get() + public CreatePackageInfoAction() { + super( + JavaLocalize.actionCreateNewPackageInfoTitle(), + JavaLocalize.actionCreateNewPackageInfoDescription(), + JavaFileType.INSTANCE.getIcon() ); - return null; - } else if (directory.findFile("package.html") != null) { - if (Messages.showOkCancelDialog( - dataContext.getData(Project.KEY), - JavaBundle.message("error.package.already.contains.package.html", aPackage.getQualifiedName()), - JavaBundle.message("error.package.html.found.title"), - IdeLocalize.buttonCreate().get(), - CommonLocalize.buttonCancel().get(), - UIUtil.getQuestionIcon() - ) != Messages.OK) { - return null; - } - } - } - return super.getTargetDirectory(dataContext, view); - } - @Override - public void update(AnActionEvent e) { - if (!e.getPresentation().isVisible()) { - return; + @Nullable + @Override + @RequiredUIAccess + protected PsiDirectory getTargetDirectory(DataContext dataContext, IdeView view) { + PsiDirectory[] directories = view.getDirectories(); + for (PsiDirectory directory : directories) { + PsiJavaPackage aPackage = JavaDirectoryService.getInstance().getPackage(directory); + if (aPackage == null) { + continue; + } + if (directory.findFile(PsiJavaPackage.PACKAGE_INFO_FILE) != null) { + Messages.showErrorDialog( + dataContext.getData(Project.KEY), + JavaLocalize.errorPackageAlreadyContainsPackageInfo(aPackage.getQualifiedName()).get(), + IdeLocalize.titleCannotCreateFile().get() + ); + return null; + } + else if (directory.findFile("package.html") != null) { + if (Messages.showOkCancelDialog( + dataContext.getData(Project.KEY), + JavaLocalize.errorPackageAlreadyContainsPackageHtml(aPackage.getQualifiedName()).get(), + JavaLocalize.errorPackageHtmlFoundTitle().get(), + IdeLocalize.buttonCreate().get(), + CommonLocalize.buttonCancel().get(), + UIUtil.getQuestionIcon() + ) != Messages.OK) { + return null; + } + } + + } + return super.getTargetDirectory(dataContext, view); } - e.getPresentation().setEnabledAndVisible(isAvailable(e.getDataContext())); - } + @Override + @RequiredReadAction + public void update(AnActionEvent e) { + if (!e.getPresentation().isVisible()) { + return; + } - private static boolean isAvailable(DataContext dataContext) { - final Project project = dataContext.getData(Project.KEY); - final IdeView view = dataContext.getData(IdeView.KEY); - if (project == null || view == null) { - return false; - } - final PsiDirectory[] directories = view.getDirectories(); - if (directories.length == 0) { - return false; + e.getPresentation().setEnabledAndVisible(isAvailable(e.getDataContext())); } - final ProjectFileIndex projectFileIndex = ProjectRootManager.getInstance(project).getFileIndex(); - final JavaDirectoryService directoryService = JavaDirectoryService.getInstance(); - final PsiNameHelper nameHelper = PsiNameHelper.getInstance(project); - for (PsiDirectory directory : directories) { - if (projectFileIndex.isUnderContentFolderType(directory.getVirtualFile(), LanguageContentFolderScopes.productionAndTest()) && PsiUtil.isLanguageLevel5OrHigher(directory)) { - final PsiJavaPackage aPackage = directoryService.getPackage(directory); - if (aPackage != null) { - final String qualifiedName = aPackage.getQualifiedName(); - if (StringUtil.isEmpty(qualifiedName) || nameHelper.isQualifiedName(qualifiedName)) { - return true; - } - } - } + @RequiredReadAction + private static boolean isAvailable(DataContext dataContext) { + Project project = dataContext.getData(Project.KEY); + IdeView view = dataContext.getData(IdeView.KEY); + if (project == null || view == null) { + return false; + } + PsiDirectory[] directories = view.getDirectories(); + if (directories.length == 0) { + return false; + } + ProjectFileIndex projectFileIndex = ProjectRootManager.getInstance(project).getFileIndex(); + JavaDirectoryService directoryService = JavaDirectoryService.getInstance(); + PsiNameHelper nameHelper = PsiNameHelper.getInstance(project); + for (PsiDirectory directory : directories) { + if (projectFileIndex.isUnderContentFolderType(directory.getVirtualFile(), LanguageContentFolderScopes.productionAndTest()) + && PsiUtil.isLanguageLevel5OrHigher(directory)) { + PsiJavaPackage aPackage = directoryService.getPackage(directory); + if (aPackage != null) { + String qualifiedName = aPackage.getQualifiedName(); + if (StringUtil.isEmpty(qualifiedName) || nameHelper.isQualifiedName(qualifiedName)) { + return true; + } + } + } + } + return false; } - return false; - } - @Nullable - @Override - public AttributesDefaults getAttributesDefaults(DataContext dataContext) { - return new AttributesDefaults(INTERNAL_PACKAGE_INFO_TEMPLATE_NAME).withFixedName(true); - } + @Nullable + @Override + public AttributesDefaults getAttributesDefaults(DataContext dataContext) { + return new AttributesDefaults(INTERNAL_PACKAGE_INFO_TEMPLATE_NAME).withFixedName(true); + } - @Override - protected FileTemplate getTemplate(Project project, PsiDirectory dir) { - return FileTemplateManager.getInstance(project).getInternalTemplate(INTERNAL_PACKAGE_INFO_TEMPLATE_NAME); - } + @Override + protected FileTemplate getTemplate(Project project, PsiDirectory dir) { + return FileTemplateManager.getInstance(project).getInternalTemplate(INTERNAL_PACKAGE_INFO_TEMPLATE_NAME); + } } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/java/impl/ide/actions/NewJavaSpecialFileGroup.java b/plugin/src/main/java/com/intellij/java/impl/ide/actions/NewJavaSpecialFileGroup.java new file mode 100644 index 000000000..63510d982 --- /dev/null +++ b/plugin/src/main/java/com/intellij/java/impl/ide/actions/NewJavaSpecialFileGroup.java @@ -0,0 +1,32 @@ +package com.intellij.java.impl.ide.actions; + +import consulo.annotation.component.ActionImpl; +import consulo.annotation.component.ActionParentRef; +import consulo.annotation.component.ActionRef; +import consulo.annotation.component.ActionRefAnchor; +import consulo.application.dumb.DumbAware; +import consulo.localize.LocalizeValue; +import consulo.ui.ex.action.DefaultActionGroup; +import consulo.ui.ex.action.IdeActions; + +/** + * @author UNV + * @since 2025-09-23 + */ +@ActionImpl( + id = "NewJavaSpecialFile", + children = { + @ActionRef(type = CreatePackageInfoAction.class), + @ActionRef(type = CreateModuleInfoAction.class) + }, + parents = @ActionParentRef( + value = @ActionRef(id = IdeActions.GROUP_NEW), + anchor = ActionRefAnchor.AFTER, + relatedToAction = @ActionRef(id = "NewDir") + ) +) +public class NewJavaSpecialFileGroup extends DefaultActionGroup implements DumbAware { + public NewJavaSpecialFileGroup() { + super(LocalizeValue.empty(), false); + } +} diff --git a/plugin/src/main/resources/META-INF/plugin.xml b/plugin/src/main/resources/META-INF/plugin.xml index e06a733e1..98eeba4fd 100644 --- a/plugin/src/main/resources/META-INF/plugin.xml +++ b/plugin/src/main/resources/META-INF/plugin.xml @@ -39,12 +39,6 @@ - - - - - - @@ -66,10 +60,6 @@ - - - -