/* * Copyright (C) 2007 The Android Open Source Project * * Licensed under the Eclipse Public License, Version 1.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.eclipse.org/org/documents/epl-v10.php * * 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 com.android.ide.eclipse.editors.resources.configurations; import org.eclipse.swt.graphics.Image; /** * Base class for resource qualifiers. * <p/>The resource qualifier classes are designed as immutable. */ public abstract class ResourceQualifier implements Comparable<ResourceQualifier> { /** * Returns the human readable name of the qualifier. */ public abstract String getName(); /** * Returns a shorter human readable name for the qualifier. * @see #getName() */ public abstract String getShortName(); /** * Returns the icon for the qualifier. */ public abstract Image getIcon(); /** * Returns whether the qualifier has a valid filter value. */ public abstract boolean isValid(); /** * Check if the value is valid for this qualifier, and if so sets the value * into a Folder Configuration. * @param value The value to check and set. Must not be null. * @param config The folder configuration to receive the value. Must not be null. * @return true if the value was valid and was set. */ public abstract boolean checkAndSet(String value, FolderConfiguration config); /** * Returns a string formated to be used in a folder name. * <p/>This is declared as abstract to force children classes to implement it. */ @Override public abstract String toString(); /** * Returns a string formatted for display purpose. */ public abstract String getStringValue(); /** * Returns <code>true</code> if both objects are equal. * <p/>This is declared as abstract to force children classes to implement it. */ @Override public abstract boolean equals(Object object); /** * Returns a hash code value for the object. * <p/>This is declared as abstract to force children classes to implement it. */ @Override public abstract int hashCode(); public final int compareTo(ResourceQualifier o) { return toString().compareTo(o.toString()); } }