package server; /** Server * * @author pquiring */ import java.net.*; import java.awt.*; import java.awt.event.*; import java.io.*; import javaforce.*; import common.Config; public class App extends Thread implements ActionListener { public static void main(String args[]) { App server = new App(); server.start(); } private ServerSocket ss; private boolean active; public void run() { initTray(); addTray(); try { ss = new ServerSocket(Config.port); active = true; JFLog.log("Waiting for connection on port " + Config.port + "..."); while (active) { Socket s = ss.accept(); Session sess = new Session(); sess.start(s); } } catch (Exception e) { JFLog.log(e); } } public SystemTray tray; public TrayIcon icon; public MenuItem stop; private void initTray() { if (SystemTray.isSupported()) { tray = SystemTray.getSystemTray(); // create a popup menu PopupMenu popup = new PopupMenu(); stop = new MenuItem("Stop"); stop.addActionListener(this); popup.add(stop); Dimension size = tray.getTrayIconSize(); JFImage appicon = new JFImage(); InputStream is = this.getClass().getResourceAsStream("/jfprojector.png"); appicon.loadPNG(is); try {is.close();} catch (Exception e) {} JFImage scaled = new JFImage(size.width, size.height); scaled.fill(0, 0, size.width, size.height, 0x00000000, true); //fill with alpha transparent if (true) { //scaled image (looks bad sometimes) scaled.getGraphics().drawImage(appicon.getImage() , 0, 0, size.width, size.height , 0, 0, appicon.getIconWidth(), appicon.getIconHeight() , null); } else { //center image scaled.getGraphics().drawImage(appicon.getImage() , (size.width - appicon.getIconWidth()) / 2 , (size.height - appicon.getIconHeight()) / 2 , null); } icon = new TrayIcon(scaled.getImage(), "jfProjector Server", popup); icon.addActionListener(this); } } private void addTray() { try { tray.add(icon); } catch (Exception e) { JFLog.log(e); } } public void actionPerformed(ActionEvent e) { Object o = e.getSource(); if (o == stop) { System.exit(0); } } }