diff options
Diffstat (limited to 'sdk_common/src/com/android/ide/common/resources/ResourceItem.java')
-rw-r--r-- | sdk_common/src/com/android/ide/common/resources/ResourceItem.java | 239 |
1 files changed, 0 insertions, 239 deletions
diff --git a/sdk_common/src/com/android/ide/common/resources/ResourceItem.java b/sdk_common/src/com/android/ide/common/resources/ResourceItem.java deleted file mode 100644 index 49396eb..0000000 --- a/sdk_common/src/com/android/ide/common/resources/ResourceItem.java +++ /dev/null @@ -1,239 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * 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 com.android.ide.common.resources; - -import com.android.ide.common.rendering.api.ResourceValue; -import com.android.ide.common.resources.configuration.FolderConfiguration; -import com.android.resources.ResourceType; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; - -/** - * An android resource. - * - * This is a representation of the resource, not of its value(s). It gives access to all - * the source files that generate this particular resource which then can be used to access - * the actual value(s). - * - * @see ResourceFile#getResources(ResourceType, ResourceRepository) - */ -public class ResourceItem implements Comparable<ResourceItem> { - - private final static Comparator<ResourceFile> sComparator = new Comparator<ResourceFile>() { - @Override - public int compare(ResourceFile file1, ResourceFile file2) { - // get both FolderConfiguration and compare them - FolderConfiguration fc1 = file1.getFolder().getConfiguration(); - FolderConfiguration fc2 = file2.getFolder().getConfiguration(); - - return fc1.compareTo(fc2); - } - }; - - private final String mName; - - /** - * List of files generating this ResourceItem. - */ - private final List<ResourceFile> mFiles = new ArrayList<ResourceFile>(); - - /** - * Constructs a new ResourceItem. - * @param name the name of the resource as it appears in the XML and R.java files. - */ - public ResourceItem(String name) { - mName = name; - } - - /** - * Returns the name of the resource. - */ - public final String getName() { - return mName; - } - - /** - * Compares the {@link ResourceItem} to another. - * @param other the ResourceItem to be compared to. - */ - @Override - public int compareTo(ResourceItem other) { - return mName.compareTo(other.mName); - } - - /** - * Returns whether the resource is editable directly. - * <p/> - * This is typically the case for resources that don't have alternate versions, or resources - * of type {@link ResourceType#ID} that aren't declared inline. - */ - public boolean isEditableDirectly() { - return hasAlternates() == false; - } - - /** - * Returns whether the ID resource has been declared inline inside another resource XML file. - * If the resource type is not {@link ResourceType#ID}, this will always return {@code false}. - */ - public boolean isDeclaredInline() { - return false; - } - - /** - * Returns a {@link ResourceValue} for this item based on the given configuration. - * If the ResourceItem has several source files, one will be selected based on the config. - * @param type the type of the resource. This is necessary because ResourceItem doesn't embed - * its type, but ResourceValue does. - * @param referenceConfig the config of the resource item. - * @param isFramework whether the resource is a framework value. Same as the type. - * @return a ResourceValue or null if none match the config. - */ - public ResourceValue getResourceValue(ResourceType type, FolderConfiguration referenceConfig, - boolean isFramework) { - // look for the best match for the given configuration - // the match has to be of type ResourceFile since that's what the input list contains - ResourceFile match = (ResourceFile) referenceConfig.findMatchingConfigurable(mFiles); - - if (match != null) { - // get the value of this configured resource. - return match.getValue(type, mName); - } - - return null; - } - - /** - * Adds a new source file. - * @param file the source file. - */ - protected void add(ResourceFile file) { - mFiles.add(file); - } - - /** - * Removes a file from the list of source files. - * @param file the file to remove - */ - protected void removeFile(ResourceFile file) { - mFiles.remove(file); - } - - /** - * Returns {@code true} if the item has no source file. - * @return - */ - protected boolean hasNoSourceFile() { - return mFiles.size() == 0; - } - - /** - * Reset the item by emptying its source file list. - */ - protected void reset() { - mFiles.clear(); - } - - /** - * Returns the sorted list of {@link ResourceItem} objects for this resource item. - */ - public ResourceFile[] getSourceFileArray() { - ArrayList<ResourceFile> list = new ArrayList<ResourceFile>(); - list.addAll(mFiles); - - Collections.sort(list, sComparator); - - return list.toArray(new ResourceFile[list.size()]); - } - - /** - * Returns the list of source file for this resource. - */ - public List<ResourceFile> getSourceFileList() { - return Collections.unmodifiableList(mFiles); - } - - /** - * Returns if the resource has at least one non-default version. - * - * @see ResourceFile#getConfiguration() - * @see FolderConfiguration#isDefault() - */ - public boolean hasAlternates() { - for (ResourceFile file : mFiles) { - if (file.getFolder().getConfiguration().isDefault() == false) { - return true; - } - } - - return false; - } - - /** - * Returns whether the resource has a default version, with no qualifier. - * - * @see ResourceFile#getConfiguration() - * @see FolderConfiguration#isDefault() - */ - public boolean hasDefault() { - for (ResourceFile file : mFiles) { - if (file.getFolder().getConfiguration().isDefault()) { - return true; - } - } - - // We only want to return false if there's no default and more than 0 items. - return (mFiles.size() == 0); - } - - /** - * Returns the number of alternate versions for this resource. - * - * @see ResourceFile#getConfiguration() - * @see FolderConfiguration#isDefault() - */ - public int getAlternateCount() { - int count = 0; - for (ResourceFile file : mFiles) { - if (file.getFolder().getConfiguration().isDefault() == false) { - count++; - } - } - - return count; - } - - /** - * Returns a formatted string usable in an XML to use for the {@link ResourceItem}. - * @param system Whether this is a system resource or a project resource. - * @return a string in the format @[type]/[name] - */ - public String getXmlString(ResourceType type, boolean system) { - if (type == ResourceType.ID && isDeclaredInline()) { - return (system ? "@android:" : "@+") + type.getName() + "/" + mName; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - } - - return (system ? "@android:" : "@") + type.getName() + "/" + mName; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - } - - @Override - public String toString() { - return "ResourceItem [mName=" + mName + ", mFiles=" + mFiles + "]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - } -} |