⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 appleutils.java.svn-base

📁 开源项目openfire的完整源程序
💻 SVN-BASE
字号:
/** * $Revision: 22540 $ * $Date: 2005-10-10 08:44:25 -0700 (Mon, 10 Oct 2005) $ * * Copyright (C) 1999-2005 Jive Software. All rights reserved. * * This software is the proprietary information of Jive Software. * Use is subject to license terms. */package com.jivesoftware.spark.plugin.apple;import com.apple.cocoa.application.NSApplication;import com.apple.cocoa.application.NSImage;import com.apple.cocoa.foundation.NSData;import java.io.InputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.net.URL;import org.jivesoftware.spark.util.log.Log;import org.jivesoftware.spark.util.SwingWorker;import org.jivesoftware.spark.SparkManager;/** * Utilities for dealing with the apple dock * * @author Andrew Wright */public final class AppleUtils {    private boolean flash;    private boolean usingDefaultIcon = true;    public AppleUtils() {        final Thread iconThread = new Thread(new Runnable() {            public void run() {                while (true) {                    if (!flash) {                        if (!usingDefaultIcon) {                            // Set default icon                            NSImage defaultImage = getDefaultImage();                            NSApplication.sharedApplication().setApplicationIconImage(defaultImage);                            usingDefaultIcon = true;                        }                        try {                            Thread.sleep(100);                        }                        catch (InterruptedException e) {                            Log.error(e);                        }                    }                    else {                        final NSImage image = getImageForMessageCountOn();                        NSApplication.sharedApplication().setApplicationIconImage(image);                        try {                            Thread.sleep(500);                        }                        catch (InterruptedException e) {                        }                        final NSImage image2 = getImageForMessageCountOff();                        NSApplication.sharedApplication().setApplicationIconImage(image2);                        try {                            Thread.sleep(500);                        }                        catch (InterruptedException e) {                        }                        usingDefaultIcon = false;                    }                }            }        });        iconThread.start();    }    /**     * Bounce the application's dock icon to get the user's attention.     *     * @param critical Bounce the icon repeatedly if this is true. Bounce it     *                 only for one second (usually just one bounce) if this is false.     */    public void bounceDockIcon(boolean critical) {        int howMuch = (critical) ?                NSApplication.UserAttentionRequestCritical :                NSApplication.UserAttentionRequestInformational;        final int requestID = NSApplication.sharedApplication().requestUserAttention(howMuch);        // Since NSApplication.requestUserAttention() seems to ignore the        // param and always bounces the dock icon continuously no matter        // what, make sure it gets cancelled if appropriate.        // This is Apple bug #3414391        if (!critical) {            Thread cancelThread = new Thread(new Runnable() {                public void run() {                    try {                        Thread.sleep(10000);                    }                    catch (InterruptedException e) {                        // ignore                    }                    NSApplication.sharedApplication().cancelUserAttentionRequest(requestID);                }            });            cancelThread.start();        }        flash = true;    }    /**     * Creates a {@link com.apple.cocoa.application.NSImage} from a string that points to an image in the class     *     * @param image classpath path of an image     * @return an cocoa image object     */    public static NSImage getImage(String image) {        InputStream in = ApplePlugin.class.getResourceAsStream(image);        ByteArrayOutputStream out = new ByteArrayOutputStream();        byte[] buff = new byte[10 * 1024];        int len;        try {            while ((len = in.read(buff)) != -1) {                out.write(buff, 0, len);            }            in.close();            out.close();        }        catch (IOException e) {            Log.error(e.getMessage(), e);        }        NSData data = new NSData(out.toByteArray());        return new NSImage(data);    }    /**     * Creates a {@link com.apple.cocoa.application.NSImage} from a string that points to an image in the class     *     * @return an cocoa image object     */    public static NSImage getImage(URL url) {        InputStream in = null;        try {            in = url.openStream();        }        catch (IOException e) {            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.        }        ByteArrayOutputStream out = new ByteArrayOutputStream();        byte[] buff = new byte[10 * 1024];        int len;        try {            while ((len = in.read(buff)) != -1) {                out.write(buff, 0, len);            }            in.close();            out.close();        }        catch (IOException e) {            Log.error(e.getMessage(), e);        }        NSData data = new NSData(out.toByteArray());        return new NSImage(data);    }    public void resetDock() {        if (flash) {            flash = false;        }    }    public static NSImage getImageForMessageCountOn() {        int no = SparkManager.getChatManager().getChatContainer().getTotalNumberOfUnreadMessages();        ClassLoader loader = ApplePlugin.class.getClassLoader();        if (no > 10) {            no = 10;        }        if (no == 0) {            URL url = loader.getResource("images/Spark-Dock-256-On.png");            return getImage(url);        }        URL url = loader.getResource("images/Spark-Dock-256-" + no + "-On.png");        return getImage(url);    }    public static NSImage getImageForMessageCountOff() {        int no = SparkManager.getChatManager().getChatContainer().getTotalNumberOfUnreadMessages();        ClassLoader loader = ApplePlugin.class.getClassLoader();        if (no > 10) {            no = 10;        }        if (no == 0) {            URL url = loader.getResource("images/Spark-Dock-256-On.png");            return getImage(url);        }        URL url = loader.getResource("images/Spark-Dock-256-" + no + "-Off.png");        return getImage(url);    }    public static NSImage getDefaultImage() {        ClassLoader loader = ApplePlugin.class.getClassLoader();        URL url = loader.getResource("images/Spark-Dock-256-On.png");        return getImage(url);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -