mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-06 11:50:54 +07:00
javafx: hide create actions for projects without javafx available (IDEA-240037)
it's still possible to create java class and extends it from Application as well as custom .fxml file manually GitOrigin-RevId: 0158db39ab175c1bc849d3d9843f7c961c568586
This commit is contained in:
committed by
intellij-monorepo-bot
parent
b266bd501c
commit
623f6f42c6
@@ -1023,8 +1023,8 @@
|
||||
<favoriteNodeProvider implementation="com.intellij.ide.favoritesTreeView.PsiFieldFavoriteNodeProvider"/>
|
||||
<favoriteNodeProvider implementation="com.intellij.ide.favoritesTreeView.PsiClassFavoriteNodeProvider"/>
|
||||
<defaultTemplatePropertiesProvider implementation="com.intellij.ide.fileTemplates.TemplatePackagePropertyProvider"/>
|
||||
<createFromTemplateHandler implementation="com.intellij.ide.fileTemplates.JavaCreateFromTemplateHandler"/>
|
||||
<createFromTemplateHandler implementation="com.intellij.ide.fileTemplates.JavaInternalTemplatesHandler"/>
|
||||
<createFromTemplateHandler implementation="com.intellij.ide.fileTemplates.JavaCreateFromTemplateHandler" id="java"/>
|
||||
<createFromTemplateHandler implementation="com.intellij.ide.fileTemplates.JavaInternalTemplatesHandler" order="after java"/>
|
||||
<liveTemplateOptionalProcessor implementation="com.intellij.codeInsight.template.impl.ShortenToStaticImportProcessor"/>
|
||||
<liveTemplateOptionalProcessor implementation="com.intellij.codeInsight.template.impl.ShortenFQNamesProcessor"/>
|
||||
<liveTemplateOptionalProcessor implementation="com.intellij.codeInsight.template.impl.CodeBlockReformattingProcessor"/>
|
||||
|
||||
@@ -6,10 +6,7 @@ import com.intellij.codeInsight.daemon.JavaErrorBundle;
|
||||
import com.intellij.codeInsight.daemon.impl.analysis.HighlightClassUtil;
|
||||
import com.intellij.codeInsight.daemon.impl.analysis.HighlightingFeature;
|
||||
import com.intellij.core.JavaPsiBundle;
|
||||
import com.intellij.ide.fileTemplates.FileTemplate;
|
||||
import com.intellij.ide.fileTemplates.FileTemplateManager;
|
||||
import com.intellij.ide.fileTemplates.JavaCreateFromTemplateHandler;
|
||||
import com.intellij.ide.fileTemplates.JavaTemplateUtil;
|
||||
import com.intellij.ide.fileTemplates.*;
|
||||
import com.intellij.ide.highlighter.JavaFileType;
|
||||
import com.intellij.java.JavaBundle;
|
||||
import com.intellij.openapi.project.DumbAware;
|
||||
@@ -48,9 +45,12 @@ public class CreateClassAction extends JavaCreateTemplateInPackageAction<PsiClas
|
||||
builder.addKind(JavaPsiBundle.message("node.annotation.tooltip"), PlatformIcons.ANNOTATION_TYPE_ICON, JavaTemplateUtil.INTERNAL_ANNOTATION_TYPE_TEMPLATE_NAME);
|
||||
}
|
||||
|
||||
PsiDirectory[] dirs = {directory};
|
||||
for (FileTemplate template : FileTemplateManager.getInstance(project).getAllTemplates()) {
|
||||
final JavaCreateFromTemplateHandler handler = new JavaCreateFromTemplateHandler();
|
||||
if (handler.handlesTemplate(template) && JavaCreateFromTemplateHandler.canCreate(directory)) {
|
||||
final @NotNull CreateFromTemplateHandler handler = FileTemplateUtil.findHandler(template);
|
||||
if (handler instanceof JavaCreateFromTemplateHandler &&
|
||||
handler.handlesTemplate(template) &&
|
||||
handler.canCreate(dirs)) {
|
||||
builder.addKind(template.getName(), JavaFileType.INSTANCE.getIcon(), template.getName());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -83,6 +83,7 @@
|
||||
<predefinedMigrationMapProvider implementation="org.jetbrains.plugins.javaFX.refactoring.migration.JavaFx9Migration"/>
|
||||
<postStartupActivity implementation="org.jetbrains.plugins.javaFX.fxml.JavaFxModuleUtil$JavaFxDetectionStartupActivity"/>
|
||||
<runConfigurationExtension implementation="org.jetbrains.plugins.javaFX.execution.JavaFxRunConfigurationExtension"/>
|
||||
<createFromTemplateHandler implementation="org.jetbrains.plugins.javaFX.actions.JavaFxCreateFromTemplateHandler" order="before java"/>
|
||||
</extensions>
|
||||
|
||||
<projectListeners>
|
||||
|
||||
@@ -27,14 +27,17 @@ import com.intellij.openapi.roots.ProjectFileIndex;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.JavaPsiFacade;
|
||||
import com.intellij.psi.PsiDirectory;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.util.PathUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes;
|
||||
import org.jetbrains.plugins.javaFX.JavaFXBundle;
|
||||
import org.jetbrains.plugins.javaFX.fxml.JavaFxCommonNames;
|
||||
import org.jetbrains.plugins.javaFX.fxml.JavaFxFileTypeFactory;
|
||||
|
||||
import java.util.Arrays;
|
||||
@@ -123,6 +126,10 @@ public class CreateFxmlFileAction extends CreateFromTemplateActionBase {
|
||||
if (project == null || view == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (JavaPsiFacade.getInstance(project).findClass(JavaFxCommonNames.JAVAFX_SCENE_NODE, GlobalSearchScope.allScope(project)) == null) {
|
||||
return false;
|
||||
}
|
||||
final PsiDirectory[] directories = view.getDirectories();
|
||||
if (directories.length == 0) {
|
||||
return false;
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
// 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.
|
||||
package org.jetbrains.plugins.javaFX.actions;
|
||||
|
||||
import com.intellij.ide.fileTemplates.FileTemplate;
|
||||
import com.intellij.ide.fileTemplates.JavaCreateFromTemplateHandler;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.JavaPsiFacade;
|
||||
import com.intellij.psi.PsiDirectory;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.plugins.javaFX.fxml.JavaFxCommonNames;
|
||||
|
||||
public class JavaFxCreateFromTemplateHandler extends JavaCreateFromTemplateHandler {
|
||||
@Override
|
||||
public boolean handlesTemplate(@NotNull FileTemplate template) {
|
||||
return "JavaFXApplication".equals(template.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canCreate(PsiDirectory @NotNull [] dirs) {
|
||||
if (dirs.length > 0) {
|
||||
Project project = dirs[0].getProject();
|
||||
if (JavaPsiFacade.getInstance(project).findClass(JavaFxCommonNames.JAVAFX_SCENE_NODE, GlobalSearchScope.allScope(project)) == null) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return super.canCreate(dirs);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user