package com.limegroup.gnutella.gui.notify; import com.limegroup.gnutella.gui.ResourceManager; import com.limegroup.gnutella.util.CommonUtils; /** * This class acts as a proxy for a platform-specific user notification class. */ //2345678|012345678|012345678|012345678|012345678|012345678|012345678|012345678| public class NotifyUserProxy implements NotifyUser { /** * The NotifyUser object that this class is serving as a * proxy for. */ private NotifyUser _notifier; /** * Flag for whether or not the application is currently in the tray. */ private boolean _inTray = false; /** * Singleton. */ private static final NotifyUserProxy INSTANCE = new NotifyUserProxy(); /** * Instance accessor method for the single object of this class, * following the singleton pattern. * * @return a NotifyUserProxy instance for this object */ public static NotifyUserProxy instance() { return INSTANCE; } /** * Instantiates the appropriate NotifyUser object depending on the * platform. This class serves as a "proxy" for the object constructed. */ private NotifyUserProxy() { if (CommonUtils.supportsTray() && ResourceManager.instance().isTrayLibraryLoaded()) { if (CommonUtils.isWindows()) _notifier = new WindowsNotifyUser(); else _notifier = new LinuxNotifyUser(); addNotify(); } else _notifier = new NonWindowsNotifyUser(); } public void addNotify() { if (_inTray) return; _notifier.addNotify(); _inTray = true; } public void removeNotify() { if (!_inTray) return; _notifier.removeNotify(); _inTray = false; } public void updateNotify(final String imageFileName, final String desc) { _notifier.updateNotify(imageFileName, desc); } public void updateDesc(final String desc) { _notifier.updateDesc(desc); } public void updateImage(final String imageFileName) { _notifier.updateImage(imageFileName); } /** * Hides the tray icon. Not currently used. */ public void hideNotify() { if (!_inTray) return; _notifier.hideNotify(); } }