Class FontRegistry
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.-
Field Summary
Modifier and TypeFieldDescriptionprotected Runnable
Runnable that cleans up the manager on disposal of the display. -
Constructor Summary
ConstructorDescriptionCreates an empty font registry.FontRegistry
(String location) Load the FontRegistry using the ClassLoader from the PlatformUI plug-inFontRegistry
(String location, ClassLoader loader) Creates a font registry and initializes its content from a property file.FontRegistry
(Display display) Creates an empty font registry.FontRegistry
(Display display, boolean cleanOnDisplayDisposal) Creates an empty font registry. -
Method Summary
Modifier and TypeMethodDescriptionDeprecated.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 Motifprotected void
Disposes all currently allocated resources.Returns the default font data.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.Returns the font associated with the given symbolic font name.Returns the bold font associated with the given symbolic font name.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.Returns the italic font associated with the given symbolic font name.boolean
hasValueFor
(String fontKey) Return whether or not the receiver has a value for the supplied key.void
Adds (or replaces) a font to this font registry under the given symbolic name.Methods inherited from class org.eclipse.jface.resource.ResourceRegistry
addListener, fireMappingChanged, removeListener
Methods inherited from class org.eclipse.core.commands.common.EventManager
addListenerObject, clearListeners, getListeners, isListenerAttached, removeListenerObject
-
Field Details
-
displayRunnable
Runnable that cleans up the manager on disposal of the display.
-
-
Constructor Details
-
FontRegistry
public FontRegistry()Creates an empty font registry.There must be an SWT Display created in the current thread before calling this method.
-
FontRegistry
Creates a font registry and initializes its content from a property file.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 toResourceBundle.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-12
Each entry maps a symbolic font names (the font registry keys) with a "
The following example shows how to use the font registry:.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.FontRegistry registry = new FontRegistry("com.example.myapp.fonts"); Font font = registry.get("textfont"); control.setFont(font); ...
- Parameters:
location
- the name of the resource bundleloader
- the ClassLoader to use to find the resource bundle- Throws:
MissingResourceException
- if the resource bundle cannot be found- Since:
- 2.1
-
FontRegistry
Load the FontRegistry using the ClassLoader from the PlatformUI plug-inThis 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 anSWTException
being thrown.- Parameters:
location
- the location to read the resource bundle from- Throws:
MissingResourceException
- Thrown if a resource is missing
-
FontRegistry
Creates an empty font registry.- Parameters:
display
- the Display
-
FontRegistry
Creates an empty font registry.- Parameters:
display
- theDisplay
cleanOnDisplayDisposal
- whether all fonts allocated by thisFontRegistry
should be disposed when the display is disposed- Since:
- 3.1
-
-
Method Details
-
bestData
Deprecated.use bestDataArray in order to support Motif multiple entry fonts.Find the first valid fontData in the provided list. If none are valid return the first one regardless. If the list is empty return null. Returnnull
if one cannot be found.- Parameters:
fonts
- the font listdisplay
- the display used- Returns:
- the font data of the like describe above
-
bestDataArray
Deprecated.use filterData in order to preserve multiple entry fonts on MotifFind the first valid fontData in the provided list. If none are valid return the first one regardless. If the list is empty returnnull
.- Parameters:
fonts
- list of fontsdisplay
- the display- Returns:
- font data like described above
-
filterData
Removes from the list all fonts that do not exist in this system. If none are valid, return the first irregardless. If the list is empty returnnull
.- Parameters:
fonts
- the fonts to checkdisplay
- the display to check against- Returns:
- the list of fonts that have been found on this system
- Since:
- 3.1
-
defaultFont
Returns the default font data. Creates it if necessary.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 anSWTException
being thrown.- Returns:
- Font
-
getDescriptor
Returns the font descriptor for the font with the given symbolic font name. Returns the default font if there is no special value associated with that name- Parameters:
symbolicName
- symbolic font name- Returns:
- the font descriptor (never null)
- Since:
- 3.3
-
getFontData
Returns the font data associated with the given symbolic font name. Returns the default font data if there is no special value associated with that name.- Parameters:
symbolicName
- symbolic font name- Returns:
- the font
-
get
Returns the font associated with the given symbolic font name. Returns the default font if there is no special value associated with that name.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 anSWTException
being thrown.- Parameters:
symbolicName
- symbolic font name- Returns:
- the font
-
getBold
Returns the bold font associated with the given symbolic font name. Returns the bolded default font if there is no special value associated with that name.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 anSWTException
being thrown.- Parameters:
symbolicName
- symbolic font name- Returns:
- the font
- Since:
- 3.0
-
getItalic
Returns the italic font associated with the given symbolic font name. Returns the italic default font if there is no special value associated with that name.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 anSWTException
being thrown.- Parameters:
symbolicName
- symbolic font name- Returns:
- the font
- Since:
- 3.0
-
getKeySet
- Specified by:
getKeySet
in classResourceRegistry
- Returns:
- the set of keys this manager knows about. This collection should be immutable.
-
hasValueFor
Description copied from class:ResourceRegistry
Return whether or not the receiver has a value for the supplied key.- Specified by:
hasValueFor
in classResourceRegistry
- Parameters:
fontKey
- the key- Returns:
true
if there is a value for this key
-
clearCaches
protected void clearCaches()Description copied from class:ResourceRegistry
Disposes all currently allocated resources.- Specified by:
clearCaches
in classResourceRegistry
-
put
Adds (or replaces) a font to this font registry under the given symbolic name.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.
- Parameters:
symbolicName
- the symbolic font namefontData
- an Array of FontData
-
defaultFontDescriptor
Returns the font descriptor for the JFace default font.- Returns:
- the font descriptor for the JFace default font
- Since:
- 3.3
-