com.android.ide.common.resources
Class ResourceItemResolver

java.lang.Object
  extended by com.android.ide.common.rendering.api.RenderResources
      extended by com.android.ide.common.resources.ResourceItemResolver

public class ResourceItemResolver
extends com.android.ide.common.rendering.api.RenderResources

Like ResourceResolver but for a single item, so it does not need the full resource maps to be resolved up front. Typically used for cases where we may not have fully configured resource maps and we need to look up a specific value, such as in Android Studio where a color reference is found in an XML style file, and we want to resolve it in order to display the final resolved color in the editor margin.


Nested Class Summary
static interface ResourceItemResolver.ResourceProvider
          Interface implemented by clients of the ResourceItemResolver which allows it to lazily look up the project resources, the framework resources and optionally to provide a fully configured resource resolver, if any
 
Nested classes/interfaces inherited from class com.android.ide.common.rendering.api.RenderResources
com.android.ide.common.rendering.api.RenderResources.FrameworkResourceIdProvider
 
Field Summary
 
Fields inherited from class com.android.ide.common.rendering.api.RenderResources
REFERENCE_NULL
 
Constructor Summary
ResourceItemResolver(FolderConfiguration configuration, ResourceItemResolver.ResourceProvider resourceProvider, com.android.ide.common.rendering.api.LayoutLog logger)
           
ResourceItemResolver(FolderConfiguration configuration, ResourceRepository frameworkResources, AbstractResourceRepository appResources, com.android.ide.common.rendering.api.LayoutLog logger)
           
 
Method Summary
 com.android.ide.common.rendering.api.ResourceValue findItemInStyle(com.android.ide.common.rendering.api.StyleResourceValue style, java.lang.String attrName)
           
 com.android.ide.common.rendering.api.ResourceValue findItemInStyle(com.android.ide.common.rendering.api.StyleResourceValue style, java.lang.String attrName, boolean isFrameworkAttr)
           
 com.android.ide.common.rendering.api.ResourceValue findItemInTheme(java.lang.String itemName)
           
 com.android.ide.common.rendering.api.ResourceValue findItemInTheme(java.lang.String attrName, boolean isFrameworkAttr)
           
 com.android.ide.common.rendering.api.ResourceValue findResValue(java.lang.String reference, boolean inFramework)
           
 com.android.ide.common.rendering.api.StyleResourceValue getCurrentTheme()
           
static java.lang.String getDisplayString(com.android.resources.ResourceType type, java.lang.String name, boolean isFramework, java.util.List<com.android.ide.common.rendering.api.ResourceValue> lookupChain)
          Returns a display string for a resource lookup
static java.lang.String getDisplayString(java.lang.String url, java.util.List<com.android.ide.common.rendering.api.ResourceValue> lookupChain)
          Returns a display string for a resource lookup
 java.util.List<com.android.ide.common.rendering.api.ResourceValue> getLookupChain()
          Returns the lookup chain being used by this resolver
 com.android.ide.common.rendering.api.StyleResourceValue getTheme(java.lang.String name, boolean frameworkTheme)
           
 com.android.ide.common.rendering.api.ResourceValue resolveResValue(com.android.ide.common.rendering.api.ResourceValue resValue)
           
 com.android.ide.common.rendering.api.ResourceValue resolveValue(com.android.resources.ResourceType type, java.lang.String name, java.lang.String value, boolean isFrameworkValue)
           
 void setLookupChainList(java.util.List<com.android.ide.common.rendering.api.ResourceValue> lookupChain)
          Optional method to set a list the resolver should record all value resolutions into.
 boolean themeIsParentOf(com.android.ide.common.rendering.api.StyleResourceValue parentTheme, com.android.ide.common.rendering.api.StyleResourceValue childTheme)
           
 
Methods inherited from class com.android.ide.common.rendering.api.RenderResources
applyStyle, clearStyles, getAllThemes, getDefaultTheme, getFrameworkResource, getProjectResource, setFrameworkResourceIdProvider, setLogger
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ResourceItemResolver

public ResourceItemResolver(@NonNull
                            FolderConfiguration configuration,
                            @NonNull
                            ResourceItemResolver.ResourceProvider resourceProvider,
                            @Nullable
                            com.android.ide.common.rendering.api.LayoutLog logger)

ResourceItemResolver

public ResourceItemResolver(@NonNull
                            FolderConfiguration configuration,
                            @NonNull
                            ResourceRepository frameworkResources,
                            @NonNull
                            AbstractResourceRepository appResources,
                            @Nullable
                            com.android.ide.common.rendering.api.LayoutLog logger)
Method Detail

resolveResValue

@Nullable
public com.android.ide.common.rendering.api.ResourceValue resolveResValue(@Nullable
                                                                                   com.android.ide.common.rendering.api.ResourceValue resValue)
Overrides:
resolveResValue in class com.android.ide.common.rendering.api.RenderResources

findResValue

@Nullable
public com.android.ide.common.rendering.api.ResourceValue findResValue(@Nullable
                                                                                java.lang.String reference,
                                                                                boolean inFramework)
Overrides:
findResValue in class com.android.ide.common.rendering.api.RenderResources

getCurrentTheme

public com.android.ide.common.rendering.api.StyleResourceValue getCurrentTheme()
Overrides:
getCurrentTheme in class com.android.ide.common.rendering.api.RenderResources

resolveValue

public com.android.ide.common.rendering.api.ResourceValue resolveValue(com.android.resources.ResourceType type,
                                                                       java.lang.String name,
                                                                       java.lang.String value,
                                                                       boolean isFrameworkValue)
Overrides:
resolveValue in class com.android.ide.common.rendering.api.RenderResources

getTheme

public com.android.ide.common.rendering.api.StyleResourceValue getTheme(java.lang.String name,
                                                                        boolean frameworkTheme)
Overrides:
getTheme in class com.android.ide.common.rendering.api.RenderResources

themeIsParentOf

public boolean themeIsParentOf(com.android.ide.common.rendering.api.StyleResourceValue parentTheme,
                               com.android.ide.common.rendering.api.StyleResourceValue childTheme)
Overrides:
themeIsParentOf in class com.android.ide.common.rendering.api.RenderResources

findItemInTheme

public com.android.ide.common.rendering.api.ResourceValue findItemInTheme(java.lang.String itemName)
Overrides:
findItemInTheme in class com.android.ide.common.rendering.api.RenderResources

findItemInTheme

public com.android.ide.common.rendering.api.ResourceValue findItemInTheme(java.lang.String attrName,
                                                                          boolean isFrameworkAttr)
Overrides:
findItemInTheme in class com.android.ide.common.rendering.api.RenderResources

findItemInStyle

public com.android.ide.common.rendering.api.ResourceValue findItemInStyle(com.android.ide.common.rendering.api.StyleResourceValue style,
                                                                          java.lang.String attrName)
Overrides:
findItemInStyle in class com.android.ide.common.rendering.api.RenderResources

findItemInStyle

public com.android.ide.common.rendering.api.ResourceValue findItemInStyle(com.android.ide.common.rendering.api.StyleResourceValue style,
                                                                          java.lang.String attrName,
                                                                          boolean isFrameworkAttr)
Overrides:
findItemInStyle in class com.android.ide.common.rendering.api.RenderResources

setLookupChainList

public void setLookupChainList(@Nullable
                               java.util.List<com.android.ide.common.rendering.api.ResourceValue> lookupChain)
Optional method to set a list the resolver should record all value resolutions into. Useful if you want to find out the resolution chain for a resource, e.g. @color/buttonForeground => @color/foreground => @android:color/black .

There is no getter. Clients setting this list should look it up themselves. Note also that if this resolver has to delegate to a full resource resolver, e.g. to follow theme attributes, those resolutions will not be recorded.

Parameters:
lookupChain - the list to set, or null

getLookupChain

@Nullable
public java.util.List<com.android.ide.common.rendering.api.ResourceValue> getLookupChain()
Returns the lookup chain being used by this resolver


getDisplayString

public static java.lang.String getDisplayString(@NonNull
                                                com.android.resources.ResourceType type,
                                                @NonNull
                                                java.lang.String name,
                                                boolean isFramework,
                                                @NonNull
                                                java.util.List<com.android.ide.common.rendering.api.ResourceValue> lookupChain)
Returns a display string for a resource lookup

Parameters:
type - the resource type
name - the resource name
isFramework - whether the item is in the framework
lookupChain - the list of resolved items to display
Returns:
the display string

getDisplayString

@NonNull
public static java.lang.String getDisplayString(@NonNull
                                                        java.lang.String url,
                                                        @NonNull
                                                        java.util.List<com.android.ide.common.rendering.api.ResourceValue> lookupChain)
Returns a display string for a resource lookup

Parameters:
url - the resource url, such as @string/foo
lookupChain - the list of resolved items to display
Returns:
the display string