// Grafiskā lietotāja interfeisa inicializācija private void getGUI() { JFrame frame = new mainForm(); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.setVisible(true); frame.setTitle("Your Monitoring Agent"); String icoPath = "./images/eye.gif"; ImageIcon img = new ImageIcon(icoPath); if (!SystemTray.isSupported()) { System.out.println("SystemTray is not supported"); return; } final TrayIcon trayIcon = new TrayIcon(img.getImage()); final SystemTray tray = SystemTray.getSystemTray(); trayIcon.addMouseListener( new MouseAdapter() { public void mouseClicked(MouseEvent e) { frame.setVisible(true); } }); try { tray.add(trayIcon); } catch (AWTException e) { JOptionPane.showMessageDialog( null, "TrayIcon could not be added.", "Alert", JOptionPane.ERROR_MESSAGE); } }
public void setTray() { boolean showTip = false; if (tray == null) { showTip = true; final Image image = Configuration.getImage(Configuration.Paths.Resources.ICON); tray = new TrayIcon(image, Configuration.NAME, null); tray.setImageAutoSize(true); tray.addMouseListener( new MouseListener() { public void mouseClicked(MouseEvent arg0) {} public void mouseEntered(MouseEvent arg0) {} public void mouseExited(MouseEvent arg0) {} public void mouseReleased(MouseEvent arg0) {} public void mousePressed(MouseEvent arg0) { SystemTray.getSystemTray().remove(tray); setVisible(true); lessCpu(false); } }); } try { SystemTray.getSystemTray().add(tray); if (showTip) { tray.displayMessage( Configuration.NAME + " Hidden", "Bots are still running in the background.\nClick this icon to restore the window.", MessageType.INFO); } } catch (Exception ignored) { log.warning("Unable to hide window"); } setVisible(false); lessCpu(true); }
private void init(final SettingsUI settingsUI) throws AWTException { SystemTray tray = SystemTray.getSystemTray(); PopupMenu popup = new PopupMenu(); final CheckboxMenuItem ftpItem = new CheckboxMenuItem(" Ftp "); final CheckboxMenuItem picasawebItem = new CheckboxMenuItem(" Picasaweb "); ftpItem.addItemListener( new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { Settings.getInstance().setPicasawebMode(false); Settings.getInstance().save(); start(); } }); popup.add(ftpItem); picasawebItem.addItemListener( new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { Settings.getInstance().setPicasawebMode(true); Settings.getInstance().save(); start(); } }); popup.add(picasawebItem); checkMenuItem(picasawebItem, ftpItem, Settings.getInstance().isPicasawebMode()); MenuItem settingsItem = new MenuItem(" Settings "); settingsItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { settingsUI.open(mousePoint); } }); popup.add(settingsItem); MenuItem exitItem = new MenuItem(" Exit "); exitItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("Exiting..."); System.exit(0); } }); popup.add(exitItem); URL imgURL = getClass().getClassLoader().getResource("icon.png"); final TrayIcon trayIcon = new TrayIcon(new ImageIcon(imgURL).getImage(), "Screenshot", popup); trayIcon.setImageAutoSize(true); trayIcon.addMouseListener( new MouseAdapter() { public void mousePressed(MouseEvent e) { checkMenuItem(picasawebItem, ftpItem, Settings.getInstance().isPicasawebMode()); } public void mouseClicked(MouseEvent e) { mousePoint = e.getPoint(); if (e.getButton() == BUTTON1) { start(); } } }); tray.add(trayIcon); }
private static void createAndShowGUI() { if (!SystemTray.isSupported()) { Logger.getLogger(StartAgentGUI.class.getName()).log(Level.SEVERE, "SYSTRAY_NOT_SUPPORTED"); agent.exitProcess(); return; } trayIcon = new TrayIcon( TrayProcess.createImage(AgentConstants.ICON16_PATH, AgentConstants.ICON_DESCRIPTION), AgentConstants.APP_PUBLIC_NAME); final SystemTray tray = SystemTray.getSystemTray(); final AgentPopUpMenu popUpMenu = new AgentPopUpMenu(tray, trayIcon, agent, deviceService); MOUSE_HOOK = new JNIMouseHook(popUpMenu); trayIcon.addMouseListener( new MouseAdapter() { @Override public void mouseReleased(MouseEvent e) { if (e.isPopupTrigger()) { popUpMenu.setLocation(e.getX(), e.getY()); popUpMenu.setInvoker(popUpMenu); popUpMenu.setVisible(true); } } }); popUpMenu.addMouseListener( new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { if (e instanceof MouseClickOutsideComponentEvent) { popUpMenu.setVisible(false); } } }); popUpMenu.addPropertyChangeListener( new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { if (evt.getPropertyName().equals(VISIBLE_PROPERTY)) { if (evt.getNewValue().equals(Boolean.TRUE)) { if (!MOUSE_HOOK.isIsHooked()) { MOUSE_HOOK.setMouseHook(); } } else if (MOUSE_HOOK.isIsHooked()) { MOUSE_HOOK.unsetMouseHook(); } } } }); try { tray.add(trayIcon); } catch (AWTException e) { Logger.getLogger(StartAgentGUI.class.getName()).log(Level.SEVERE, "TRAY_ICON_LOAD_ERROR", e); return; } trayIcon.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog( null, LocalizedLogger.getLocalizedMessage("APPLICATION_INFO", AgentConstants.VERSION)); } }); }
@Override public void initialize() { if (SystemTray.isSupported()) { JMenuItem openMenu = new JMenuItem(Res.getString("menuitem.open")); JMenuItem minimizeMenu = new JMenuItem(Res.getString("menuitem.hide")); JMenuItem exitMenu = new JMenuItem(Res.getString("menuitem.exit")); statusMenu = new JMenu(Res.getString("menuitem.status")); JMenuItem logoutMenu = new JMenuItem(Res.getString("menuitem.logout.no.status")); SystemTray tray = SystemTray.getSystemTray(); SparkManager.getNativeManager().addNativeHandler(this); ChatManager.getInstance().addChatMessageHandler(chatMessageHandler); // XEP-0085 suport (replaces the obsolete XEP-0022) org.jivesoftware.smack.chat.ChatManager.getInstanceFor(SparkManager.getConnection()) .addChatListener(this); if (Spark.isLinux()) { newMessageIcon = SparkRes.getImageIcon(SparkRes.MESSAGE_NEW_TRAY_LINUX); typingIcon = SparkRes.getImageIcon(SparkRes.TYPING_TRAY_LINUX); } else { newMessageIcon = SparkRes.getImageIcon(SparkRes.MESSAGE_NEW_TRAY); typingIcon = SparkRes.getImageIcon(SparkRes.TYPING_TRAY); } availableIcon = Default.getImageIcon(Default.TRAY_IMAGE); if (Spark.isLinux()) { if (availableIcon == null) { availableIcon = SparkRes.getImageIcon(SparkRes.TRAY_IMAGE_LINUX); Log.error(availableIcon.toString()); } awayIcon = SparkRes.getImageIcon(SparkRes.TRAY_AWAY_LINUX); dndIcon = SparkRes.getImageIcon(SparkRes.TRAY_DND_LINUX); offlineIcon = SparkRes.getImageIcon(SparkRes.TRAY_OFFLINE_LINUX); connectingIcon = SparkRes.getImageIcon(SparkRes.TRAY_CONNECTING_LINUX); } else { if (availableIcon == null) { availableIcon = SparkRes.getImageIcon(SparkRes.TRAY_IMAGE); } awayIcon = SparkRes.getImageIcon(SparkRes.TRAY_AWAY); dndIcon = SparkRes.getImageIcon(SparkRes.TRAY_DND); offlineIcon = SparkRes.getImageIcon(SparkRes.TRAY_OFFLINE); connectingIcon = SparkRes.getImageIcon(SparkRes.TRAY_CONNECTING); } popupMenu.add(openMenu); openMenu.addActionListener( new AbstractAction() { private static final long serialVersionUID = 1L; @Override public void actionPerformed(ActionEvent event) { SparkManager.getMainWindow().setVisible(true); SparkManager.getMainWindow().toFront(); } }); popupMenu.add(minimizeMenu); minimizeMenu.addActionListener( new AbstractAction() { private static final long serialVersionUID = 1L; @Override public void actionPerformed(ActionEvent event) { SparkManager.getMainWindow().setVisible(false); } }); popupMenu.addSeparator(); addStatusMessages(); popupMenu.add(statusMenu); statusMenu.addActionListener( new AbstractAction() { private static final long serialVersionUID = 1L; @Override public void actionPerformed(ActionEvent event) {} }); if (Spark.isWindows()) { if (!Default.getBoolean("DISABLE_EXIT")) popupMenu.add(logoutMenu); logoutMenu.addActionListener( new AbstractAction() { private static final long serialVersionUID = 1L; @Override public void actionPerformed(ActionEvent e) { SparkManager.getMainWindow().logout(false); } }); } // Exit Menu exitMenu.addActionListener( new AbstractAction() { private static final long serialVersionUID = 1L; @Override public void actionPerformed(ActionEvent e) { SparkManager.getMainWindow().shutdown(); } }); if (!Default.getBoolean("DISABLE_EXIT")) popupMenu.add(exitMenu); /** If connection closed set offline tray image */ SparkManager.getConnection() .addConnectionListener( new ConnectionListener() { @Override public void connected(XMPPConnection xmppConnection) { trayIcon.setImage(availableIcon.getImage()); } @Override public void authenticated(XMPPConnection xmppConnection, boolean b) { trayIcon.setImage(availableIcon.getImage()); } @Override public void connectionClosed() { trayIcon.setImage(offlineIcon.getImage()); } @Override public void connectionClosedOnError(Exception arg0) { trayIcon.setImage(offlineIcon.getImage()); } @Override public void reconnectingIn(int arg0) { trayIcon.setImage(connectingIcon.getImage()); } @Override public void reconnectionSuccessful() { trayIcon.setImage(availableIcon.getImage()); } @Override public void reconnectionFailed(Exception arg0) { trayIcon.setImage(offlineIcon.getImage()); } }); SparkManager.getSessionManager() .addPresenceListener( presence -> { if (presence.getMode() == Presence.Mode.available) { trayIcon.setImage(availableIcon.getImage()); } else if (presence.getMode() == Presence.Mode.away || presence.getMode() == Presence.Mode.xa) { trayIcon.setImage(awayIcon.getImage()); } else if (presence.getMode() == Presence.Mode.dnd) { trayIcon.setImage(dndIcon.getImage()); } else { trayIcon.setImage(availableIcon.getImage()); } }); try { trayIcon = new TrayIcon( availableIcon.getImage(), Default.getString(Default.APPLICATION_NAME), null); trayIcon.setImageAutoSize(true); trayIcon.addMouseListener( new MouseListener() { @Override public void mouseClicked(MouseEvent event) { // if we are using double click on tray icon if ((!pref.isUsingSingleTrayClick() && event.getButton() == MouseEvent.BUTTON1 && event.getClickCount() % 2 == 0) || // if we using single click on tray icon (pref.isUsingSingleTrayClick() && event.getButton() == MouseEvent.BUTTON1 && event.getClickCount() == 1)) { // bring the mainwindow to front if ((SparkManager.getMainWindow().isVisible()) && (SparkManager.getMainWindow().getState() == java.awt.Frame.NORMAL)) { SparkManager.getMainWindow().setVisible(false); } else { SparkManager.getMainWindow().setVisible(true); SparkManager.getMainWindow().setState(java.awt.Frame.NORMAL); SparkManager.getMainWindow().toFront(); } } else if (event.getButton() == MouseEvent.BUTTON1) { SparkManager.getMainWindow().toFront(); // SparkManager.getMainWindow().requestFocus(); } else if (event.getButton() == MouseEvent.BUTTON3) { if (popupMenu.isVisible()) { popupMenu.setVisible(false); } else { double x = MouseInfo.getPointerInfo().getLocation().getX(); double y = MouseInfo.getPointerInfo().getLocation().getY(); if (Spark.isMac()) { popupMenu.setLocation((int) x, (int) y); } else { popupMenu.setLocation(event.getX(), event.getY()); } popupMenu.setInvoker(popupMenu); popupMenu.setVisible(true); } } } @Override public void mouseEntered(MouseEvent event) {} @Override public void mouseExited(MouseEvent event) {} @Override public void mousePressed(MouseEvent event) { // on Mac i would want the window to show when i left-click the Icon if (Spark.isMac() && event.getButton() != MouseEvent.BUTTON3) { SparkManager.getMainWindow().setVisible(false); SparkManager.getMainWindow().setVisible(true); SparkManager.getMainWindow().requestFocusInWindow(); SparkManager.getMainWindow().bringFrameIntoFocus(); SparkManager.getMainWindow().toFront(); SparkManager.getMainWindow().requestFocus(); } } @Override public void mouseReleased(MouseEvent event) {} }); tray.add(trayIcon); } catch (Exception e) { // Not Supported } } else { Log.error("Tray don't supports on this platform."); } }
private void trayIconListener(final JPopupMenu popup, TrayIcon icon) { Timer notificationTimer = new Timer(); notificationTimer.schedule( new TimerTask() { @Override public void run() { if (visible && !inBound) { visible = !visible; popup.setVisible(visible); } inBound = false; } }, 250, 1500); icon.addMouseMotionListener( new MouseMotionAdapter() { @Override public void mouseMoved(MouseEvent e) { inBound = true; } }); popup.addMouseMotionListener( new MouseMotionAdapter() { @Override public void mouseMoved(MouseEvent e) { inBound = true; } }); icon.addMouseListener( new MouseAdapter() { @Override public void mouseReleased(MouseEvent e) { if (e.getButton() != MouseEvent.BUTTON1) { return; } Point point = e.getPoint(); Rectangle bounds = getScreenViewableBounds(getGraphicsDeviceAt(point)); int x = point.x; int y = point.y; if (y < bounds.y) { y = bounds.y; } else if (y > bounds.y + bounds.height) { y = bounds.y + bounds.height; } if (x < bounds.x) { x = bounds.x; } else if (x > bounds.x + bounds.width) { x = bounds.x + bounds.width; } if (x + popup.getWidth() > bounds.x + bounds.width) { x = (bounds.x + bounds.width) - popup.getWidth(); } if (y + popup.getWidth() > bounds.y + bounds.height) { y = (bounds.y + bounds.height) - popup.getHeight(); } visible = !visible; if (visible) { popup.setLocation(x, y); } popup.setVisible(visible); } @Override public void mouseExited(MouseEvent e) { visible = false; popup.setVisible(visible); } }); popup.addMouseListener( new MouseAdapter() { @Override public void mouseExited(MouseEvent e) { if ((e.getX() < popup.getBounds().getMaxX()) && (e.getX() >= popup.getBounds().getMinX()) && (e.getY() < popup.getBounds().getMaxY()) && (e.getY() >= popup.getBounds().getMinY())) { return; } visible = false; popup.setVisible(visible); } }); }
private void init() { final TrayIcon trayIcon; if (SystemTray.isSupported()) { String path = System.getProperty("user.dir"); // log.info(path); SystemTray tray = SystemTray.getSystemTray(); MouseListener mouseListener = new MouseListener() { public void mouseClicked(MouseEvent e) { System.out.println("Tray Icon - Mouse clicked!"); } public void mouseEntered(MouseEvent e) { System.out.println("Tray Icon - Mouse entered!"); } public void mouseExited(MouseEvent e) { System.out.println("Tray Icon - Mouse exited!"); } public void mousePressed(MouseEvent e) { System.out.println("Tray Icon - Mouse pressed!"); } public void mouseReleased(MouseEvent e) { System.out.println("Tray Icon - Mouse released!"); } }; ActionListener exitListener = new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("Exiting..."); System.exit(0); } }; ActionListener testListener = new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("Just test..."); System.exit(0); } }; PopupMenu popup = new PopupMenu(); MenuItem defaultItem = new MenuItem("Exit"); defaultItem.addActionListener(exitListener); popup.add(defaultItem); MenuItem defaultItem2 = new MenuItem("test"); defaultItem.addActionListener(testListener); popup.add(defaultItem2); Image image = Toolkit.getDefaultToolkit() .getImage(this.getClass().getClassLoader().getResource("ico.gif")); trayIcon = new TrayIcon(image, "chimera", popup); ActionListener actionListener = new ActionListener() { public void actionPerformed(ActionEvent e) { trayIcon.displayMessage( "Action Event", "An Action Event Has Been Peformed!", TrayIcon.MessageType.INFO); } }; trayIcon.setImageAutoSize(true); trayIcon.addActionListener(actionListener); trayIcon.addMouseListener(mouseListener); // Depending on which Mustang build you have, you may need to uncomment // out the following code to check for an AWTException when you add // an image to the system tray. // try { try { tray.add(trayIcon); } catch (AWTException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } // } catch (AWTException e) { // System.err.println("TrayIcon could not be added."); // } trayIcon.displayMessage("chimera", "", TrayIcon.MessageType.INFO); } else { System.err.println("System tray is currently not supported."); } }