diff options
Diffstat (limited to 'platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/Configuration.java')
-rw-r--r-- | platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/Configuration.java | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/Configuration.java b/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/Configuration.java new file mode 100644 index 000000000000..440d33164f1d --- /dev/null +++ b/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/Configuration.java @@ -0,0 +1,87 @@ +package com.intellij.structuralsearch.plugin.ui; + +import com.intellij.openapi.util.JDOMExternalizable; +import com.intellij.openapi.util.text.StringUtil; +import com.intellij.structuralsearch.MatchOptions; +import org.jdom.Element; +import org.jetbrains.annotations.NonNls; + +/** + * Created by IntelliJ IDEA. + * User: Maxim.Mossienko + * Date: Apr 14, 2004 + * Time: 5:29:37 PM + * To change this template use File | Settings | File Templates. + */ +public abstract class Configuration implements JDOMExternalizable, Comparable<Configuration> { + public static final Configuration[] EMPTY_ARRAY = {}; + @NonNls protected static final String NAME_ATTRIBUTE_NAME = "name"; + private String name = ""; + private String category = null; + private boolean predefined; + + private static ConfigurationCreator configurationCreator; + + public String getName() { + return name; + } + + public void setName(String value) { + name = value; + } + + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + + public void readExternal(Element element) { + name = element.getAttributeValue(NAME_ATTRIBUTE_NAME); + } + + public void writeExternal(Element element) { + element.setAttribute(NAME_ATTRIBUTE_NAME,name); + } + + public boolean isPredefined() { + return predefined; + } + + public void setPredefined(boolean predefined) { + this.predefined = predefined; + } + + public abstract MatchOptions getMatchOptions(); + + @Override + public int compareTo(Configuration other) { + int result = StringUtil.naturalCompare(getCategory(), other.getCategory()); + return result != 0 ? result : StringUtil.naturalCompare(getName(), other.getName()); + } + + public boolean equals(Object configuration) { + if (!(configuration instanceof Configuration)) return false; + Configuration other = (Configuration)configuration; + if (category != null ? !category.equals(other.category) : other.category != null) { + return false; + } + return name.equals(other.name); + } + + public int hashCode() { + return getMatchOptions().hashCode(); + } + + public static void setActiveCreator(ConfigurationCreator creator) { + configurationCreator = creator; + } + + public static ConfigurationCreator getConfigurationCreator() { + return configurationCreator; + } + + @NonNls public static final String CONTEXT_VAR_NAME = "__context__"; +} |