home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
BUG 15
/
BUGCD1998_06.ISO
/
aplic
/
jbuilder
/
jsamples.z
/
LocaleChangeManager.java
< prev
next >
Wrap
Text File
|
1997-07-24
|
3KB
|
87 lines
package borland.samples.intl.application;
import java.awt.*;
import java.util.*;
import borland.samples.intl.beans.event.*;
/**
* Notifies registered observers when a locale change occurs.
* LocaleChangeManager itself must be registered with a
* LocaleChangeEvent source, in this case LocaleChooser.
* Using a LocaleChangeManager rather than having locale-aware components
* register themselves directly with the user-interface for selecting
* locales has two advantages:
*<ol>
*<li>Switching to a different locale chooser only requires changing
* one hookup, the LocaleChangeManager to the locale chooser component.
*<li>Locale-aware components don't need to have (global) access to
* the locale chooser component.
*</ol>
*/
public class LocaleChangeManager implements LocaleChangeListener {
// holds the single instance of the LocaleChangeManager
private static LocaleChangeManager localeChangeManager = null;
// holds registered event listeners
Vector localeChangeListeners = new Vector();
Locale locale = Locale.getDefault();
protected LocaleChangeManager() {
}
/**
* Returns the single instance of the locale change manager.
*
* @return instance of locale change manager
*/
public static LocaleChangeManager getLocaleChangeManager() {
if (localeChangeManager == null) {
localeChangeManager = new LocaleChangeManager();
}
return localeChangeManager;
}
/**
* Registers a LocaleChangeListener to be notified on a locale change event.
*
* @param listener LocaleChangeListener to be added to notification list
*/
public synchronized void addLocaleChangeListener(LocaleChangeListener listener) {
localeChangeListeners.addElement(listener);
}
/**
* Removes a LocaleChangeListener to be notified on a locale change event.
*
* @param listener LocaleChangeListener to be removed
*/
public synchronized void removeLocaleChangeListener(LocaleChangeListener listener) {
localeChangeListeners.removeElement(listener);
}
/**
* Required for implementation of the LocaleChangeListener interface.
* Notifies all registered listeners of a locale change
*
* @param e LocaleChangeEvent describing new locale
*/
public void localeChanged(LocaleChangeEvent e) {
Vector listeners;
locale = e.getLocale();
Locale.setDefault(locale);
synchronized (this) {
listeners = (Vector) localeChangeListeners.clone();
}
for (int i = 0; i < listeners.size(); i++) {
((LocaleChangeListener) listeners.elementAt(i)).localeChanged(e);
}
}
}