Eclipse Platform
2.0

org.eclipse.jface.resource
Class FontRegistry

java.lang.Object
  |
  +--org.eclipse.jface.resource.FontRegistry

public class FontRegistry
extends Object

A font registry maintains a mapping between symbolic font names and SWT fonts.

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 registed fonts.

Clients may instantiate this class (it was not designed to be subclassed).


Constructor Summary
FontRegistry()
          Creates an empty font registry.
FontRegistry(Display display)
          Creates an empty font registry.
FontRegistry(String location)
          Creates a font registry and initializes its content from a property file.
 
Method Summary
 void addListener(IPropertyChangeListener listener)
          Adds a property change listener to this registry.
 FontData bestData(FontData[] fonts, Display display)
          Find the first valid fontData in the provided list.
 Font get(String symbolicName)
          Returns the font associated with the given symbolic font name.
 FontData[] getFontData(String symbolicName)
          Returns the font data associated with the given symbolic font name.
 void put(String symbolicName, FontData[] fontData)
          Adds (or replaces) a font to this font registry under the given symbolic name.
 void removeListener(IPropertyChangeListener listener)
          Removes the given listener from this registry.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FontRegistry

public FontRegistry()
Creates an empty font registry.

There must be an SWT Display created in the current thread before calling this method.


FontRegistry

public FontRegistry(String location)
             throws MissingResourceException
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 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-12
 
Each 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);
  ...
 

Parameters:
location - the name of the resource bundle
Throws:
MissingResourceException - if the resource bundle cannot be found

FontRegistry

public FontRegistry(Display display)
Creates an empty font registry.

Parameters:
display - the Display
Method Detail

addListener

public void addListener(IPropertyChangeListener listener)
Adds a property change listener to this registry.

Parameters:
listener - a property change listener

bestData

public FontData bestData(FontData[] fonts,
                         Display display)
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. Return null if one cannot be found.


getFontData

public FontData[] getFontData(String symbolicName)
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

public Font get(String symbolicName)
Returns the font associated 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

put

public void put(String symbolicName,
                FontData[] fontData)
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 name
fontData - an Array of FontData

removeListener

public void removeListener(IPropertyChangeListener listener)
Removes the given listener from this registry. Has no affect if the listener is not registered.

Parameters:
listener - a property change listener

Eclipse Platform
2.0

Copyright (c) IBM Corp. and others 2000, 2002. All Rights Reserved.