|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectorg.jdesktop.application.AbstractBean
org.jdesktop.application.ResourceManager
public class ResourceManager
The application's ResourceManager provides
read-only cached access to resources in ResourceBundles via the
ResourceMap class. ResourceManager is a
property of the ApplicationContext and most applications
look up resources relative to it, like this:
ApplicationContext appContext = Application.getInstance().getContext();
ResourceMap resourceMap = appContext.getResourceMap(MyClass.class);
String msg = resourceMap.getString("msg");
Icon icon = resourceMap.getIcon("icon");
Color color = resourceMap.getColor("color");
ApplicationContext.getResourceMap()
just delegates to its ResourceManager. The ResourceMap
in this example contains resources from the ResourceBundle named
MyClass, and the rest of the
chain contains resources shared by the entire application.
Resources for a class are defined by an eponymous ResourceBundle
in a resources subpackage. The Application class itself
may also provide resources. A complete
description of the naming conventions for ResourceBundles is provided
by the getResourceMap() method.
The mapping from classes and Application to a list
ResourceBundle names is handled by two protected methods:
getClassBundleNames,
getApplicationBundleNames.
Subclasses could override these methods to append additional
ResourceBundle names to the default lists.
ApplicationContext.getResourceManager(),
ApplicationContext.getResourceMap(java.lang.Class),
ResourceMap| Constructor Summary | |
|---|---|
protected |
ResourceManager(ApplicationContext context)
Construct a ResourceManager. |
| Method Summary | |
|---|---|
protected ResourceMap |
createResourceMap(java.lang.ClassLoader classLoader,
ResourceMap parent,
java.util.List<java.lang.String> bundleNames)
Called by getResourceMap(java.lang.Class, java.lang.Class) to construct ResourceMaps. |
java.util.List<java.lang.String> |
getApplicationBundleNames()
The names of the ResourceBundles to be shared by the entire application. |
protected java.util.List<java.lang.String> |
getClassBundleNames(java.lang.Class cls)
Map from a class to a list of the names of the ResourceBundles specific to the class. |
protected ApplicationContext |
getContext()
|
java.lang.String |
getPlatform()
The value of the special Application ResourceMap resource named "platform". |
ResourceMap |
getResourceMap()
Returns the chain of ResourceMaps that's shared by the entire application, beginning with the resources defined for the application's class, i.e. |
ResourceMap |
getResourceMap(java.lang.Class cls)
Return the ResourcedMap chain for the specified class. |
ResourceMap |
getResourceMap(java.lang.Class startClass,
java.lang.Class stopClass)
Returns a chain of ResourceMaps
that encapsulate the ResourceBundles for each class
from startClass to (including) stopClass. |
void |
setApplicationBundleNames(java.util.List<java.lang.String> bundleNames)
Specify the names of the ResourceBundles to be shared by the entire application. |
void |
setPlatform(java.lang.String platform)
Defines the value of the special Application ResourceMap resource named "platform". |
| Methods inherited from class org.jdesktop.application.AbstractBean |
|---|
addPropertyChangeListener, addPropertyChangeListener, firePropertyChange, firePropertyChange, getPropertyChangeListeners, removePropertyChangeListener, removePropertyChangeListener |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
protected ResourceManager(ApplicationContext context)
ResourceManager. Typically applications
will not create a ResourceManager directly, they'll retrieve
the shared one from the ApplicationContext with:
Application.getInstance().getContext().getResourceManager()Or just look up
ResourceMaps with the ApplicationContext
convenience method:
Application.getInstance().getContext().getResourceMap(MyClass.class)FIXME - @param javadoc
ApplicationContext.getResourceManager(),
ApplicationContext.getResourceMap(java.lang.Class)| Method Detail |
|---|
protected final ApplicationContext getContext()
public ResourceMap getResourceMap(java.lang.Class startClass,
java.lang.Class stopClass)
chain of ResourceMaps
that encapsulate the ResourceBundles for each class
from startClass to (including) stopClass. The
final link in the chain is Application ResourceMap chain, i.e.
the value of getResourceMap().
The ResourceBundle names for the chain of ResourceMaps
are defined by getClassBundleNames(java.lang.Class) and
getApplicationBundleNames(). Collectively they define the
standard location for ResourceBundles for a particular
class as the resources subpackage. For example, the
ResourceBundle for the single class com.myco.MyScreen, would
be named com.myco.resources.MyScreen. Typical
ResourceBundles are ".properties" files, so: com/foo/bar/resources/MyScreen.properties. The following table
is a list of the ResourceMaps and their constituent
ResourceBundles for the same example:
| ResourceMap | ResourceBundle names | Typical ResourceBundle files | |
|---|---|---|---|
| 1 | class: com.myco.MyScreen | com.myco.resources.MyScreen | com/myco/resources/MyScreen.properties |
| 2/td> | application: com.myco.MyApp | com.myco.resources.MyApp | com/myco/resources/MyApp.properties |
| 3 | application: javax.swing.application.Application | javax.swing.application.resources.Application | javax.swing.application.resources.Application.properties |
None of the ResourceBundles are required to exist. If more than one ResourceBundle contains a resource with the same name then the one earlier in the list has precedence
ResourceMaps are constructed lazily and cached. One ResourceMap is constructed for each sequence of classes in the same package.
startClass - the first class whose ResourceBundles will be includedstopClass - the last class whose ResourceBundles will be included
ResourceMap chain that contains resources loaded from
ResourceBundles found in the resources subpackage for
each class.getClassBundleNames(java.lang.Class),
getApplicationBundleNames(),
ResourceMap.getParent(),
ResourceMap.getBundleNames()public final ResourceMap getResourceMap(java.lang.Class cls)
getResourceMap(cls, cls).
cls - the class that defines the location of ResourceBundles
ResourceMap that contains resources loaded from
ResourceBundles found in the resources subpackage of the
specified class's package.getResourceMap(Class, Class)public ResourceMap getResourceMap()
applicationClass property.
If the applicationClass property has not been set, e.g. because
the application has not been launched yet,
then a ResourceMap for just Application.class is returned.
ApplicationContext.getResourceMap(),
ApplicationContext.getApplicationClass()public java.util.List<java.lang.String> getApplicationBundleNames()
The default value for this property is a list of per-class ResourceBundle names, beginning
with the Application's class and of each of its
superclasses, up to Application.class.
For example, if the Application's class was
com.foo.bar.MyApp, and MyApp was a subclass
of SingleFrameApplication.class, then the
ResourceBundle names would be:
The default value of this property is computed lazily and
cached. If it's reset, then all ResourceMaps cached by
getResourceMap will be updated.
setApplicationBundleNames(java.util.List) ,
getResourceMap(java.lang.Class, java.lang.Class),
getClassBundleNames(java.lang.Class),
ApplicationContext.getApplication()public void setApplicationBundleNames(java.util.List<java.lang.String> bundleNames)
getApplicationBundleNames() method.
setApplicationBundleNames(java.util.List) protected java.util.List<java.lang.String> getClassBundleNames(java.lang.Class cls)
ResourceBundles specific to the class.
The list is in priority order: resources defined
by the first ResourceBundle shadow resources with the
the same name that come later.
By default this method returns one ResourceBundle
whose name is the same as the class's name, but in the
"resources" subpackage.
For example, given a class named
com.foo.bar.MyClass, the ResourceBundle name would
be "com.foo.bar.resources.MyClass". If MyClass is
an inner class, only its "simple name" is used. For example,
given an inner class named com.foo.bar.OuterClass$InnerClass,
the ResourceBundle name would be
"com.foo.bar.resources.InnerClass".
This method is used by the getResourceMap methods
to compute the list of ResourceBundle names
for a new ResourceMap. ResourceManager subclasses
can override this method to add additional class-specific
ResourceBundle names to the list.
cls - the named ResourceBundles are specific to cls.
clsgetResourceMap(java.lang.Class, java.lang.Class),
getApplicationBundleNames()
protected ResourceMap createResourceMap(java.lang.ClassLoader classLoader,
ResourceMap parent,
java.util.List<java.lang.String> bundleNames)
getResourceMap(java.lang.Class, java.lang.Class) to construct ResourceMaps.
By default this method is effectively just:
return new ResourceMap(parent, classLoader, bundleNames);Custom ResourceManagers might override this method to construct their own ResourceMap subclasses.
public java.lang.String getPlatform()
setPlatform(java.lang.String)public void setPlatform(java.lang.String platform)
myLabel.text.osx = A value that's appropriate for OSX
myLabel.text.default = A value for other platforms
myLabel.text = myLabel.text.${platform}
By default the value of this resource is "osx" if the
underlying operating environment is Apple OSX or "default".
To distinguish other platforms one can reset this property
based on the value of the "os.name" system property.
This method should be called as early as possible, typically
in the Application initialize
method.
getPlatform(),
System.getProperty(java.lang.String)
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||