mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IJPL-234888 cleanup: delete obsolete implementations of FavoriteNodeProvider
The platform uses them only for migrating settings if the implementation inherits from AbstractUrlFavoriteConverter, so other implementations actually aren't used. GitOrigin-RevId: 63e191fe785f3ee6e48bddd6fa788fc4df23c811
This commit is contained in:
committed by
intellij-monorepo-bot
parent
ac8765412d
commit
1a8b134df6
@@ -507,8 +507,6 @@
|
||||
|
||||
<patterns.patternClass className="com.intellij.patterns.PsiJavaPatterns" alias="java"/>
|
||||
|
||||
<favoriteNodeProvider implementation="com.intellij.ide.favoritesTreeView.UsageFavoriteNodeProvider"/>
|
||||
|
||||
<configurationType implementation="com.intellij.execution.application.ApplicationConfigurationType"/>
|
||||
<configurationType implementation="com.intellij.execution.jar.JarApplicationConfigurationType"/>
|
||||
<configurationType implementation="com.intellij.execution.scratch.JavaScratchConfigurationType"/>
|
||||
|
||||
-254
@@ -1,254 +0,0 @@
|
||||
// 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.favoritesTreeView;
|
||||
|
||||
import com.intellij.ide.projectView.ViewSettings;
|
||||
import com.intellij.ide.util.treeView.AbstractTreeNode;
|
||||
import com.intellij.openapi.actionSystem.CommonDataKeys;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.ModuleUtilCore;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.usageView.UsageInfo;
|
||||
import com.intellij.usages.Usage;
|
||||
import com.intellij.usages.UsageInfo2UsageAdapter;
|
||||
import com.intellij.usages.UsageView;
|
||||
import com.intellij.usages.impl.NullUsage;
|
||||
import com.intellij.usages.rules.UsageInFile;
|
||||
import com.intellij.usages.rules.UsageInFiles;
|
||||
import com.intellij.util.SmartList;
|
||||
import com.intellij.util.containers.MultiMap;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.TreeSet;
|
||||
|
||||
@Deprecated(forRemoval = true)
|
||||
@ApiStatus.Internal
|
||||
public class UsageFavoriteNodeProvider extends FavoriteNodeProvider {
|
||||
private static final Map<String, TreeSet<WorkingSetSerializable>> ourSerializables = new HashMap<>();
|
||||
private static final Comparator<VirtualFile> VIRTUAL_FILE_COMPARATOR = Comparator.comparing(VirtualFile::getPath);
|
||||
private static final Logger LOG = Logger.getInstance(UsageFavoriteNodeProvider.class);
|
||||
|
||||
static {
|
||||
final TreeSet<WorkingSetSerializable> usageSet = createSet();
|
||||
final UsageSerializable serializable = new UsageSerializable();
|
||||
ourSerializables.put(serializable.getId(), usageSet);
|
||||
usageSet.add(serializable);
|
||||
|
||||
final TreeSet<WorkingSetSerializable> fileSet = createSet();
|
||||
final FileSerializable fileSerializable = new FileSerializable();
|
||||
ourSerializables.put(fileSerializable.getId(), fileSet);
|
||||
fileSet.add(fileSerializable);
|
||||
|
||||
final TreeSet<WorkingSetSerializable> noteSet = createSet();
|
||||
final NoteSerializable noteSerializable = new NoteSerializable();
|
||||
ourSerializables.put(noteSerializable.getId(), noteSet);
|
||||
noteSet.add(noteSerializable);
|
||||
}
|
||||
|
||||
private static TreeSet<WorkingSetSerializable> createSet() {
|
||||
return new TreeSet<>((o1, o2) -> {
|
||||
assert o1.getId().equals(o2.getId());
|
||||
return Integer.compare(o1.getVersion(), o2.getVersion());
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<AbstractTreeNode<?>> getFavoriteNodes(DataContext context, @NotNull ViewSettings viewSettings) {
|
||||
final Project project = CommonDataKeys.PROJECT.getData(context);
|
||||
if (project == null) {
|
||||
return null;
|
||||
}
|
||||
final Usage[] usages = UsageView.USAGES_KEY.getData(context);
|
||||
if (usages != null) {
|
||||
final MultiMap<VirtualFile, Usage> map = new MultiMap<>();
|
||||
final List<Usage> nonMapped = new ArrayList<>();
|
||||
for (Usage usage : usages) {
|
||||
if (usage instanceof UsageInFile) {
|
||||
map.putValue(((UsageInFile)usage).getFile(), usage);
|
||||
}
|
||||
else if (usage instanceof UsageInFiles) {
|
||||
final VirtualFile[] files = ((UsageInFiles)usage).getFiles();
|
||||
for (VirtualFile file : files) {
|
||||
map.putValue(file, usage);
|
||||
}
|
||||
}
|
||||
else {
|
||||
nonMapped.add(usage);
|
||||
}
|
||||
}
|
||||
|
||||
final TreeSet<VirtualFile> keys = new TreeSet<>(VIRTUAL_FILE_COMPARATOR);
|
||||
keys.addAll(map.keySet());
|
||||
final List<AbstractTreeNode<?>> result = new SmartList<>();
|
||||
for (VirtualFile key : keys) {
|
||||
final FileGroupingProjectNode grouping = new FileGroupingProjectNode(project, new File(key.getPath()), viewSettings);
|
||||
result.add(grouping);
|
||||
final Collection<Usage> subUsages = map.get(key);
|
||||
for (Usage usage : subUsages) {
|
||||
if (usage instanceof UsageInfo2UsageAdapter) {
|
||||
final UsageProjectTreeNode node =
|
||||
new UsageProjectTreeNode(project, ((UsageInfo2UsageAdapter)usage).getUsageInfo(), viewSettings);
|
||||
grouping.addChild(node);
|
||||
}
|
||||
else if (!NullUsage.INSTANCE.equals(usage)) {
|
||||
grouping.addChild(new NoteProjectNode(project, new NoteNode(usage.getPresentation().getPlainText(), true), viewSettings));
|
||||
}
|
||||
}
|
||||
}
|
||||
for (Usage usage : nonMapped) {
|
||||
if (usage instanceof UsageInfo2UsageAdapter) {
|
||||
final UsageProjectTreeNode node =
|
||||
new UsageProjectTreeNode(project, ((UsageInfo2UsageAdapter)usage).getUsageInfo(), viewSettings);
|
||||
result.add(node);
|
||||
}
|
||||
else if (!NullUsage.INSTANCE.equals(usage)) {
|
||||
result.add(new NoteProjectNode(project, new NoteNode(usage.getPresentation().getPlainText(), true), viewSettings));
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AbstractTreeNode createNode(Project project, Object element, @NotNull ViewSettings viewSettings) {
|
||||
if (element instanceof UsageInfo) {
|
||||
return new UsageProjectTreeNode(project, (UsageInfo)element, viewSettings);
|
||||
}
|
||||
if (element instanceof InvalidUsageNoteNode) {
|
||||
return new InvalidUsageNoteProjectNode(project, (InvalidUsageNoteNode)element, viewSettings);
|
||||
}
|
||||
if (element instanceof NoteNode) {
|
||||
return new NoteProjectNode(project, (NoteNode)element, viewSettings);
|
||||
}
|
||||
if (element instanceof File) {
|
||||
return new FileGroupingProjectNode(project, (File)element, viewSettings);
|
||||
}
|
||||
return super.createNode(project, element, viewSettings);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PsiElement getPsiElement(Object element) {
|
||||
if (element instanceof UsageInfo) {
|
||||
return ((UsageInfo)element).getElement();
|
||||
}
|
||||
return super.getPsiElement(element);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean elementContainsFile(Object element, VirtualFile vFile) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getElementWeight(Object element, boolean isSortByType) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getElementLocation(Object element) {
|
||||
if (element instanceof UsageInfo) {
|
||||
final PsiElement psiElement = ((UsageInfo)element).getElement();
|
||||
final PsiFile file = psiElement == null ? null : psiElement.getContainingFile();
|
||||
return file == null ? null : file.getPresentation().getPresentableText();//+- // todo do smthg for invalid usage
|
||||
}
|
||||
if (element instanceof File) {
|
||||
return ((File)element).getParent();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInvalidElement(Object element) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getFavoriteTypeId() {
|
||||
return "usage";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getElementUrl(Object element) {
|
||||
final TreeSet<WorkingSetSerializable> serializables = ourSerializables.get(element.getClass().getName());
|
||||
if (serializables != null && !serializables.isEmpty()) {
|
||||
final WorkingSetSerializable last = serializables.last();
|
||||
try {
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
sb.append(last.getId());
|
||||
sb.append(' ');
|
||||
sb.append(last.getVersion());
|
||||
sb.append(' ');
|
||||
|
||||
last.serializeMe(element, sb);
|
||||
return sb.toString();
|
||||
}
|
||||
catch (IOException e) {
|
||||
LOG.info(e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getElementModuleName(Object element) {
|
||||
if (element instanceof UsageInfo) {
|
||||
PsiElement psiElement = ((UsageInfo)element).getElement();
|
||||
Module module = psiElement == null ? null : ModuleUtilCore.findModuleForPsiElement(psiElement);
|
||||
return module == null ? null : module.getName();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object[] createPathFromUrl(Project project, String url, String moduleName) {
|
||||
try {
|
||||
final List<String> parts = StringUtil.split(url, " ", true);
|
||||
if (parts.size() < 3) return null;
|
||||
|
||||
final String id = parts.get(0);
|
||||
final TreeSet<WorkingSetSerializable> set = ourSerializables.get(id);
|
||||
if (set != null && !set.isEmpty()) {
|
||||
final int version = Integer.parseInt(parts.get(1));
|
||||
final String cut = StringUtil.join(parts.subList(2, parts.size()), " ");
|
||||
for (Iterator<WorkingSetSerializable> iterator = set.descendingIterator(); iterator.hasNext(); ) {
|
||||
WorkingSetSerializable serializable = iterator.next();
|
||||
if (serializable.getVersion() == version) {
|
||||
return readWithSerializable(project, cut, serializable);
|
||||
}
|
||||
}
|
||||
readWithSerializable(project, cut, set.last());
|
||||
}
|
||||
}
|
||||
catch (IOException e) {
|
||||
LOG.info(e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static Object[] readWithSerializable(Project project, String is, WorkingSetSerializable serializable)
|
||||
throws IOException {
|
||||
Object obj = serializable.deserializeMe(project, is);
|
||||
if (obj == null) {
|
||||
obj = serializable.deserializeMeInvalid(project, is);
|
||||
}
|
||||
return obj == null ? null : new Object[]{obj};
|
||||
}
|
||||
}
|
||||
@@ -74,8 +74,6 @@
|
||||
<elementDescriptionProvider implementation="com.intellij.lang.properties.PropertiesDescriptionProvider"/>
|
||||
<fileType name="ResourceBundle" fieldName="INSTANCE" implementationClass="com.intellij.lang.properties.editor.ResourceBundleFileType"/>
|
||||
|
||||
<favoriteNodeProvider implementation="com.intellij.lang.properties.ide.favoritesTreeView.ResourcesFavoriteNodeProvider"/>
|
||||
|
||||
<localInspection language="Properties" shortName="UnusedProperty" bundle="messages.PropertiesBundle"
|
||||
key="unused.property.inspection.display.name"
|
||||
groupKey="properties.files.inspection.group.display.name" enabledByDefault="true" level="WARNING"
|
||||
|
||||
-120
@@ -1,120 +0,0 @@
|
||||
// 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.lang.properties.ide.favoritesTreeView;
|
||||
|
||||
import com.intellij.ide.favoritesTreeView.FavoriteNodeProvider;
|
||||
import com.intellij.ide.projectView.ViewSettings;
|
||||
import com.intellij.ide.util.treeView.AbstractTreeNode;
|
||||
import com.intellij.lang.properties.PropertiesImplUtil;
|
||||
import com.intellij.lang.properties.ResourceBundle;
|
||||
import com.intellij.lang.properties.ResourceBundleImpl;
|
||||
import com.intellij.lang.properties.projectView.ResourceBundleNode;
|
||||
import com.intellij.lang.properties.psi.PropertiesFile;
|
||||
import com.intellij.openapi.actionSystem.CommonDataKeys;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiManager;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
final class ResourcesFavoriteNodeProvider extends FavoriteNodeProvider {
|
||||
@Override
|
||||
public Collection<AbstractTreeNode<?>> getFavoriteNodes(final DataContext context, final @NotNull ViewSettings viewSettings) {
|
||||
final Project project = CommonDataKeys.PROJECT.getData(context);
|
||||
if (project == null) {
|
||||
return null;
|
||||
}
|
||||
final ResourceBundle[] resourceBundles = ResourceBundle.ARRAY_DATA_KEY.getData(context);
|
||||
//on bundles nodes
|
||||
if (resourceBundles != null) {
|
||||
final Collection<AbstractTreeNode<?>> result = new ArrayList<>();
|
||||
for (ResourceBundle bundle : resourceBundles) {
|
||||
result.add(new ResourceBundleNode(project, bundle, viewSettings));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean elementContainsFile(final Object element, final VirtualFile vFile) {
|
||||
if (element instanceof ResourceBundle bundle) {
|
||||
final List<PropertiesFile> propertiesFiles = bundle.getPropertiesFiles();
|
||||
for (PropertiesFile file : propertiesFiles) {
|
||||
final VirtualFile virtualFile = file.getVirtualFile();
|
||||
if (virtualFile == null) continue;
|
||||
if (vFile.getPath().equals(virtualFile.getPath())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getElementWeight(final Object element, final boolean isSortByType) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getElementLocation(final Object element) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInvalidElement(final Object element) {
|
||||
if (element instanceof ResourceBundle resourceBundle) {
|
||||
List<PropertiesFile> propertiesFiles = resourceBundle.getPropertiesFiles();
|
||||
if (propertiesFiles.size() == 1) {
|
||||
//todo result.add(new PsiFileNode(myProject, propertiesFiles.iterator().next(), this));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getFavoriteTypeId() {
|
||||
return "resource_bundle";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getElementUrl(final Object element) {
|
||||
if (element instanceof ResourceBundleImpl) {
|
||||
return ((ResourceBundleImpl)element).getUrl();
|
||||
}
|
||||
else if (element instanceof PsiFile[] files) {
|
||||
|
||||
ResourceBundle bundle = null;
|
||||
for (PsiFile file : files) {
|
||||
PropertiesFile propertiesFile = PropertiesImplUtil.getPropertiesFile(file);
|
||||
if (propertiesFile == null) return null;
|
||||
ResourceBundle currentBundle = propertiesFile.getResourceBundle();
|
||||
if (bundle == null) {
|
||||
bundle = currentBundle;
|
||||
}
|
||||
else if (!PsiManager.getInstance(bundle.getProject()).areElementsEquivalent(bundle.getDefaultPropertiesFile().getContainingFile(),
|
||||
currentBundle.getDefaultPropertiesFile().getContainingFile())) {
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return getElementUrl(bundle);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getElementModuleName(final Object element) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object[] createPathFromUrl(final Project project, final String url, final String moduleName) {
|
||||
return new Object[]{PropertiesImplUtil.createByUrl(url, project)};
|
||||
}
|
||||
}
|
||||
@@ -46,7 +46,6 @@
|
||||
<projectConfigurable groupId="editor" instance="com.intellij.uiDesigner.GuiDesignerConfigurable" id="project.propGUI" key="title.gui.designer"
|
||||
bundle="messages.UIDesignerBundle"/>
|
||||
|
||||
<favoriteNodeProvider implementation="com.intellij.uiDesigner.projectView.UIDesignerFavoriteNodeProvider"/>
|
||||
<renameHandler implementation="com.intellij.uiDesigner.projectView.FormRenameHandler"/>
|
||||
<implicitUsageProvider implementation="com.intellij.uiDesigner.binding.UIDesignerImplicitUsageProvider"/>
|
||||
<usageTypeProvider implementation="com.intellij.uiDesigner.binding.FormUsageTypeProvider"/>
|
||||
|
||||
-148
@@ -1,148 +0,0 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
|
||||
package com.intellij.uiDesigner.projectView;
|
||||
|
||||
import com.intellij.ide.favoritesTreeView.FavoriteNodeProvider;
|
||||
import com.intellij.ide.projectView.ViewSettings;
|
||||
import com.intellij.ide.util.treeView.AbstractTreeNode;
|
||||
import com.intellij.openapi.actionSystem.CommonDataKeys;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.fileTypes.FileType;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.ModuleUtil;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.JavaPsiFacade;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiManager;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.uiDesigner.GuiFormFileType;
|
||||
import com.intellij.uiDesigner.compiler.Utils;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
|
||||
public final class UIDesignerFavoriteNodeProvider extends FavoriteNodeProvider {
|
||||
@Override
|
||||
public @Nullable Collection<AbstractTreeNode<?>> getFavoriteNodes(DataContext context, final @NotNull ViewSettings viewSettings) {
|
||||
Project project = CommonDataKeys.PROJECT.getData(context);
|
||||
if (project == null) return null;
|
||||
Form[] forms = Form.DATA_KEY.getData(context);
|
||||
if (forms != null) {
|
||||
Collection<AbstractTreeNode<?>> result = new ArrayList<>();
|
||||
Set<PsiClass> bindClasses = new HashSet<>();
|
||||
for (Form form: forms) {
|
||||
final PsiClass classToBind = form.getClassToBind();
|
||||
if (bindClasses.contains(classToBind)) continue;
|
||||
bindClasses.add(classToBind);
|
||||
result.add(FormNode.constructFormNode(classToBind, project, viewSettings));
|
||||
}
|
||||
if (!result.isEmpty()) {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
VirtualFile vFile = CommonDataKeys.VIRTUAL_FILE.getData(context);
|
||||
if (vFile != null) {
|
||||
final FileType fileType = vFile.getFileType();
|
||||
if (fileType.equals(GuiFormFileType.INSTANCE)) {
|
||||
final PsiFile formFile = PsiManager.getInstance(project).findFile(vFile);
|
||||
if (formFile == null) return null;
|
||||
String text = formFile.getText();
|
||||
String className;
|
||||
try {
|
||||
className = Utils.getBoundClassName(text);
|
||||
}
|
||||
catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
if (className == null) return null;
|
||||
final PsiClass classToBind = JavaPsiFacade.getInstance(project).findClass(className, GlobalSearchScope.allScope(project));
|
||||
if (classToBind != null) {
|
||||
Form form = new Form(classToBind);
|
||||
final AbstractTreeNode<?> node = new FormNode(project, form, viewSettings);
|
||||
return Collections.singletonList(node);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean elementContainsFile(final Object element, final VirtualFile vFile) {
|
||||
if (element instanceof Form form){
|
||||
return form.containsFile(vFile);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getElementWeight(final Object element, final boolean isSortByType) {
|
||||
if (element instanceof Form) return 9;
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable String getElementLocation(final Object element) {
|
||||
if (element instanceof Form) {
|
||||
final PsiFile[] psiFiles = ((Form)element).getFormFiles();
|
||||
VirtualFile vFile = null;
|
||||
if (psiFiles.length > 0) {
|
||||
vFile = psiFiles [0].getVirtualFile();
|
||||
}
|
||||
if (vFile != null) {
|
||||
return vFile.getPresentableUrl();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInvalidElement(Object element) {
|
||||
if (element instanceof Form) {
|
||||
return !((Form) element).isValid();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull
|
||||
@NonNls String getFavoriteTypeId() {
|
||||
return "form";
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable
|
||||
@NonNls String getElementUrl(Object element) {
|
||||
if (element instanceof Form form) {
|
||||
return form.getClassToBind().getQualifiedName();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getElementModuleName(final Object element) {
|
||||
if (element instanceof Form form) {
|
||||
final Module module = ModuleUtil.findModuleForPsiElement(form.getClassToBind());
|
||||
return module != null ? module.getName() : null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object[] createPathFromUrl(final Project project, final String url, final String moduleName) {
|
||||
final PsiManager psiManager = PsiManager.getInstance(project);
|
||||
final PsiClass classToBind = JavaPsiFacade.getInstance(psiManager.getProject()).findClass(url, GlobalSearchScope.allScope(project));
|
||||
if (classToBind == null) return null;
|
||||
return new Object[] { new Form(classToBind) };
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user