home *** CD-ROM | disk | FTP | other *** search
- package java.awt;
-
- import java.awt.peer.SystemTrayPeer;
- import java.beans.PropertyChangeListener;
- import java.beans.PropertyChangeSupport;
- import java.util.Vector;
- import sun.awt.AppContext;
- import sun.awt.HeadlessToolkit;
- import sun.awt.SunToolkit;
- import sun.security.util.SecurityConstants;
-
- public class SystemTray {
- private static SystemTray systemTray;
- private int currentIconID = 0;
- private transient SystemTrayPeer peer;
-
- private SystemTray() {
- this.addNotify();
- }
-
- public static SystemTray getSystemTray() {
- checkSystemTrayAllowed();
- if (GraphicsEnvironment.isHeadless()) {
- throw new HeadlessException();
- } else if (!isSupported()) {
- throw new UnsupportedOperationException("The system tray is not supported on the current platform.");
- } else {
- synchronized(SystemTray.class) {
- if (systemTray == null) {
- systemTray = new SystemTray();
- }
- }
-
- return systemTray;
- }
- }
-
- public static boolean isSupported() {
- if (Toolkit.getDefaultToolkit() instanceof SunToolkit) {
- return ((SunToolkit)Toolkit.getDefaultToolkit()).isTraySupported();
- } else {
- return Toolkit.getDefaultToolkit() instanceof HeadlessToolkit ? ((HeadlessToolkit)Toolkit.getDefaultToolkit()).isTraySupported() : false;
- }
- }
-
- public void add(TrayIcon var1) throws AWTException {
- if (var1 == null) {
- throw new NullPointerException("adding null TrayIcon");
- } else {
- Object var2 = null;
- Object var3 = null;
- Object var4 = null;
- TrayIcon[] var9;
- TrayIcon[] var10;
- Vector var11;
- synchronized(this) {
- var9 = systemTray.getTrayIcons();
- var11 = (Vector)AppContext.getAppContext().get(TrayIcon.class);
- if (var11 == null) {
- var11 = new Vector(3);
- AppContext.getAppContext().put(TrayIcon.class, var11);
- } else if (var11.contains(var1)) {
- throw new IllegalArgumentException("adding TrayIcon that is already added");
- }
-
- var11.add(var1);
- var10 = systemTray.getTrayIcons();
- var1.setID(++this.currentIconID);
- }
-
- try {
- var1.addNotify();
- } catch (AWTException var7) {
- var11.remove(var1);
- throw var7;
- }
-
- this.firePropertyChange("trayIcons", var9, var10);
- }
- }
-
- public void remove(TrayIcon var1) {
- if (var1 != null) {
- Object var2 = null;
- Object var3 = null;
- TrayIcon[] var8;
- TrayIcon[] var9;
- synchronized(this) {
- var8 = systemTray.getTrayIcons();
- Vector var5 = (Vector)AppContext.getAppContext().get(TrayIcon.class);
- if (var5 == null || !var5.remove(var1)) {
- return;
- }
-
- var1.removeNotify();
- var9 = systemTray.getTrayIcons();
- }
-
- this.firePropertyChange("trayIcons", var8, var9);
- }
- }
-
- public TrayIcon[] getTrayIcons() {
- Vector var1 = (Vector)AppContext.getAppContext().get(TrayIcon.class);
- return var1 != null ? (TrayIcon[])((TrayIcon[])var1.toArray(new TrayIcon[var1.size()])) : new TrayIcon[0];
- }
-
- public Dimension getTrayIconSize() {
- return this.peer.getTrayIconSize();
- }
-
- public synchronized void addPropertyChangeListener(String var1, PropertyChangeListener var2) {
- if (var2 != null) {
- this.getCurrentChangeSupport().addPropertyChangeListener(var1, var2);
- }
- }
-
- public synchronized void removePropertyChangeListener(String var1, PropertyChangeListener var2) {
- if (var2 != null) {
- this.getCurrentChangeSupport().removePropertyChangeListener(var1, var2);
- }
- }
-
- public synchronized PropertyChangeListener[] getPropertyChangeListeners(String var1) {
- return this.getCurrentChangeSupport().getPropertyChangeListeners(var1);
- }
-
- private void firePropertyChange(String var1, Object var2, Object var3) {
- if (var2 == null || var3 == null || !var2.equals(var3)) {
- this.getCurrentChangeSupport().firePropertyChange(var1, var2, var3);
- }
- }
-
- private synchronized PropertyChangeSupport getCurrentChangeSupport() {
- PropertyChangeSupport var1 = (PropertyChangeSupport)AppContext.getAppContext().get(SystemTray.class);
- if (var1 == null) {
- var1 = new PropertyChangeSupport(this);
- AppContext.getAppContext().put(SystemTray.class, var1);
- }
-
- return var1;
- }
-
- synchronized void addNotify() {
- if (this.peer == null) {
- this.peer = ((SunToolkit)Toolkit.getDefaultToolkit()).createSystemTray(this);
- }
-
- }
-
- static void checkSystemTrayAllowed() {
- SecurityManager var0 = System.getSecurityManager();
- if (var0 != null) {
- var0.checkPermission(SecurityConstants.ACCESS_SYSTEM_TRAY_PERMISSION);
- }
-
- }
- }
-