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();
}
}
TaskTray.java
最新推荐文章于 2023-01-20 14:08:36 发布