public class FontRegistry extends ResourceRegistry
A font registry owns all of the font objects registered with it, and automatically disposes of them when the SWT Display that creates the fonts is disposed. Because of this, clients do not need to (indeed, must not attempt to) dispose of font objects themselves.
A special constructor is provided for populating a font registry from a property files using the standard Java resource bundle mechanism.
Methods are provided for registering listeners that will be kept apprised of changes to list of registered fonts.
Clients may instantiate this class (it was not designed to be subclassed).
Since 3.0 this class extends ResourceRegistry.Modifier and Type | Field and Description |
---|---|
protected Runnable |
displayRunnable
Runnable that cleans up the manager on disposal of the display.
|
Constructor and Description |
---|
FontRegistry()
Creates an empty font registry.
|
FontRegistry(Display display)
Creates an empty font registry.
|
FontRegistry(Display display,
boolean cleanOnDisplayDisposal)
Creates an empty font registry.
|
FontRegistry(String location)
Load the FontRegistry using the ClassLoader from the PlatformUI
plug-in
This method should only be called from the UI thread.
|
FontRegistry(String location,
ClassLoader loader)
Creates a font registry and initializes its content from
a property file.
|
Modifier and Type | Method and Description |
---|---|
FontData |
bestData(FontData[] fonts,
Display display)
Deprecated.
use bestDataArray in order to support Motif multiple entry
fonts.
|
FontData[] |
bestDataArray(FontData[] fonts,
Display display)
Deprecated.
use filterData in order to preserve
multiple entry fonts on Motif
|
protected void |
clearCaches()
Disposes all currently allocated resources.
|
Font |
defaultFont()
Returns the default font data.
|
FontDescriptor |
defaultFontDescriptor()
Returns the font descriptor for the JFace default font.
|
FontData[] |
filterData(FontData[] fonts,
Display display)
Removes from the list all fonts that do not exist in this system.
|
Font |
get(String symbolicName)
Returns the font associated with the given symbolic font name.
|
Font |
getBold(String symbolicName)
Returns the bold font associated with the given symbolic font name.
|
FontDescriptor |
getDescriptor(String symbolicName)
Returns the font descriptor for the font with the given symbolic
font name.
|
FontData[] |
getFontData(String symbolicName)
Returns the font data associated with the given symbolic font name.
|
Font |
getItalic(String symbolicName)
Returns the italic font associated with the given symbolic font name.
|
Set<String> |
getKeySet() |
boolean |
hasValueFor(String fontKey)
Return whether or not the receiver has a value for the supplied key.
|
void |
put(String symbolicName,
FontData[] fontData)
Adds (or replaces) a font to this font registry under the given
symbolic name.
|
addListener, fireMappingChanged, removeListener
addListenerObject, clearListeners, getListeners, isListenerAttached, removeListenerObject
protected Runnable displayRunnable
public FontRegistry()
There must be an SWT Display created in the current thread before calling this method.
public FontRegistry(String location, ClassLoader loader) throws MissingResourceException
There must be an SWT Display created in the current thread before calling this method.
The OS name (retrieved using System.getProperty("os.name")
)
is converted to lowercase, purged of whitespace, and appended
as suffix (separated by an underscore '_'
) to the given
location string to yield the base name of a resource bundle
acceptable to ResourceBundle.getBundle
.
The standard Java resource bundle mechanism is then used to locate
and open the appropriate properties file, taking into account
locale specific variations.
For example, on the Windows 2000 operating system the location string
"com.example.myapp.Fonts"
yields the base name
"com.example.myapp.Fonts_windows2000"
. For the US English locale,
this further elaborates to the resource bundle name
"com.example.myapp.Fonts_windows2000_en_us"
.
If no appropriate OS-specific resource bundle is found, the process is repeated using the location as the base bundle name.
The property file contains entries that look like this:
textfont.0=MS Sans Serif-regular-10 textfont.1=Times New Roman-regular-10 titlefont.0=MS Sans Serif-regular-12 titlefont.1=Times New Roman-regular-12Each entry maps a symbolic font names (the font registry keys) with a "
.n
suffix to standard font names
on the right. The suffix indicated order of preference:
".0
" indicates the first choice,
".1
" indicates the second choice, and so on.
The following example shows how to use the font registry:
FontRegistry registry = new FontRegistry("com.example.myapp.fonts"); Font font = registry.get("textfont"); control.setFont(font); ...
location
- the name of the resource bundleloader
- the ClassLoader to use to find the resource bundleMissingResourceException
- if the resource bundle cannot be foundpublic FontRegistry(String location) throws MissingResourceException
This method should only be called from the UI thread. If you are not on the UI
thread then wrap the call with a
PlatformUI.getWorkbench().getDisplay().synchExec()
in order to
guarantee the correct result. Failure to do this may result in an SWTException
being thrown.
location
- the location to read the resource bundle fromMissingResourceException
- Thrown if a resource is missingpublic FontRegistry(Display display)
display
- the Displaypublic FontRegistry(Display display, boolean cleanOnDisplayDisposal)
display
- the Display
cleanOnDisplayDisposal
- whether all fonts allocated by this FontRegistry
should be disposed when the display is disposed@Deprecated public FontData bestData(FontData[] fonts, Display display)
null
if one cannot be found.fonts
- the font listdisplay
- the display used@Deprecated public FontData[] bestDataArray(FontData[] fonts, Display display)
null
.fonts
- list of fontsdisplay
- the displaypublic FontData[] filterData(FontData[] fonts, Display display)
null
.fonts
- the fonts to checkdisplay
- the display to check againstpublic Font defaultFont()
This method should only be called from the UI thread. If you are not on the UI
thread then wrap the call with a
PlatformUI.getWorkbench().getDisplay().synchExec()
in order to
guarantee the correct result. Failure to do this may result in an SWTException
being thrown.
public FontDescriptor getDescriptor(String symbolicName)
symbolicName
- symbolic font namepublic FontData[] getFontData(String symbolicName)
symbolicName
- symbolic font namepublic Font get(String symbolicName)
This method should only be called from the UI thread. If you are not on the UI
thread then wrap the call with a
PlatformUI.getWorkbench().getDisplay().synchExec()
in order to
guarantee the correct result. Failure to do this may result in an SWTException
being thrown.
symbolicName
- symbolic font namepublic Font getBold(String symbolicName)
This method should only be called from the UI thread. If you are not on the UI
thread then wrap the call with a
PlatformUI.getWorkbench().getDisplay().synchExec()
in order to
guarantee the correct result. Failure to do this may result in an SWTException
being thrown.
symbolicName
- symbolic font namepublic Font getItalic(String symbolicName)
This method should only be called from the UI thread. If you are not on the UI
thread then wrap the call with a
PlatformUI.getWorkbench().getDisplay().synchExec()
in order to
guarantee the correct result. Failure to do this may result in an SWTException
being thrown.
symbolicName
- symbolic font namepublic Set<String> getKeySet()
getKeySet
in class ResourceRegistry
public boolean hasValueFor(String fontKey)
ResourceRegistry
hasValueFor
in class ResourceRegistry
fontKey
- the keytrue
if there is a value for this keyprotected void clearCaches()
ResourceRegistry
clearCaches
in class ResourceRegistry
public void put(String symbolicName, FontData[] fontData)
A property change event is reported whenever the mapping from a symbolic name to a font changes. The source of the event is this registry; the property name is the symbolic font name.
symbolicName
- the symbolic font namefontData
- an Array of FontDatapublic FontDescriptor defaultFontDescriptor()
Copyright (c) 2000, 2015 Eclipse Contributors and others. All rights reserved.Guidelines for using Eclipse APIs.