home *** CD-ROM | disk | FTP | other *** search
Java Source | 1997-07-24 | 2.6 KB | 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);
- }
- }
- }
-
-
-
-
-
-