TaskTray.java

package com.citi.dashboard;

import java.awt.AWTException;
import java.awt.CheckboxMenuItem;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.IOException;
import java.io.InputStream;

import javax.imageio.ImageIO;
import javax.swing.JOptionPane;

import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.ContextHandlerCollection;
import org.eclipse.jetty.server.handler.HandlerList;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.webapp.WebAppContext;

public class TaskTray {
    
    String TOOL_TIP = "CSTS DashBoard Task Tray";
    String MESSAGE_HEADER = "Mindfire SystemTray Example";
    TrayIcon processTrayIcon = null;
    
    public static void main(String[] args) throws Exception{
        try {
        	TaskTray systemTrayExample = new TaskTray();
            systemTrayExample.createAndAddApplicationToSystemTray();
//          systemTrayExample.startProcess();

            Server server = new Server(9090);
//            ResourceHandler resource_handler = new ResourceHandler();
//            resource_handler.setDirectoriesListed(true);
//            resource_handler.setWelcomeFiles(new String[] { "DashBoard.jsp"});
//            resource_handler.setResourceBase("./");
//
//
//            HandlerList handlers = new HandlerList();
//            handlers.setHandlers(new Handler[] { resource_handler, new HelloHandler() });
//            server.setHandler(handlers);
           
            ContextHandlerCollection  contexts = new ContextHandlerCollection();//加载项目集合  
            WebAppContext webapp = new WebAppContext();  
            webapp.setDescriptor("html/WEB-INF/web.xml");
            webapp.setContextPath("/");//访问路径  
            webapp.setWar("html/");//web项目路径  ./根目录  
            contexts.addHandler(webapp);//将 webapp项目加载到项目集合中    

            ServletContextHandler context0 = new ServletContextHandler(ServletContextHandler.SESSIONS);
            context0.setContextPath("/excelimage");
            context0.addServlet(new ServletHolder(new ExcelServlet()),"/*");
            
            HandlerList handlers = new HandlerList();
            handlers.setHandlers(new Handler[] { context0, webapp });
            server.setHandler(handlers);//将项目集合加载到服务器中  
            
            server.start();
            server.join();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * This method creates the AWT items and add it to the System tray. 
     * 
     * @throws IOException
     */
    private void createAndAddApplicationToSystemTray() throws IOException {
        // Check the SystemTray support
        if (!SystemTray.isSupported()) {
            System.out.println("SystemTray is not supported");
            return;
        }
        
        final PopupMenu popup = new PopupMenu();
        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
        InputStream inputStream = classLoader.getResourceAsStream("logo/logo.png");
        Image img = ImageIO.read(inputStream);
        
        final TrayIcon trayIcon = new TrayIcon(img, TOOL_TIP);
        this.processTrayIcon = trayIcon;
        final SystemTray tray = SystemTray.getSystemTray();

        // Create a popup menu components
        MenuItem aboutItem = new MenuItem("About");
        
        CheckboxMenuItem autoSizeCheckBox = new CheckboxMenuItem("Set auto size");
        CheckboxMenuItem toolTipCheckBox = new CheckboxMenuItem("Set tooltip");
        
//        Menu displayMenu = new Menu("Display");
        
        MenuItem errorItem = new MenuItem("Error");
        MenuItem warningItem = new MenuItem("Warning");
        MenuItem infoItem = new MenuItem("Info");
        MenuItem noneItem = new MenuItem("None");
        
        MenuItem exitItem = new MenuItem("Exit");

        // Add components to popup menu
        popup.add(aboutItem);
        popup.addSeparator();
        popup.add(autoSizeCheckBox);
        popup.add(toolTipCheckBox);
        popup.addSeparator();
//        popup.add(displayMenu);
//        displayMenu.add(errorItem);
//        displayMenu.add(warningItem);
//        displayMenu.add(infoItem);
//        displayMenu.add(noneItem);
        popup.add(exitItem);

        trayIcon.setPopupMenu(popup);

        // Setting toolTipCheck and autoSizeCheckBox state as true
        toolTipCheckBox.setState(true);
        autoSizeCheckBox.setState(true);
        trayIcon.setImageAutoSize(true);

        try {
            tray.add(trayIcon);
        } catch (AWTException e) {
            System.out.println("TrayIcon could not be added.");
            return;
        }

        // Add listener to trayIcon.
        trayIcon.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(null,
                        "This is CSTS DashBoard run from System Tray");
            }
        });

        // Add listener to aboutItem.
        aboutItem.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(null,
                        "CSTS DashBoard Version 1.0");
            }
        });

        // Add listener to autoSizeCheckBox.
        autoSizeCheckBox.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
                int autoSizeCheckBoxId = e.getStateChange();
                if (autoSizeCheckBoxId == ItemEvent.SELECTED) {
                    trayIcon.setImageAutoSize(true);
                } else {
                    trayIcon.setImageAutoSize(false);
                }
            }
        });

        // Add listener to toolTipCheckBox.
        toolTipCheckBox.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
                int toolTipCheckBoxId = e.getStateChange();
                if (toolTipCheckBoxId == ItemEvent.SELECTED) {
                    trayIcon.setToolTip(TOOL_TIP);
                } else {
                    trayIcon.setToolTip(null);
                }
            }
        });

        // Create listener for Display menu items.
        ActionListener listener = new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                MenuItem item = (MenuItem) e.getSource();
                System.out.println(item.getLabel());
                if ("Error".equals(item.getLabel())) {
                    trayIcon.displayMessage(MESSAGE_HEADER,"This is an error message",TrayIcon.MessageType.ERROR);
                } else if ("Warning".equals(item.getLabel())) {
                    trayIcon.displayMessage(MESSAGE_HEADER,"This is a warning message",TrayIcon.MessageType.WARNING);
                } else if ("Info".equals(item.getLabel())) {
                    trayIcon.displayMessage(MESSAGE_HEADER,"This is an info message",TrayIcon.MessageType.INFO);
                } else if ("None".equals(item.getLabel())) {
                    trayIcon.displayMessage(MESSAGE_HEADER,"This is an ordinary message",TrayIcon.MessageType.NONE);
                }
            }
        };

        // Add listeners to Display menu items.
        errorItem.addActionListener(listener);
        warningItem.addActionListener(listener);
        infoItem.addActionListener(listener);
        noneItem.addActionListener(listener);

        // Add listener to exitItem.
        exitItem.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                tray.remove(trayIcon);
                System.exit(0);
            }
        });
    }
    
    /**
     * This method will start a thread that will 
     * show a popup message from the system tray after every 10 secs.
     */
    
    private void startProcess() {
        
        Thread thread = new Thread(new Runnable() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                int i = 0;
                while (true) {
                    i++;
                    try {
                        Thread.sleep(10000);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    processTrayIcon.displayMessage("Mindfire Process Message",
                            "This is message number " + i,
                            TrayIcon.MessageType.INFO);
                }

            }
        });

        thread.start();
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值