diff options
author | Tor Norbye <tnorbye@google.com> | 2013-05-31 07:45:51 -0700 |
---|---|---|
committer | Tor Norbye <tnorbye@google.com> | 2013-05-31 07:45:51 -0700 |
commit | ec3fb1e06285c0467a7a20360ca80453bc7635d4 (patch) | |
tree | 2402cdec34611f34b8385ff45387d6734bf6f994 /plugins/devkit/src | |
parent | a6eac331b3d9f0d4168b12356ea256c83f4e9c05 (diff) | |
download | idea-ec3fb1e06285c0467a7a20360ca80453bc7635d4.tar.gz |
Snapshot 568f05589922685b8c8f9a2f2f465043b8128542 from master branch of git://git.jetbrains.org/idea/community.git
Change-Id: I47fe8cb5d8a3c9876cd4c313dca1a8cc531288ec
Diffstat (limited to 'plugins/devkit/src')
16 files changed, 287 insertions, 99 deletions
diff --git a/plugins/devkit/src/dom/Action.java b/plugins/devkit/src/dom/Action.java index 89f354604d07..02ced123b29a 100644 --- a/plugins/devkit/src/dom/Action.java +++ b/plugins/devkit/src/dom/Action.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2013 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -37,7 +37,7 @@ public interface Action extends DomElement { * @return the value of the popup child. */ @NotNull - GenericAttributeValue<String> getPopup(); + GenericAttributeValue<Boolean> getPopup(); /** diff --git a/plugins/devkit/src/dom/Dependency.java b/plugins/devkit/src/dom/Dependency.java index b2375c8da98d..5847bd54f0d2 100644 --- a/plugins/devkit/src/dom/Dependency.java +++ b/plugins/devkit/src/dom/Dependency.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2013 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,8 +27,9 @@ import org.jetbrains.idea.devkit.dom.impl.IdeaPluginConverter; @Convert(IdeaPluginConverter.class) public interface Dependency extends GenericDomValue<IdeaPlugin> { - @NotNull - GenericAttributeValue<String> getOptional(); - @NotNull - GenericAttributeValue<String> getConfigFile(); + @NotNull + GenericAttributeValue<Boolean> getOptional(); + + @NotNull + GenericAttributeValue<String> getConfigFile(); } diff --git a/plugins/devkit/src/dom/Extension.java b/plugins/devkit/src/dom/Extension.java index e7b5d66edc0f..e323308a1e0d 100644 --- a/plugins/devkit/src/dom/Extension.java +++ b/plugins/devkit/src/dom/Extension.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2013 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,6 +18,7 @@ package org.jetbrains.idea.devkit.dom; import com.intellij.util.xml.DomElement; import com.intellij.util.xml.GenericAttributeValue; import com.intellij.util.xml.NameValue; +import com.intellij.util.xml.Required; import org.jetbrains.annotations.Nullable; /** @@ -26,8 +27,10 @@ import org.jetbrains.annotations.Nullable; public interface Extension extends DomElement { @NameValue + @Required(value = false) GenericAttributeValue<String> getId(); + @Required(value = false) GenericAttributeValue<String> getOrder(); @Nullable diff --git a/plugins/devkit/src/dom/Group.java b/plugins/devkit/src/dom/Group.java index 451e036f551a..930278ce6041 100644 --- a/plugins/devkit/src/dom/Group.java +++ b/plugins/devkit/src/dom/Group.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2013 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -37,7 +37,7 @@ public interface Group extends Actions { * @return the value of the popup child. */ @NotNull - GenericAttributeValue<String> getPopup(); + GenericAttributeValue<Boolean> getPopup(); /** diff --git a/plugins/devkit/src/dom/IdeaPlugin.java b/plugins/devkit/src/dom/IdeaPlugin.java index 1e93ca342c50..05269bddac4b 100644 --- a/plugins/devkit/src/dom/IdeaPlugin.java +++ b/plugins/devkit/src/dom/IdeaPlugin.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2013 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +19,7 @@ package org.jetbrains.idea.devkit.dom; +import com.intellij.ide.presentation.Presentation; import com.intellij.util.xml.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -29,6 +30,7 @@ import java.util.List; * plugin.dtd:idea-plugin interface. */ @DefinesXml +@Presentation(icon = "AllIcons.Nodes.Plugin") public interface IdeaPlugin extends DomElement { @Nullable String getPluginId(); diff --git a/plugins/devkit/src/dom/impl/ExtensionDomExtender.java b/plugins/devkit/src/dom/impl/ExtensionDomExtender.java index e9f464d6fa58..9df69bca965d 100644 --- a/plugins/devkit/src/dom/impl/ExtensionDomExtender.java +++ b/plugins/devkit/src/dom/impl/ExtensionDomExtender.java @@ -21,11 +21,11 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.psi.util.PropertyUtil; import com.intellij.psi.util.PsiTypesUtil; import com.intellij.psi.xml.XmlElement; import com.intellij.psi.xml.XmlFile; import com.intellij.psi.xml.XmlTag; -import com.intellij.refactoring.psi.PropertyUtils; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.LinkedMultiMap; import com.intellij.util.containers.MultiMap; @@ -162,8 +162,8 @@ public class ExtensionDomExtender extends DomExtender<Extensions> { } private static void registerField(final DomExtensionsRegistrar registrar, @NotNull final PsiField field, With withElement) { - final PsiMethod getter = PropertyUtils.findGetterForField(field); - final PsiMethod setter = PropertyUtils.findSetterForField(field); + final PsiMethod getter = PropertyUtil.findGetterForField(field); + final PsiMethod setter = PropertyUtil.findSetterForField(field); if (!field.hasModifierProperty(PsiModifier.PUBLIC) && (getter == null || setter == null)) { return; } @@ -174,9 +174,14 @@ public class ExtensionDomExtender extends DomExtender<Extensions> { if (attrAnno != null) { final String attrName = getStringAttribute(attrAnno, "value", evalHelper); if (attrName != null) { - boolean isClass = withElement != null || isClassField(fieldName); + Class clazz = String.class; + if (withElement != null || isClassField(fieldName)) { + clazz = PsiClass.class; + } else if (field.getType() == PsiType.BOOLEAN) { + clazz = Boolean.class; + } final DomExtension extension = - registrar.registerGenericAttributeValueChildExtension(new XmlName(attrName), isClass ? PsiClass.class : String.class).setDeclaringElement(field); + registrar.registerGenericAttributeValueChildExtension(new XmlName(attrName), clazz).setDeclaringElement(field); markAsClass(extension, fieldName, withElement); } return; diff --git a/plugins/devkit/src/dom/impl/ExtensionNsConverter.java b/plugins/devkit/src/dom/impl/ExtensionNsConverter.java index 60a5af99474f..12af7b3ae695 100644 --- a/plugins/devkit/src/dom/impl/ExtensionNsConverter.java +++ b/plugins/devkit/src/dom/impl/ExtensionNsConverter.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2013 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,16 +24,11 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.devkit.dom.IdeaPlugin; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; +import java.util.*; -/* -* Created by IntelliJ IDEA. -* User: sweinreuter -* Date: 06.12.2007 -*/ +/** + * @author Sascha Weinreuter + */ public class ExtensionNsConverter extends ResolvingConverter<IdeaPlugin> { @NotNull public Collection<? extends IdeaPlugin> getVariants(ConvertContext context) { @@ -42,10 +37,12 @@ public class ExtensionNsConverter extends ResolvingConverter<IdeaPlugin> { final Collection<String> dependencies = ExtensionDomExtender.getDependencies(ideaPlugin); final List<IdeaPlugin> depPlugins = new ArrayList<IdeaPlugin>(); + final Set<String> depPluginsIds = new HashSet<String>(); for (IdeaPlugin plugin : IdeaPluginConverter.getAllPlugins(context.getProject())) { final String value = plugin.getPluginId(); - if (value != null && dependencies.contains(value)) { + if (value != null && dependencies.contains(value) && !depPluginsIds.contains(value)) { depPlugins.add(plugin); + depPluginsIds.add(value); } } return depPlugins; diff --git a/plugins/devkit/src/dom/impl/InspectionsPropertiesReferenceProviderContributor.java b/plugins/devkit/src/dom/impl/InspectionsPropertiesReferenceProviderContributor.java index de5ab53b5dab..e8a3401e0f3c 100644 --- a/plugins/devkit/src/dom/impl/InspectionsPropertiesReferenceProviderContributor.java +++ b/plugins/devkit/src/dom/impl/InspectionsPropertiesReferenceProviderContributor.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2013 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,25 +15,70 @@ */ package org.jetbrains.idea.devkit.dom.impl; +import com.intellij.codeInsight.lookup.LookupElement; +import com.intellij.codeInsight.lookup.LookupElementBuilder; +import com.intellij.lang.properties.PropertiesFileProcessor; +import com.intellij.lang.properties.PropertiesReferenceManager; +import com.intellij.lang.properties.ResourceBundleReference; +import com.intellij.lang.properties.psi.PropertiesFile; +import com.intellij.openapi.util.Iconable; import com.intellij.patterns.ElementPattern; import com.intellij.patterns.XmlPatterns; -import com.intellij.psi.PsiReferenceContributor; -import com.intellij.psi.PsiReferenceRegistrar; +import com.intellij.psi.*; +import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.util.ProcessingContext; +import org.jetbrains.annotations.NotNull; -import static com.intellij.patterns.StandardPatterns.string; +import java.util.ArrayList; +import java.util.List; /** * User: anna * Date: 10/7/11 */ public class InspectionsPropertiesReferenceProviderContributor extends PsiReferenceContributor { + + private static final String[] EXTENSION_TAG_NAMES = new String[]{ + "localInspection", "globalInspection", + "configurable", "applicationConfigurable", "projectConfigurable" + }; + @Override public void registerReferenceProviders(PsiReferenceRegistrar registrar) { - ElementPattern pattern = XmlPatterns.xmlAttributeValue() - .withParent(XmlPatterns.xmlAttribute().withLocalName("key", "groupKey") - .withParent(XmlPatterns.xmlTag().withName("localInspection", "globalInspection") - .withSuperParent(2, XmlPatterns.xmlTag().withName("idea-plugin")))); + ElementPattern pattern = createPattern("key", "groupKey"); registrar.registerReferenceProvider(pattern, new InspectionsKeyPropertiesReferenceProvider(false), PsiReferenceRegistrar.DEFAULT_PRIORITY); + + ElementPattern bundlePattern = createPattern("bundle", "groupBundle"); + registrar.registerReferenceProvider(bundlePattern, new PsiReferenceProvider() { + @NotNull + @Override + public PsiReference[] getReferencesByElement(@NotNull PsiElement element, @NotNull ProcessingContext context) { + ResourceBundleReference reference = new ResourceBundleReference(element, false) { + @NotNull + @Override + public Object[] getVariants() { + PropertiesReferenceManager referenceManager = PropertiesReferenceManager.getInstance(myElement.getProject()); + final List<LookupElement> variants = new ArrayList<LookupElement>(); + referenceManager.processPropertiesFiles(GlobalSearchScope.projectScope(myElement.getProject()), new PropertiesFileProcessor() { + public boolean process(String baseName, PropertiesFile propertiesFile) { + variants.add(LookupElementBuilder.create(propertiesFile, baseName) + .withIcon(propertiesFile.getContainingFile().getIcon(Iconable.ICON_FLAG_READ_STATUS))); + return true; + } + }, this); + return variants.toArray(new LookupElement[variants.size()]); + } + }; + return new PsiReference[]{reference}; + } + }, PsiReferenceRegistrar.DEFAULT_PRIORITY); + } + + private static ElementPattern createPattern(String... attributeNames) { + return XmlPatterns.xmlAttributeValue() + .withParent(XmlPatterns.xmlAttribute().withLocalName(attributeNames) + .withParent(XmlPatterns.xmlTag().withName(EXTENSION_TAG_NAMES) + .withSuperParent(2, XmlPatterns.xmlTag().withName("idea-plugin")))); } }
\ No newline at end of file diff --git a/plugins/devkit/src/dom/impl/InternalDomExtender.java b/plugins/devkit/src/dom/impl/InternalDomExtender.java new file mode 100644 index 000000000000..a41dd535cc03 --- /dev/null +++ b/plugins/devkit/src/dom/impl/InternalDomExtender.java @@ -0,0 +1,54 @@ +/* + * Copyright 2000-2013 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jetbrains.idea.devkit.dom.impl; + +import com.intellij.openapi.application.ApplicationManager; +import com.intellij.util.xml.XmlName; +import com.intellij.util.xml.converters.values.BooleanValueConverter; +import com.intellij.util.xml.reflect.DomExtender; +import com.intellij.util.xml.reflect.DomExtensionsRegistrar; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.idea.devkit.dom.Action; +import org.jetbrains.idea.devkit.dom.Group; + +/** + * @author Yann Cébron + */ +public class InternalDomExtender { + + private static void addInternalAttribute(@NotNull DomExtensionsRegistrar registrar, Class clazz) { + if (!ApplicationManager.getApplication().isInternal()) { + return; + } + + registrar.registerGenericAttributeValueChildExtension(new XmlName("internal"), clazz) + .setConverter(BooleanValueConverter.getInstance(false)); + } + + public static class ForAction extends DomExtender<Action> { + @Override + public void registerExtensions(@NotNull Action action, @NotNull DomExtensionsRegistrar registrar) { + addInternalAttribute(registrar, Action.class); + } + } + + public static class ForGroup extends DomExtender<Group> { + @Override + public void registerExtensions(@NotNull Group group, @NotNull DomExtensionsRegistrar registrar) { + addInternalAttribute(registrar, Group.class); + } + } +} diff --git a/plugins/devkit/src/dom/impl/PluginFieldNameConverter.java b/plugins/devkit/src/dom/impl/PluginFieldNameConverter.java index 115e9f995ada..0ac67e186f81 100644 --- a/plugins/devkit/src/dom/impl/PluginFieldNameConverter.java +++ b/plugins/devkit/src/dom/impl/PluginFieldNameConverter.java @@ -16,7 +16,7 @@ package org.jetbrains.idea.devkit.dom.impl; import com.intellij.psi.*; -import com.intellij.refactoring.psi.PropertyUtils; +import com.intellij.psi.util.PropertyUtil; import com.intellij.util.xml.ConvertContext; import com.intellij.util.xml.ResolvingConverter; import com.intellij.util.xmlb.annotations.Attribute; @@ -82,8 +82,8 @@ public class PluginFieldNameConverter extends ResolvingConverter<PsiField> { public static String getAnnotationValue(PsiField psiField, Class annotationClass) { final PsiConstantEvaluationHelper evalHelper = JavaPsiFacade.getInstance(psiField.getProject()).getConstantEvaluationHelper(); - final PsiMethod getter = PropertyUtils.findGetterForField(psiField); - final PsiMethod setter = PropertyUtils.findSetterForField(psiField); + final PsiMethod getter = PropertyUtil.findGetterForField(psiField); + final PsiMethod setter = PropertyUtil.findSetterForField(psiField); final PsiAnnotation attrAnno = ExtensionDomExtender.findAnnotation(annotationClass, psiField, getter, setter); if (attrAnno != null) { return ExtensionDomExtender.getStringAttribute(attrAnno, "value", evalHelper); diff --git a/plugins/devkit/src/inspections/DevKitEntryPoints.java b/plugins/devkit/src/inspections/DevKitEntryPoints.java deleted file mode 100644 index cabcbe6fd4d5..000000000000 --- a/plugins/devkit/src/inspections/DevKitEntryPoints.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2000-2011 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jetbrains.idea.devkit.inspections; - -import com.intellij.codeInsight.daemon.ImplicitUsageProvider; -import com.intellij.psi.JavaPsiFacade; -import com.intellij.psi.PsiClass; -import com.intellij.psi.PsiElement; - -/** - * User: anna - */ -public class DevKitEntryPoints implements ImplicitUsageProvider { - @Override - public boolean isImplicitUsage(PsiElement element) { - if (element instanceof PsiClass) { - final PsiClass domClass = - JavaPsiFacade.getInstance(element.getProject()).findClass("com.intellij.util.xml.DomElement", element.getResolveScope()); - if (domClass != null && ((PsiClass)element).isInheritor(domClass, true)) { - return true; - } - } - return false; - } - - @Override - public boolean isImplicitRead(PsiElement element) { - return false; - } - - @Override - public boolean isImplicitWrite(PsiElement element) { - return false; - } -} diff --git a/plugins/devkit/src/inspections/DevKitImplicitUsageProvider.java b/plugins/devkit/src/inspections/DevKitImplicitUsageProvider.java new file mode 100644 index 000000000000..fa87c70ad337 --- /dev/null +++ b/plugins/devkit/src/inspections/DevKitImplicitUsageProvider.java @@ -0,0 +1,123 @@ +/* + * Copyright 2000-2013 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jetbrains.idea.devkit.inspections; + +import com.intellij.codeInsight.daemon.ImplicitUsageProvider; +import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; +import org.jetbrains.annotations.Nullable; + +/** + * @author anna + */ +public class DevKitImplicitUsageProvider implements ImplicitUsageProvider { + + @Override + public boolean isImplicitUsage(PsiElement element) { + if (element instanceof PsiClass) { + final PsiClass psiClass = (PsiClass)element; + return isDomElementClass(psiClass); + } + + if (element instanceof PsiMethod) { + PsiMethod psiMethod = (PsiMethod)element; + return isDomElementMethod(psiMethod); + } + + return false; + } + + @Override + public boolean isImplicitRead(PsiElement element) { + return false; + } + + @Override + public boolean isImplicitWrite(PsiElement element) { + return false; + } + + private static boolean isDomElementClass(PsiClass psiClass) { + if (psiClass.isEnum() || + psiClass.isAnnotationType() || + psiClass.hasModifierProperty(PsiModifier.PRIVATE)) { + return false; + } + + return isDomElementInheritor(psiClass); + } + + private static boolean isDomElementMethod(PsiMethod psiMethod) { + if (!psiMethod.hasModifierProperty(PsiModifier.PUBLIC) || + psiMethod.hasModifierProperty(PsiModifier.STATIC) || + psiMethod.isConstructor() || + psiMethod.getParameterList().getParametersCount() > 1) { + return false; + } + + final PsiClass containingClass = psiMethod.getContainingClass(); + if (containingClass == null) { + return false; + } + + if (!isDomElementClass(containingClass)) { + return isDomElementVisitorMethod(psiMethod, containingClass); + } + + final PsiType returnType = psiMethod.getReturnType(); + if (!(returnType instanceof PsiClassType)) { + return false; + } + + PsiClassType returnClassType = (PsiClassType)returnType; + + // Dom getDom(), GenericAttributeValue<X> getAttr(), ... + final PsiClass returnResolved = returnClassType.resolve(); + if (isDomElementInheritor(returnResolved)) { + return true; + } + + // List<Dom> getDoms() + if (returnClassType.getParameterCount() == 1 && + InheritanceUtil.isInheritor(returnResolved, CommonClassNames.JAVA_UTIL_LIST)) { + final PsiType listType = returnClassType.getParameters()[0]; + return isDomElementInheritor(listType); + } + + return false; + } + + private static boolean isDomElementVisitorMethod(PsiMethod method, + PsiClass containingClass) { + if (method.getReturnType() != PsiType.VOID || + !method.getName().startsWith("visit") || + method.getParameterList().getParametersCount() != 1 || + !InheritanceUtil.isInheritor(containingClass, "com.intellij.util.xml.DomElementVisitor")) { + return false; + } + + final PsiType psiType = method.getParameterList().getParameters()[0].getType(); + return isDomElementInheritor(psiType); + } + + private static boolean isDomElementInheritor(@Nullable PsiType psiType) { + return InheritanceUtil.isInheritor(psiType, "com.intellij.util.xml.DomElement"); + } + + private static boolean isDomElementInheritor(@Nullable PsiClass psiClass) { + return InheritanceUtil.isInheritor(psiClass, "com.intellij.util.xml.DomElement"); + } +}
\ No newline at end of file diff --git a/plugins/devkit/src/inspections/TitleCapitalizationInspection.java b/plugins/devkit/src/inspections/TitleCapitalizationInspection.java index 7f9af1399fea..6fa8eb70165f 100644 --- a/plugins/devkit/src/inspections/TitleCapitalizationInspection.java +++ b/plugins/devkit/src/inspections/TitleCapitalizationInspection.java @@ -27,7 +27,7 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.ReadonlyStatusHandler; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; -import com.intellij.refactoring.psi.PropertyUtils; +import com.intellij.psi.util.PropertyUtil; import com.intellij.util.ArrayUtil; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.Nls; @@ -129,7 +129,7 @@ public class TitleCapitalizationInspection extends BaseJavaLocalInspectionTool { } if (arg instanceof PsiMethodCallExpression) { PsiMethod psiMethod = ((PsiMethodCallExpression)arg).resolveMethod(); - PsiExpression returnValue = PropertyUtils.getGetterReturnExpression(psiMethod); + PsiExpression returnValue = PropertyUtil.getGetterReturnExpression(psiMethod); if (returnValue != null) { return getTitleValue(returnValue); } @@ -223,7 +223,7 @@ public class TitleCapitalizationInspection extends BaseJavaLocalInspectionTool { }else if (element instanceof PsiMethodCallExpression) { final PsiMethodCallExpression methodCallExpression = (PsiMethodCallExpression)element; final PsiMethod method = methodCallExpression.resolveMethod(); - final PsiExpression returnValue = PropertyUtils.getGetterReturnExpression(method); + final PsiExpression returnValue = PropertyUtil.getGetterReturnExpression(method); if (returnValue != null) { doFix(project, returnValue); } diff --git a/plugins/devkit/src/references/IconsReferencesContributor.java b/plugins/devkit/src/references/IconsReferencesContributor.java index bdffe582031f..dba2102488b0 100644 --- a/plugins/devkit/src/references/IconsReferencesContributor.java +++ b/plugins/devkit/src/references/IconsReferencesContributor.java @@ -35,6 +35,7 @@ import com.intellij.psi.*; import com.intellij.psi.impl.source.resolve.reference.impl.providers.FileReference; import com.intellij.psi.impl.source.resolve.reference.impl.providers.FileReferenceSet; import com.intellij.psi.impl.source.resolve.reference.impl.providers.FileReferenceUtil; +import com.intellij.psi.impl.source.resolve.reference.impl.providers.PsiFileReference; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.searches.ReferencesSearch; import com.intellij.psi.util.PsiTreeUtil; @@ -313,7 +314,7 @@ public class IconsReferencesContributor extends PsiReferenceContributor implemen value = value.getParent(); } if (value != null) { - final FileReference reference = FileReferenceUtil.findFileReference(value); + final PsiFileReference reference = FileReferenceUtil.findFileReference(value); if (reference != null) { consumer.process(reference); } diff --git a/plugins/devkit/src/run/PluginConfigurationType.java b/plugins/devkit/src/run/PluginConfigurationType.java index 569c5ccc7040..8f7394aadeb0 100644 --- a/plugins/devkit/src/run/PluginConfigurationType.java +++ b/plugins/devkit/src/run/PluginConfigurationType.java @@ -48,6 +48,11 @@ public class PluginConfigurationType implements ConfigurationType { return runConfiguration; } + @Override + public boolean isConfigurationSingletonByDefault() { + return true; + } + public RunConfiguration createConfiguration(String name, RunConfiguration template) { final PluginRunConfiguration pluginRunConfiguration = (PluginRunConfiguration)template; if (pluginRunConfiguration.getModule() == null) { diff --git a/plugins/devkit/src/run/PluginRunConfiguration.java b/plugins/devkit/src/run/PluginRunConfiguration.java index e71ee7e155e6..610b47fc0241 100644 --- a/plugins/devkit/src/run/PluginRunConfiguration.java +++ b/plugins/devkit/src/run/PluginRunConfiguration.java @@ -21,7 +21,6 @@ import com.intellij.execution.Executor; import com.intellij.execution.configurations.*; import com.intellij.execution.filters.TextConsoleBuilderFactory; import com.intellij.execution.runners.ExecutionEnvironment; -import com.intellij.execution.runners.ProgramRunner; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; @@ -63,18 +62,12 @@ public class PluginRunConfiguration extends RunConfigurationBase implements Modu super(project, factory, name); } + @Override public SettingsEditor<? extends RunConfiguration> getConfigurationEditor() { return new PluginRunConfigurationEditor(this); } - public JDOMExternalizable createRunnerSettings(ConfigurationInfoProvider provider) { - return null; - } - - public SettingsEditor<JDOMExternalizable> getRunnerSettingsEditor(ProgramRunner runner) { - return null; - } - + @Override public RunProfileState getState(@NotNull final Executor executor, @NotNull final ExecutionEnvironment env) throws ExecutionException { if (getModule() == null){ throw new ExecutionException(DevKitBundle.message("run.configuration.no.module.specified")); @@ -107,6 +100,7 @@ public class PluginRunConfiguration extends RunConfigurationBase implements Modu IdeaLicenseHelper.copyIDEALicense(sandboxHome, ideaJdk); final JavaCommandLineState state = new JavaCommandLineState(env) { + @Override protected JavaParameters createJavaParameters() throws ExecutionException { final JavaParameters params = new JavaParameters(); @@ -223,11 +217,13 @@ public class PluginRunConfiguration extends RunConfigurationBase implements Modu } } + @Override public void checkConfiguration() throws RuntimeConfigurationException { if (getModule() == null) { throw new RuntimeConfigurationException(DevKitBundle.message("run.configuration.no.module.specified")); } String moduleName = ApplicationManager.getApplication().runReadAction(new Computable<String>() { + @Override public String compute() { return getModule().getName(); } @@ -246,12 +242,14 @@ public class PluginRunConfiguration extends RunConfigurationBase implements Modu } + @Override @NotNull public Module[] getModules() { final Module module = getModule(); return module != null ? new Module[]{module} : Module.EMPTY_ARRAY; } + @Override public void readExternal(Element element) throws InvalidDataException { Element module = element.getChild(MODULE); if (module != null) { @@ -267,9 +265,11 @@ public class PluginRunConfiguration extends RunConfigurationBase implements Modu super.readExternal(element); } + @Override public void writeExternal(Element element) throws WriteExternalException { Element moduleElement = new Element(MODULE); moduleElement.setAttribute(NAME, ApplicationManager.getApplication().runReadAction(new Computable<String>() { + @Override public String compute() { final Module module = getModule(); return module != null ? module.getName() |