import java.awt.AWTException;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
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.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.SwingUtilities;
import org.omg.CORBA.PRIVATE_MEMBER;
public class TrayIconFeature {
TerminSoftware terminsoftware;
public TrayIconFeature(TerminSoftware terminSoftware) {
this.terminsoftware = terminSoftware;
{
TrayIcon trayIcon = null;
if (!SystemTray.isSupported()) {
// TODO Meldung ausgeben, bevor Programm beendet wird
System.exit(-1);
}
Image imageIcon = Toolkit.getDefaultToolkit().getImage("res/appdefault.png");
SystemTray tray = SystemTray.getSystemTray();
PopupMenu popup = new PopupMenu();
MenuItem anzeigen = new MenuItem(Konstanten.PROGRAMMNAME + " anzeigen");
MenuItem ausblenden = new MenuItem(Konstanten.PROGRAMMNAME + " ausblenden");
MenuItem beenden = new MenuItem(Konstanten.PROGRAMMNAME + " beenden");
popup.add(anzeigen);
popup.add(ausblenden);
popup.addSeparator();
popup.add(beenden);
trayIcon = new TrayIcon(imageIcon, "TerminSoftware", popup);
try {
tray.add(trayIcon);
} catch (AWTException e) {
e.printStackTrace();
}
class windowListener extends WindowAdapter {
@Override
public void windowClosing(WindowEvent e) {
popup.remove(ausblenden);
popup.insert(anzeigen,0);
}
@Override
public void windowOpened(WindowEvent e) {
popup.remove(anzeigen);
popup.insert(ausblenden,0);
}
@Override
public void windowDeiconified(WindowEvent e) {
popup.remove(anzeigen);
popup.insert(ausblenden,0);
}
@Override
public void windowIconified(WindowEvent e) {
popup.remove(ausblenden);
popup.insert(anzeigen,0);
}
}
terminSoftware.addWindowListener(new windowListener());
class iconListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
if(terminSoftware.isVisible()) {
terminSoftware.setVisible(false);
}
else {
terminSoftware.setVisible(true);
}
}
}
trayIcon.addActionListener(new iconListener());
class anzeigenListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
terminSoftware.setVisible(true);
}
}
anzeigen.addActionListener(new anzeigenListener());
class ausblendenListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
terminSoftware.setVisible(false);
}
}
ausblenden.addActionListener(new ausblendenListener());
class closeProgram implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
System.exit(0);
}
}
beenden.addActionListener(new closeProgram());
}
}
}