From 2ce51a6bb54703d391b863e5b6b7304f70daa100 Mon Sep 17 00:00:00 2001 From: Eugene Kudelevsky Date: Mon, 15 Oct 2012 18:17:35 +0400 Subject: [PATCH] PredefinedCodeStyle is extension point now --- .../LanguageCodeStyleSettingsProvider.java | 3 ++- .../psi/codeStyle/PredefinedCodeStyle.java | 18 +++++++++++++--- .../options/TabbedLanguageCodeStylePanel.java | 21 +++++++++++++------ .../src/META-INF/LangExtensionPoints.xml | 2 ++ 4 files changed, 34 insertions(+), 10 deletions(-) diff --git a/platform/lang-api/src/com/intellij/psi/codeStyle/LanguageCodeStyleSettingsProvider.java b/platform/lang-api/src/com/intellij/psi/codeStyle/LanguageCodeStyleSettingsProvider.java index 991abd19ce18..274d1bf08e11 100644 --- a/platform/lang-api/src/com/intellij/psi/codeStyle/LanguageCodeStyleSettingsProvider.java +++ b/platform/lang-api/src/com/intellij/psi/codeStyle/LanguageCodeStyleSettingsProvider.java @@ -109,9 +109,10 @@ public abstract class LanguageCodeStyleSettingsProvider { } /** - * @return Array of predefined code styles (empty array by default). + * @deprecated use PredefinedCodeStyle extension point instead */ @NotNull + @Deprecated public PredefinedCodeStyle[] getPredefinedCodeStyles() { return PredefinedCodeStyle.EMPTY_ARRAY; } diff --git a/platform/lang-api/src/com/intellij/psi/codeStyle/PredefinedCodeStyle.java b/platform/lang-api/src/com/intellij/psi/codeStyle/PredefinedCodeStyle.java index 55436cf5a3a7..9229ceaa1e0b 100644 --- a/platform/lang-api/src/com/intellij/psi/codeStyle/PredefinedCodeStyle.java +++ b/platform/lang-api/src/com/intellij/psi/codeStyle/PredefinedCodeStyle.java @@ -17,12 +17,15 @@ package com.intellij.psi.codeStyle; import com.intellij.lang.Language; +import com.intellij.openapi.extensions.ExtensionPointName; import org.jetbrains.annotations.NotNull; /** * @author Rustam Vishnyakov */ public abstract class PredefinedCodeStyle { + public static final ExtensionPointName EP_NAME = + ExtensionPointName.create("com.intellij.predefinedCodeStyle"); public final static PredefinedCodeStyle[] EMPTY_ARRAY = new PredefinedCodeStyle[]{}; private final String myName; @@ -46,9 +49,17 @@ public abstract class PredefinedCodeStyle { public boolean equals(Object obj) { if (!(obj instanceof PredefinedCodeStyle)) return false; PredefinedCodeStyle otherStyle = (PredefinedCodeStyle)obj; - return myName.equals(otherStyle.getName()); + return myName.equals(otherStyle.getName()) && + myLanguage.equals(otherStyle.getLanguage()); } - + + @Override + public int hashCode() { + int result = myName.hashCode(); + result = 31 * result + myLanguage.hashCode(); + return result; + } + public String getName() { return myName; } @@ -57,7 +68,8 @@ public abstract class PredefinedCodeStyle { public String toString() { return myName; } - + + @NotNull public Language getLanguage() { return myLanguage; } diff --git a/platform/lang-impl/src/com/intellij/application/options/TabbedLanguageCodeStylePanel.java b/platform/lang-impl/src/com/intellij/application/options/TabbedLanguageCodeStylePanel.java index e0b6099a396e..35a2ba0a6a00 100644 --- a/platform/lang-impl/src/com/intellij/application/options/TabbedLanguageCodeStylePanel.java +++ b/platform/lang-impl/src/com/intellij/application/options/TabbedLanguageCodeStylePanel.java @@ -40,9 +40,7 @@ import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; +import java.util.*; import java.util.List; /** @@ -357,9 +355,20 @@ public abstract class TabbedLanguageCodeStylePanel extends CodeStyleAbstractPane } private PredefinedCodeStyle[] getPredefinedStyles() { - LanguageCodeStyleSettingsProvider provider = LanguageCodeStyleSettingsProvider.forLanguage(getDefaultLanguage()); - if (provider == null) return new PredefinedCodeStyle[0]; - return provider.getPredefinedCodeStyles(); + final Language language = getDefaultLanguage(); + final List result = new ArrayList(); + + for (PredefinedCodeStyle codeStyle : PredefinedCodeStyle.EP_NAME.getExtensions()) { + if (codeStyle.getLanguage().equals(language)) { + result.add(codeStyle); + } + } + final LanguageCodeStyleSettingsProvider provider = LanguageCodeStyleSettingsProvider.forLanguage(getDefaultLanguage()); + + if (provider != null) { + result.addAll(Arrays.asList(provider.getPredefinedCodeStyles())); + } + return result.toArray(new PredefinedCodeStyle[result.size()]); } diff --git a/platform/platform-resources/src/META-INF/LangExtensionPoints.xml b/platform/platform-resources/src/META-INF/LangExtensionPoints.xml index 936bbc58fe60..6e8a0f3da7ab 100644 --- a/platform/platform-resources/src/META-INF/LangExtensionPoints.xml +++ b/platform/platform-resources/src/META-INF/LangExtensionPoints.xml @@ -515,6 +515,8 @@ + +