Kanzi 4.1.0
ResourceDictionary Class Reference

A resource dictionary is a container that maps resource IDs to resources. More...

Inheritance diagram for ResourceDictionary:
[legend]

Classes

class  UrlMapPair
 Represents a record in resource ID to URL map as a key-URL pair. More...
 

Public Member Functions

ObjectRef< Resourceacquire (ResourceID key)
 Gets from the resource dictionary the resource with the resource ID that you pass to the function.
 
ResourceManager.AcquireTask acquireAsync (ResourceID key, ResourceManager.AcquireTask.Callback callback)
 Asynchronously acquires a resource.
 
String find (ResourceID key)
 Resolves the mapping from the resource ID that you pass to the function to the URL of the resource.
 
Iterable< ResourceiterateAnonymousResources ()
 Returns an Iterable object that you can use to iterate the anonymous resources stored by this resource dictionary object.
 
Iterable< UrlMapPairiterateUrls ()
 Returns an Iterable object that you can use to iterate elements of the URL mappings container.
 
Iterable< ResourceDictionaryreverseIterateNestedResourceDictionaries ()
 Returns an Iterable object that you can use to iterate nested resource dictionary container in reversed order.
 
- Public Member Functions inherited from ResourceDictionaryProxy
void add (ResourceDictionary resourceDictionary)
 Adds a nested resource dictionary to a resource dictionary.
 
void add (ResourceID key, Resource resource)
 Adds a resource ID to a resource handle mapping to a resource dictionary.
 
void add (ResourceID key, String url)
 Adds a resource ID to a resource URL mapping to a resource dictionary.
 
void addAnonymousResource (Resource resource)
 Adds an anonymous resource to a resource dictionary.
 
ObjectRef< ResourceDictionaryclone ()
 Duplicates a resource dictionary.
 
boolean contains (ResourceID key)
 Returns whether a resource dictionary contains a mapping for the resource ID that you pass to the function.
 
ResourceDictionary findDictionary (String name)
 Searches for a nested dictionary with the specified name and returns a handle to it.
 
Resource findStoredResource (ResourceID key)
 Finds an explicitly stored resource handle from a dictionary.
 
int getDictionaryCount ()
 Gets the number of nested resource dictionaries in a resource dictionary.
 
void merge (ResourceDictionary preferredDictionary)
 Copies into this resource dictionary the contents of the resource dictionary that you pass to the function.
 
void remove (ResourceID key)
 Removes a resource ID mapping from a resource dictionary.
 
void removeAnonymousResource (Resource resource)
 Removes an anonymous resource from the resource dictionary.
 
void removeDictionary (int index)
 Removes a nested resource dictionary from a resource dictionary.
 
- Public Member Functions inherited from ResourceProxy
String getName ()
 Gets the resource name.
 
String getUrl ()
 Gets the resource URL.
 
void setKeepAlive (boolean keepAlive)
 Sets the keep alive flag.
 
- Public Member Functions inherited from KanziObject
boolean equals (Object object)
 
Domain getDomain ()
 Returns the domain the object belongs to.
 
Metaclass getDynamicMetaclass ()
 Returns the metaclass of the dynamic type of the object.
 
long getNative ()
 Gets a pointer to the backing C++ instance.
 
TDataType getOptionalProperty (PropertyType< TDataType > propertyType)
 Returns the current value of a property type, but does not use the default value if there are no inputs to the property value.
 
TDataType getProperty (PropertyType< TDataType > propertyType)
 Returns the current value of a property type.
 
int hashCode ()
 
boolean hasValue (PropertyType< TDataType > propertyType)
 Evaluates whether there are any inputs into the property value.
 
boolean isStale ()
 Test if the object is stale i.e.
 
void removeLocalValue (PropertyType< TDataType > propertyType)
 Removes the local value associated with the property.
 
void setFlagKeepDuringPatching (PropertyType< TDataType > propertyType)
 Sets the flag to indicate that the property was loaded from KZB.
 
void setProperty (PropertyType< TDataType > propertyType, TDataType value)
 Sets the local value of a property type.
 
ObjectRef< TTypetryCreateObjectRef (Class< TType > clazz)
 Tries to create an owning ObjectRef instance to this KanziObject.
 

Static Public Attributes

static final Metaclass metaclass = ResourceDictionaryProxy.metaclass
 The Metaclass for the class.
 
- Static Public Attributes inherited from ResourceDictionaryProxy
static final Metaclass metaclass
 The Metaclass for the class.
 
- Static Public Attributes inherited from Resource
static final Metaclass metaclass
 The Metaclass for the class.
 
- Static Public Attributes inherited from ResourceProxy
static final Metaclass metaclass
 The Metaclass for the class.
 
- Static Public Attributes inherited from KanziObject
static final Metaclass metaclass = new AbstractMetaclass("Kanzi.Object")
 The Metaclass for the class.
 

Additional Inherited Members

- Static Public Member Functions inherited from ResourceDictionaryProxy
static< T extends KanziObject > ObjectRef< T > create (Domain domain, String name)
 Creates a resource dictionary.
 
- Public Attributes inherited from ResourceMetadata
AbstractMetaclass metaclass = new AbstractMetaclass("Kanzi.Resource")
 Metaclass for Resource.
 
- Public Attributes inherited from ResourceDictionaryMetadata
AbstractMetaclass metaclass = new AbstractMetaclass("Kanzi.ResourceDictionary")
 Metaclass for ResourceDictionary.
 

Detailed Description

A resource dictionary is a container that maps resource IDs to resources.

A node can refer to resources by setting resource IDs to resource ID properties. You can set a resource dictionary to the node, or to any of its parent nodes, to define which resources the node uses. You can use a resource dictionary to group similar resources to logical entity, such as themes or locales, and change a resource dictionary of a node to change multiple resources at the same time.

Use Node::acquireResource to get the resource from a resource dictionary of a node or from the resource dictionaries of its parent nodes.

A resource dictionary can map resource IDs to resources in these ways:

  • Directly to a resource
  • Indirectly to a resource with a resource URL

Use com.rightware.kanzi.ResourceDictionary#acquire(ResourceID) and tryAcquire functions to get a mapped resource regardless of the way a resource ID is mapped to a resource.

You can store nested resource dictionaries in a resource dictionary. When you are getting a resource from a resource dictionary and the resource dictionary cannot find the resource ID that you specify, the resource dictionary looks for the resource ID recursively in the nested resource dictionaries.

In a resource dictionary you can store resources without mapping a resource ID to them. In Kanzi such resources are called anonymous resources. You can get anonymous resources with com.rightware.kanzi.ResourceDictionary#iterateAnonymousResources().

Member Function Documentation

◆ acquire()

ObjectRef< Resource > acquire ( ResourceID key)

Gets from the resource dictionary the resource with the resource ID that you pass to the function.

The function forwards the resource URL mappings to ResourceManager::acquireResource. Classes that derive from ResourceDictionary can override the behavior of acquire by implementing acquireOverride.

Parameters
keyThe resource ID of the resource that you want to get.
Returns
The resource to which the resource ID is mapped.
  • If the resource ID is mapped to a resource pointer, the function returns the resource pointer.
  • If the resource ID is mapped to a resource URL, the function uses the URL to query the resource from com.rightware.kanzi.ResourceManager#acquireResource(String).
  • If the resource dictionary has nested resource dictionaries, the function forwards the query to the nested dictionaries. It first searches the last nested resource dictionary and it searches last the first nested resource dictionary.
  • If the resource ID is not mapped to anything in this resource dictionary or any of the nested dictionaries, the function returns nullptr.

Reimplemented from ResourceDictionaryProxy.

◆ acquireAsync()

ResourceManager.AcquireTask acquireAsync ( ResourceID key,
ResourceManager.AcquireTask.Callback callback )

Asynchronously acquires a resource.

If the function cannot find a resource URL mapping, it does not launch an asynchronous task. Kanzi executes the callback only the next time when it executes callbacks, if there are no asynchronous task to launch.

Parameters
keyThe resource ID of the resource that you want to get.
callbackThe callback to execute when loading is complete.
Returns
The launched asynchronous task.

◆ find()

String find ( ResourceID key)

Resolves the mapping from the resource ID that you pass to the function to the URL of the resource.

This function ignores the direct resource ID to resource mappings.

Parameters
keyThe resource ID of the resource for which you want to get the URL.
Returns
If the resource dictionary or a nested resource dictionary contains a resource URL, a resource ID that you passed, otherwise null.

◆ iterateAnonymousResources()

Iterable< Resource > iterateAnonymousResources ( )

Returns an Iterable object that you can use to iterate the anonymous resources stored by this resource dictionary object.

Returns
An Iterable object of the anonymous resources stored by this resource dictionary object.

◆ iterateUrls()

Iterable< UrlMapPair > iterateUrls ( )

Returns an Iterable object that you can use to iterate elements of the URL mappings container.

The elements in the container are represented with the com.rightware.kanzi.ResourceDictionary.UrlMapPair class.

Returns
An Iterable object of the elements of the URL mappings container of this resource dictionary object.

◆ reverseIterateNestedResourceDictionaries()

Iterable< ResourceDictionary > reverseIterateNestedResourceDictionaries ( )

Returns an Iterable object that you can use to iterate nested resource dictionary container in reversed order.

Returns
An Iterable object of nested resource dictionary container in reversed order.