home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / awt / SystemTray.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  3.5 KB  |  159 lines

  1. package java.awt;
  2.  
  3. import java.awt.peer.SystemTrayPeer;
  4. import java.beans.PropertyChangeListener;
  5. import java.beans.PropertyChangeSupport;
  6. import java.util.Vector;
  7. import sun.awt.AppContext;
  8. import sun.awt.HeadlessToolkit;
  9. import sun.awt.SunToolkit;
  10. import sun.security.util.SecurityConstants;
  11.  
  12. public class SystemTray {
  13.    private static SystemTray systemTray;
  14.    private int currentIconID = 0;
  15.    private transient SystemTrayPeer peer;
  16.  
  17.    private SystemTray() {
  18.       this.addNotify();
  19.    }
  20.  
  21.    public static SystemTray getSystemTray() {
  22.       checkSystemTrayAllowed();
  23.       if (GraphicsEnvironment.isHeadless()) {
  24.          throw new HeadlessException();
  25.       } else if (!isSupported()) {
  26.          throw new UnsupportedOperationException("The system tray is not supported on the current platform.");
  27.       } else {
  28.          synchronized(SystemTray.class) {
  29.             if (systemTray == null) {
  30.                systemTray = new SystemTray();
  31.             }
  32.          }
  33.  
  34.          return systemTray;
  35.       }
  36.    }
  37.  
  38.    public static boolean isSupported() {
  39.       if (Toolkit.getDefaultToolkit() instanceof SunToolkit) {
  40.          return ((SunToolkit)Toolkit.getDefaultToolkit()).isTraySupported();
  41.       } else {
  42.          return Toolkit.getDefaultToolkit() instanceof HeadlessToolkit ? ((HeadlessToolkit)Toolkit.getDefaultToolkit()).isTraySupported() : false;
  43.       }
  44.    }
  45.  
  46.    public void add(TrayIcon var1) throws AWTException {
  47.       if (var1 == null) {
  48.          throw new NullPointerException("adding null TrayIcon");
  49.       } else {
  50.          Object var2 = null;
  51.          Object var3 = null;
  52.          Object var4 = null;
  53.          TrayIcon[] var9;
  54.          TrayIcon[] var10;
  55.          Vector var11;
  56.          synchronized(this) {
  57.             var9 = systemTray.getTrayIcons();
  58.             var11 = (Vector)AppContext.getAppContext().get(TrayIcon.class);
  59.             if (var11 == null) {
  60.                var11 = new Vector(3);
  61.                AppContext.getAppContext().put(TrayIcon.class, var11);
  62.             } else if (var11.contains(var1)) {
  63.                throw new IllegalArgumentException("adding TrayIcon that is already added");
  64.             }
  65.  
  66.             var11.add(var1);
  67.             var10 = systemTray.getTrayIcons();
  68.             var1.setID(++this.currentIconID);
  69.          }
  70.  
  71.          try {
  72.             var1.addNotify();
  73.          } catch (AWTException var7) {
  74.             var11.remove(var1);
  75.             throw var7;
  76.          }
  77.  
  78.          this.firePropertyChange("trayIcons", var9, var10);
  79.       }
  80.    }
  81.  
  82.    public void remove(TrayIcon var1) {
  83.       if (var1 != null) {
  84.          Object var2 = null;
  85.          Object var3 = null;
  86.          TrayIcon[] var8;
  87.          TrayIcon[] var9;
  88.          synchronized(this) {
  89.             var8 = systemTray.getTrayIcons();
  90.             Vector var5 = (Vector)AppContext.getAppContext().get(TrayIcon.class);
  91.             if (var5 == null || !var5.remove(var1)) {
  92.                return;
  93.             }
  94.  
  95.             var1.removeNotify();
  96.             var9 = systemTray.getTrayIcons();
  97.          }
  98.  
  99.          this.firePropertyChange("trayIcons", var8, var9);
  100.       }
  101.    }
  102.  
  103.    public TrayIcon[] getTrayIcons() {
  104.       Vector var1 = (Vector)AppContext.getAppContext().get(TrayIcon.class);
  105.       return var1 != null ? (TrayIcon[])((TrayIcon[])var1.toArray(new TrayIcon[var1.size()])) : new TrayIcon[0];
  106.    }
  107.  
  108.    public Dimension getTrayIconSize() {
  109.       return this.peer.getTrayIconSize();
  110.    }
  111.  
  112.    public synchronized void addPropertyChangeListener(String var1, PropertyChangeListener var2) {
  113.       if (var2 != null) {
  114.          this.getCurrentChangeSupport().addPropertyChangeListener(var1, var2);
  115.       }
  116.    }
  117.  
  118.    public synchronized void removePropertyChangeListener(String var1, PropertyChangeListener var2) {
  119.       if (var2 != null) {
  120.          this.getCurrentChangeSupport().removePropertyChangeListener(var1, var2);
  121.       }
  122.    }
  123.  
  124.    public synchronized PropertyChangeListener[] getPropertyChangeListeners(String var1) {
  125.       return this.getCurrentChangeSupport().getPropertyChangeListeners(var1);
  126.    }
  127.  
  128.    private void firePropertyChange(String var1, Object var2, Object var3) {
  129.       if (var2 == null || var3 == null || !var2.equals(var3)) {
  130.          this.getCurrentChangeSupport().firePropertyChange(var1, var2, var3);
  131.       }
  132.    }
  133.  
  134.    private synchronized PropertyChangeSupport getCurrentChangeSupport() {
  135.       PropertyChangeSupport var1 = (PropertyChangeSupport)AppContext.getAppContext().get(SystemTray.class);
  136.       if (var1 == null) {
  137.          var1 = new PropertyChangeSupport(this);
  138.          AppContext.getAppContext().put(SystemTray.class, var1);
  139.       }
  140.  
  141.       return var1;
  142.    }
  143.  
  144.    synchronized void addNotify() {
  145.       if (this.peer == null) {
  146.          this.peer = ((SunToolkit)Toolkit.getDefaultToolkit()).createSystemTray(this);
  147.       }
  148.  
  149.    }
  150.  
  151.    static void checkSystemTrayAllowed() {
  152.       SecurityManager var0 = System.getSecurityManager();
  153.       if (var0 != null) {
  154.          var0.checkPermission(SecurityConstants.ACCESS_SYSTEM_TRAY_PERMISSION);
  155.       }
  156.  
  157.    }
  158. }
  159.