blob: f7fb93f26ae79e5409b46f628156f722217a54b1 [file] [log] [blame]
/*
* 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.adt.internal.resources.manager;
import com.android.ide.eclipse.adt.internal.resources.ResourceType;
import com.android.ide.eclipse.adt.internal.resources.configurations.FolderConfiguration;
import com.android.ide.eclipse.adt.internal.resources.manager.files.IAbstractFile;
import com.android.layoutlib.api.IResourceValue;
import java.util.Collection;
/**
* Represents a Resource file (a file under $Project/res/)
*/
public abstract class ResourceFile extends Resource {
private final IAbstractFile mFile;
private final ResourceFolder mFolder;
protected ResourceFile(IAbstractFile file, ResourceFolder folder) {
mFile = file;
mFolder = folder;
}
/*
* (non-Javadoc)
* @see com.android.ide.eclipse.editors.resources.manager.Resource#getConfiguration()
*/
@Override
public FolderConfiguration getConfiguration() {
return mFolder.getConfiguration();
}
/**
* Returns the IFile associated with the ResourceFile.
*/
public final IAbstractFile getFile() {
return mFile;
}
/**
* Returns the parent folder as a {@link ResourceFolder}.
*/
public final ResourceFolder getFolder() {
return mFolder;
}
/**
* Returns whether the resource is a framework resource.
*/
public final boolean isFramework() {
return mFolder.isFramework();
}
/**
* Returns the list of {@link ResourceType} generated by the file.
*/
public abstract ResourceType[] getResourceTypes();
/**
* Returns whether the file generated a resource of a specific type.
* @param type The {@link ResourceType}
*/
public abstract boolean hasResources(ResourceType type);
/**
* Get the list of {@link ProjectResourceItem} of a specific type generated by the file.
* This method must make sure not to create duplicate.
* @param type The type of {@link ProjectResourceItem} to return.
* @param projectResources The global Project Resource object, allowing the implementation to
* query for already existing {@link ProjectResourceItem}
* @return The list of <b>new</b> {@link ProjectResourceItem}
* @see ProjectResources#findResourceItem(ResourceType, String)
*/
public abstract Collection<ProjectResourceItem> getResources(ResourceType type,
ProjectResources projectResources);
/**
* Returns the value of a resource generated by this file by {@link ResourceType} and name.
* <p/>If no resource match, <code>null</code> is returned.
* @param type the type of the resource.
* @param name the name of the resource.
*/
public abstract IResourceValue getValue(ResourceType type, String name);
}