summaryrefslogtreecommitdiff
path: root/plugins/devkit/src/dom
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/devkit/src/dom')
-rw-r--r--plugins/devkit/src/dom/Action.java3
-rw-r--r--plugins/devkit/src/dom/impl/ExtensionDomExtender.java155
-rw-r--r--plugins/devkit/src/dom/impl/PluginXmlDomFileDescription.java99
3 files changed, 80 insertions, 177 deletions
diff --git a/plugins/devkit/src/dom/Action.java b/plugins/devkit/src/dom/Action.java
index ac879140fd4b..e28f2d13b9b4 100644
--- a/plugins/devkit/src/dom/Action.java
+++ b/plugins/devkit/src/dom/Action.java
@@ -165,4 +165,7 @@ public interface Action extends DomElement {
@NotNull
GenericAttributeValue<String> getKeymap();
+
+ @NotNull
+ GenericAttributeValue<String> getProjectType();
}
diff --git a/plugins/devkit/src/dom/impl/ExtensionDomExtender.java b/plugins/devkit/src/dom/impl/ExtensionDomExtender.java
index f5c83ccb66bc..538ee7e70243 100644
--- a/plugins/devkit/src/dom/impl/ExtensionDomExtender.java
+++ b/plugins/devkit/src/dom/impl/ExtensionDomExtender.java
@@ -15,7 +15,7 @@
*/
package org.jetbrains.idea.devkit.dom.impl;
-import com.intellij.ide.plugins.PluginManager;
+import com.intellij.ide.plugins.PluginManagerCore;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
@@ -50,57 +50,6 @@ import java.util.*;
public class ExtensionDomExtender extends DomExtender<Extensions> {
private static final PsiClassConverter CLASS_CONVERTER = new PluginPsiClassConverter();
private static final Converter LANGUAGE_CONVERTER = new LanguageResolvingConverter();
-
- private static class MyRequired implements Required {
- @Override
- public boolean value() {
- return true;
- }
-
- @Override
- public boolean nonEmpty() {
- return true;
- }
-
- @Override
- public boolean identifier() {
- return false;
- }
-
- @Override
- public Class<? extends Annotation> annotationType() {
- return Required.class;
- }
- }
-
- private static class MyExtendClass extends ExtendClassImpl {
- private final String myInterfaceName;
-
- private MyExtendClass(String interfaceName) {
- myInterfaceName = interfaceName;
- }
-
- @Override
- public boolean allowAbstract() {
- return false;
- }
-
- @Override
- public boolean allowInterface() {
- return false;
- }
-
- @Override
- public boolean allowEnum() {
- return false;
- }
-
- @Override
- public String value() {
- return myInterfaceName;
- }
- }
-
private static final DomExtender EXTENSION_EXTENDER = new DomExtender() {
public void registerExtensions(@NotNull final DomElement domElement, @NotNull final DomExtensionsRegistrar registrar) {
final ExtensionPoint extensionPoint = (ExtensionPoint)domElement.getChildDescription().getDomDeclaration();
@@ -127,31 +76,6 @@ public class ExtensionDomExtender extends DomExtender<Extensions> {
}
};
-
- public void registerExtensions(@NotNull final Extensions extensions, @NotNull final DomExtensionsRegistrar registrar) {
- final XmlElement xmlElement = extensions.getXmlElement();
- if (xmlElement == null) return;
-
- IdeaPlugin ideaPlugin = extensions.getParentOfType(IdeaPlugin.class, true);
-
- if (ideaPlugin == null) return;
-
- String epPrefix = extensions.getEpPrefix();
- for (IdeaPlugin plugin : getVisiblePlugins(ideaPlugin)) {
- final String pluginId = StringUtil.notNullize(plugin.getPluginId(), "com.intellij");
- for (ExtensionPoints points : plugin.getExtensionPoints()) {
- for (ExtensionPoint point : points.getExtensionPoints()) {
- registerExtensionPoint(registrar, point, epPrefix, pluginId);
- }
- }
- }
- }
-
- @Override
- public boolean supportsStubs() {
- return false;
- }
-
private static Set<IdeaPlugin> getVisiblePlugins(IdeaPlugin ideaPlugin) {
Set<IdeaPlugin> result = ContainerUtil.newHashSet();
MultiMap<String, IdeaPlugin> byId = getPluginMap(ideaPlugin.getManager().getProject());
@@ -385,11 +309,10 @@ public class ExtensionDomExtender extends DomExtender<Extensions> {
return PsiTypesUtil.getPsiClass(elementType);
}
-
public static Collection<String> getDependencies(IdeaPlugin ideaPlugin) {
Set<String> result = new HashSet<String>();
- result.add(PluginManager.CORE_PLUGIN_ID);
+ result.add(PluginManagerCore.CORE_PLUGIN_ID);
for (Dependency dependency : ideaPlugin.getDependencies()) {
ContainerUtil.addIfNotNull(dependency.getStringValue(), result);
@@ -422,10 +345,84 @@ public class ExtensionDomExtender extends DomExtender<Extensions> {
return result;
}
+ public void registerExtensions(@NotNull final Extensions extensions, @NotNull final DomExtensionsRegistrar registrar) {
+ final XmlElement xmlElement = extensions.getXmlElement();
+ if (xmlElement == null) return;
+
+ IdeaPlugin ideaPlugin = extensions.getParentOfType(IdeaPlugin.class, true);
+
+ if (ideaPlugin == null) return;
+
+ String epPrefix = extensions.getEpPrefix();
+ for (IdeaPlugin plugin : getVisiblePlugins(ideaPlugin)) {
+ final String pluginId = StringUtil.notNullize(plugin.getPluginId(), "com.intellij");
+ for (ExtensionPoints points : plugin.getExtensionPoints()) {
+ for (ExtensionPoint point : points.getExtensionPoints()) {
+ registerExtensionPoint(registrar, point, epPrefix, pluginId);
+ }
+ }
+ }
+ }
+
+ @Override
+ public boolean supportsStubs() {
+ return false;
+ }
+
interface SimpleTagValue extends DomElement {
@SuppressWarnings("UnusedDeclaration")
@TagValue
String getTagValue();
}
+ private static class MyRequired implements Required {
+ @Override
+ public boolean value() {
+ return true;
+ }
+
+ @Override
+ public boolean nonEmpty() {
+ return true;
+ }
+
+ @Override
+ public boolean identifier() {
+ return false;
+ }
+
+ @Override
+ public Class<? extends Annotation> annotationType() {
+ return Required.class;
+ }
+ }
+
+ private static class MyExtendClass extends ExtendClassImpl {
+ private final String myInterfaceName;
+
+ private MyExtendClass(String interfaceName) {
+ myInterfaceName = interfaceName;
+ }
+
+ @Override
+ public boolean allowAbstract() {
+ return false;
+ }
+
+ @Override
+ public boolean allowInterface() {
+ return false;
+ }
+
+ @Override
+ public boolean allowEnum() {
+ return false;
+ }
+
+ @Override
+ public String value() {
+ return myInterfaceName;
+ }
+ }
+
}
diff --git a/plugins/devkit/src/dom/impl/PluginXmlDomFileDescription.java b/plugins/devkit/src/dom/impl/PluginXmlDomFileDescription.java
index b3d7fda2c19a..091c172d0a60 100644
--- a/plugins/devkit/src/dom/impl/PluginXmlDomFileDescription.java
+++ b/plugins/devkit/src/dom/impl/PluginXmlDomFileDescription.java
@@ -15,109 +15,18 @@
*/
package org.jetbrains.idea.devkit.dom.impl;
-import com.intellij.codeInspection.ProblemHighlightType;
import com.intellij.icons.AllIcons;
-import com.intellij.lang.annotation.Annotation;
-import com.intellij.lang.annotation.HighlightSeverity;
import com.intellij.openapi.util.Iconable;
-import com.intellij.psi.PsiClass;
-import com.intellij.psi.PsiElement;
-import com.intellij.psi.PsiField;
-import com.intellij.util.xml.DomElement;
import com.intellij.util.xml.DomFileDescription;
-import com.intellij.util.xml.DomUtil;
-import com.intellij.util.xml.GenericAttributeValue;
-import com.intellij.util.xml.highlighting.DomElementAnnotationHolder;
-import com.intellij.util.xml.highlighting.DomElementsAnnotator;
-import com.intellij.util.xml.reflect.DomAttributeChildDescription;
-import org.jetbrains.annotations.Nullable;
-import org.jetbrains.idea.devkit.dom.*;
+import org.jetbrains.idea.devkit.dom.IdeaPlugin;
import javax.swing.*;
-import java.util.List;
/**
* @author mike
*/
public class PluginXmlDomFileDescription extends DomFileDescription<IdeaPlugin> {
- private static final DomElementsAnnotator ANNOTATOR = new DomElementsAnnotator() {
- @Override
- public void annotate(DomElement element, DomElementAnnotationHolder holder) {
- if (element instanceof Extension) {
- annotateExtension((Extension)element, holder);
- }
- else if (element instanceof Vendor) {
- annotateVendor((Vendor)element, holder);
- }
- else if (element instanceof IdeaVersion) {
- annotateIdeaVersion((IdeaVersion)element, holder);
- }
- else if (element instanceof Extensions) {
- annotateExtensions((Extensions)element, holder);
- }
- }
-
- private void annotateExtensions(Extensions extensions, DomElementAnnotationHolder holder) {
- final GenericAttributeValue<IdeaPlugin> xmlnsAttribute = extensions.getXmlns();
- if (!DomUtil.hasXml(xmlnsAttribute)) return;
-
- final Annotation annotation = holder.createAnnotation(xmlnsAttribute,
- HighlightSeverity.WARNING,
- "Use defaultExtensionNs instead");
- annotation.setHighlightType(ProblemHighlightType.LIKE_DEPRECATED);
- }
-
- private void annotateIdeaVersion(IdeaVersion ideaVersion, DomElementAnnotationHolder holder) {
- highlightNotUsedAnymore(ideaVersion.getMin(), holder);
- highlightNotUsedAnymore(ideaVersion.getMax(), holder);
- }
-
- private void annotateExtension(Extension extension, DomElementAnnotationHolder holder) {
- final ExtensionPoint extensionPoint = extension.getExtensionPoint();
- if (extensionPoint == null) return;
- final GenericAttributeValue<PsiClass> interfaceAttribute = extensionPoint.getInterface();
- if (DomUtil.hasXml(interfaceAttribute)) {
- final PsiClass value = interfaceAttribute.getValue();
- if (value != null && value.isDeprecated()) {
- final Annotation annotation = holder.createAnnotation(extension, HighlightSeverity.WARNING, "Deprecated EP");
- annotation.setHighlightType(ProblemHighlightType.LIKE_DEPRECATED);
- return;
- }
- }
-
- final List<? extends DomAttributeChildDescription> descriptions = extension.getGenericInfo().getAttributeChildrenDescriptions();
- for (DomAttributeChildDescription attributeDescription : descriptions) {
- final GenericAttributeValue attributeValue = attributeDescription.getDomAttributeValue(extension);
- if (attributeValue == null || !DomUtil.hasXml(attributeValue)) continue;
-
- final PsiElement declaration = attributeDescription.getDeclaration(extension.getManager().getProject());
- if (declaration instanceof PsiField) {
- PsiField psiField = (PsiField)declaration;
- if (psiField.isDeprecated()) {
- final Annotation annotation = holder.createAnnotation(attributeValue, HighlightSeverity.WARNING,
- "Deprecated attribute '" + attributeDescription.getName() + "'");
- annotation.setHighlightType(ProblemHighlightType.LIKE_DEPRECATED);
- }
- }
- }
- }
-
- private void annotateVendor(Vendor vendor, DomElementAnnotationHolder holder) {
- highlightNotUsedAnymore(vendor.getLogo(), holder);
- }
-
- private void highlightNotUsedAnymore(GenericAttributeValue attributeValue,
- DomElementAnnotationHolder holder) {
- if (!DomUtil.hasXml(attributeValue)) return;
-
- final Annotation annotation = holder.createAnnotation(attributeValue,
- HighlightSeverity.WARNING,
- "Not used anymore");
- annotation.setHighlightType(ProblemHighlightType.LIKE_DEPRECATED);
- }
- };
-
public PluginXmlDomFileDescription() {
super(IdeaPlugin.class, "idea-plugin");
}
@@ -127,12 +36,6 @@ public class PluginXmlDomFileDescription extends DomFileDescription<IdeaPlugin>
return AllIcons.Nodes.Plugin;
}
- @Nullable
- @Override
- public DomElementsAnnotator createAnnotator() {
- return ANNOTATOR;
- }
-
@Override
public boolean hasStubs() {
return true;