/* * TestIHM.java * * Created on 20 juillet 2007, 13:53 */ package testihmwin; import java.awt.AWTException; import java.awt.BorderLayout; import java.awt.Frame; 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.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowStateListener; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.Box; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.WindowConstants; /** * * @author Claythest */ public class TestIHM extends JFrame { private JLabel userNameLabel; private TrayIcon trayIcon; private PopupMenu trayPopupMenu; private MenuItem openMenu; private MenuItem closeMenu; private Image image; /** * Creates a new instance of TestIHM */ public TestIHM() { super("Test"); try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e1) { e1.printStackTrace(); } setIconImage(getImage()); setAlwaysOnTop(true); setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { onCloseWindow(); } }); setUndecorated(true); setResizable(false); addWindowStateListener(new WindowStateListener() { public void windowStateChanged(WindowEvent e) { if (e.getNewState() == Frame.ICONIFIED) TestIHM.this.setState(Frame.NORMAL); } }); getContentPane().add(getUserNameLabel(), BorderLayout.CENTER); getContentPane().add(Box.createVerticalStrut(12), BorderLayout.NORTH); getContentPane().add(Box.createVerticalStrut(12), BorderLayout.SOUTH); getContentPane().add(Box.createHorizontalStrut(12), BorderLayout.EAST); getContentPane().add(Box.createHorizontalStrut(12), BorderLayout.WEST); pack(); setLocationRelativeTo(null); } private Image getImage() { if (image == null) try { image = ImageIO.read(new File("icone.gif")); } catch (IOException ex) { ex.printStackTrace(); } return image; } private JLabel getUserNameLabel() { if (userNameLabel == null) { String userName = System.getProperty("user.name"); userNameLabel = new JLabel("Vous êtes sur la session de " + userName); } return userNameLabel; } private TrayIcon getTrayIcon() { if (trayIcon == null) { trayIcon = new TrayIcon(getImage(), "Test IHM", getTrayPopupMenu()); trayIcon.setImageAutoSize(true); trayIcon.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getButton() == MouseEvent.BUTTON1) showWindow(); } }); } return trayIcon; } private PopupMenu getTrayPopupMenu() { if (trayPopupMenu == null) { trayPopupMenu = new PopupMenu(); trayPopupMenu.add(getOpenMenu()); trayPopupMenu.add(getCloseMenu()); } return trayPopupMenu; } private MenuItem getOpenMenu() { if (openMenu == null) { openMenu = new MenuItem("Ouvrir..."); openMenu.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { showWindow(); } }); } return openMenu; } private MenuItem getCloseMenu() { if (closeMenu == null) { closeMenu = new MenuItem("Fermer"); closeMenu.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { removeTrayIcon(getTrayIcon()); System.exit(0); } }); } return closeMenu; } private void onCloseWindow() { setVisible(false); addTrayIcon(getTrayIcon()); } private void showWindow() { TestIHM.this.setVisible(true); removeTrayIcon(getTrayIcon()); } public static void addTrayIcon(TrayIcon toAdd) { if(SystemTray.isSupported()) try { SystemTray.getSystemTray().add(toAdd); } catch (AWTException ex) { ex.printStackTrace(); } } public static void removeTrayIcon(TrayIcon toRemove) { if(SystemTray.isSupported()) SystemTray.getSystemTray().remove(toRemove); } /** * @param args the command line arguments */ public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { addTrayIcon((new TestIHM()).getTrayIcon()); } }); } }