com.android.ide.common.resources
Class ResourceResolver

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

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


Nested Class Summary
 
Nested classes/interfaces inherited from class com.android.ide.common.rendering.api.RenderResources
com.android.ide.common.rendering.api.RenderResources.FrameworkResourceIdProvider
 
Field Summary
static java.lang.String ATTR_EXAMPLE
           
static int MAX_RESOURCE_INDIRECTION
          Number of indirections we'll follow for resource resolution before assuming there is a cyclic dependency error in the input
static java.lang.String THEME_NAME
           
static java.lang.String THEME_NAME_DOT
           
static java.lang.String XLIFF_G_TAG
           
static java.lang.String XLIFF_NAMESPACE_PREFIX
           
 
Fields inherited from class com.android.ide.common.rendering.api.RenderResources
REFERENCE_NULL
 
Method Summary
 void applyStyle(com.android.ide.common.rendering.api.StyleResourceValue theme, boolean useAsPrimary)
           
 void clearStyles()
           
static ResourceResolver create(java.util.Map<com.android.resources.ResourceType,java.util.Map<java.lang.String,com.android.ide.common.rendering.api.ResourceValue>> projectResources, java.util.Map<com.android.resources.ResourceType,java.util.Map<java.lang.String,com.android.ide.common.rendering.api.ResourceValue>> frameworkResources, java.lang.String themeName, boolean isProjectTheme)
          Creates a new ResourceResolver object.
 ResourceResolver createRecorder(java.util.List<com.android.ide.common.rendering.api.ResourceValue> lookupChain)
          Creates a new ResourceResolver which records all resource resolution lookups into the given list.
 com.android.ide.common.rendering.api.ResourceValue findItemInStyle(com.android.ide.common.rendering.api.StyleResourceValue style, java.lang.String attrName)
          Deprecated. 
 com.android.ide.common.rendering.api.ResourceValue findItemInStyle(com.android.ide.common.rendering.api.StyleResourceValue style, java.lang.String itemName, boolean isFrameworkAttr)
           
 com.android.ide.common.rendering.api.ResourceValue findResValue(java.lang.String reference, boolean forceFrameworkOnly)
           
 java.util.List<com.android.ide.common.rendering.api.StyleResourceValue> getAllThemes()
           
 com.android.ide.common.rendering.api.StyleResourceValue getDefaultTheme()
           
 com.android.ide.common.rendering.api.ResourceValue getFrameworkResource(com.android.resources.ResourceType resourceType, java.lang.String resourceName)
           
 java.util.Map<com.android.resources.ResourceType,java.util.Map<java.lang.String,com.android.ide.common.rendering.api.ResourceValue>> getFrameworkResources()
           
 com.android.ide.common.rendering.api.ResourceValue getProjectResource(com.android.resources.ResourceType resourceType, java.lang.String resourceName)
           
 java.util.Map<com.android.resources.ResourceType,java.util.Map<java.lang.String,com.android.ide.common.rendering.api.ResourceValue>> getProjectResources()
           
 com.android.ide.common.rendering.api.StyleResourceValue getTheme(java.lang.String name, boolean frameworkTheme)
           
 java.lang.String getThemeName()
           
 boolean isProjectTheme()
           
 boolean isTheme(com.android.ide.common.rendering.api.ResourceValue value, java.util.Map<com.android.ide.common.rendering.api.ResourceValue,java.lang.Boolean> cache)
          Returns true if the given ResourceValue represents a theme
 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 setDeviceDefaults(java.lang.String lightStyle, java.lang.String darkStyle)
          Sets up the light and dark default styles with the given concrete styles.
 void setFrameworkResourceIdProvider(com.android.ide.common.rendering.api.RenderResources.FrameworkResourceIdProvider provider)
           
 void setLogger(com.android.ide.common.rendering.api.LayoutLog logger)
           
 boolean themeExtends(java.lang.String parentStyle, java.lang.String themeStyle)
          Returns true if the given themeStyle extends the theme given by parentStyle
 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
findItemInTheme, findItemInTheme, getCurrentTheme
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

THEME_NAME

public static final java.lang.String THEME_NAME
See Also:
Constant Field Values

THEME_NAME_DOT

public static final java.lang.String THEME_NAME_DOT
See Also:
Constant Field Values

XLIFF_NAMESPACE_PREFIX

public static final java.lang.String XLIFF_NAMESPACE_PREFIX
See Also:
Constant Field Values

XLIFF_G_TAG

public static final java.lang.String XLIFF_G_TAG
See Also:
Constant Field Values

ATTR_EXAMPLE

public static final java.lang.String ATTR_EXAMPLE
See Also:
Constant Field Values

MAX_RESOURCE_INDIRECTION

public static final int MAX_RESOURCE_INDIRECTION
Number of indirections we'll follow for resource resolution before assuming there is a cyclic dependency error in the input

See Also:
Constant Field Values
Method Detail

create

public static ResourceResolver create(java.util.Map<com.android.resources.ResourceType,java.util.Map<java.lang.String,com.android.ide.common.rendering.api.ResourceValue>> projectResources,
                                      java.util.Map<com.android.resources.ResourceType,java.util.Map<java.lang.String,com.android.ide.common.rendering.api.ResourceValue>> frameworkResources,
                                      java.lang.String themeName,
                                      boolean isProjectTheme)
Creates a new ResourceResolver object.

Parameters:
projectResources - the project resources.
frameworkResources - the framework resources.
themeName - the name of the current theme.
isProjectTheme - Is this a project theme?
Returns:
a new ResourceResolver

setDeviceDefaults

public void setDeviceDefaults(@Nullable
                              java.lang.String lightStyle,
                              @Nullable
                              java.lang.String darkStyle)
Sets up the light and dark default styles with the given concrete styles. This is used if we want to override the defaults configured in the framework for this particular platform.


getThemeName

public java.lang.String getThemeName()

isProjectTheme

public boolean isProjectTheme()

getProjectResources

public java.util.Map<com.android.resources.ResourceType,java.util.Map<java.lang.String,com.android.ide.common.rendering.api.ResourceValue>> getProjectResources()

getFrameworkResources

public java.util.Map<com.android.resources.ResourceType,java.util.Map<java.lang.String,com.android.ide.common.rendering.api.ResourceValue>> getFrameworkResources()

setFrameworkResourceIdProvider

public void setFrameworkResourceIdProvider(com.android.ide.common.rendering.api.RenderResources.FrameworkResourceIdProvider provider)
Overrides:
setFrameworkResourceIdProvider in class com.android.ide.common.rendering.api.RenderResources

setLogger

public void setLogger(com.android.ide.common.rendering.api.LayoutLog logger)
Overrides:
setLogger in class com.android.ide.common.rendering.api.RenderResources

getDefaultTheme

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

applyStyle

public void applyStyle(com.android.ide.common.rendering.api.StyleResourceValue theme,
                       boolean useAsPrimary)
Overrides:
applyStyle in class com.android.ide.common.rendering.api.RenderResources

clearStyles

public void clearStyles()
Overrides:
clearStyles in class com.android.ide.common.rendering.api.RenderResources

getAllThemes

public java.util.List<com.android.ide.common.rendering.api.StyleResourceValue> getAllThemes()
Overrides:
getAllThemes 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

getFrameworkResource

public com.android.ide.common.rendering.api.ResourceValue getFrameworkResource(com.android.resources.ResourceType resourceType,
                                                                               java.lang.String resourceName)
Overrides:
getFrameworkResource in class com.android.ide.common.rendering.api.RenderResources

getProjectResource

public com.android.ide.common.rendering.api.ResourceValue getProjectResource(com.android.resources.ResourceType resourceType,
                                                                             java.lang.String resourceName)
Overrides:
getProjectResource in class com.android.ide.common.rendering.api.RenderResources

findItemInStyle

@Deprecated
public com.android.ide.common.rendering.api.ResourceValue findItemInStyle(com.android.ide.common.rendering.api.StyleResourceValue style,
                                                                                     java.lang.String attrName)
Deprecated. 

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 itemName,
                                                                          boolean isFrameworkAttr)
Overrides:
findItemInStyle in class com.android.ide.common.rendering.api.RenderResources

findResValue

public com.android.ide.common.rendering.api.ResourceValue findResValue(java.lang.String reference,
                                                                       boolean forceFrameworkOnly)
Overrides:
findResValue 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

resolveResValue

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

isTheme

public boolean isTheme(@NonNull
                       com.android.ide.common.rendering.api.ResourceValue value,
                       @Nullable
                       java.util.Map<com.android.ide.common.rendering.api.ResourceValue,java.lang.Boolean> cache)
Returns true if the given ResourceValue represents a theme


themeExtends

public boolean themeExtends(@NonNull
                            java.lang.String parentStyle,
                            @NonNull
                            java.lang.String themeStyle)
Returns true if the given themeStyle extends the theme given by parentStyle


createRecorder

public ResourceResolver createRecorder(java.util.List<com.android.ide.common.rendering.api.ResourceValue> lookupChain)
Creates a new ResourceResolver which records all resource resolution lookups into the given list. Note that it is the responsibility of the caller to clear/reset the list between subsequent lookup operations.

Parameters:
lookupChain - the list to write resource lookups into
Returns:
a new ResourceResolver