Tray.java: Broke the build on with wrong non UTF-8 encoded file and french umlauts (unmappable character for encoding UTF8)
git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@7537 6c8d7289-2bf4-0310-a012-ef5d649a1542pull/1/head
parent
db65ada467
commit
8b7b783c49
@ -1,313 +1,313 @@
|
||||
// yacyTray.java
|
||||
// (C) 2008 by David Wieditz; d.wieditz@gmx.de
|
||||
// (C) 2008 by Florian Richter; Florian_Richter@gmx.de
|
||||
// first published 13.07.2008 on http://yacy.net
|
||||
//
|
||||
// This is a part of YaCy, a peer-to-peer based web search engine
|
||||
//
|
||||
// $LastChangedDate: $
|
||||
// $LastChangedRevision: $
|
||||
// $LastChangedBy: $
|
||||
//
|
||||
// LICENSE
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 2 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
package de.anomic.yacy;
|
||||
|
||||
import java.awt.Image;
|
||||
import java.awt.MenuItem;
|
||||
import java.awt.PopupMenu;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
import net.yacy.gui.framework.Browser;
|
||||
import net.yacy.kelondro.logging.Log;
|
||||
import net.yacy.kelondro.util.OS;
|
||||
|
||||
import de.anomic.search.Switchboard;
|
||||
import de.anomic.search.SwitchboardConstants;
|
||||
|
||||
|
||||
public final class Tray {
|
||||
protected static Switchboard sb;
|
||||
|
||||
private static nativeTrayIcon ti;
|
||||
private static boolean isIntegrated; // browser integration
|
||||
private static boolean isShown = false;
|
||||
final private static boolean deutsch = System.getProperty("user.language","").equals("de");
|
||||
final private static boolean french = System.getProperty("user.language","").equals("fr");
|
||||
|
||||
public static String trayLabel;
|
||||
|
||||
public static boolean lockBrowserPopup = true;
|
||||
|
||||
|
||||
public static void init(final Switchboard par_sb) {
|
||||
sb = par_sb;
|
||||
isIntegrated = sb.getConfigBool(SwitchboardConstants.BROWSERINTEGRATION, false);
|
||||
trayLabel = sb.getConfig(SwitchboardConstants.TRAY_LABEL, "YaCy");
|
||||
try {
|
||||
final boolean trayIcon = sb.getConfigBool(SwitchboardConstants.TRAY_ICON_ENABLED, false);
|
||||
if (trayIcon && (OS.isWindows || sb.getConfigBool(SwitchboardConstants.TRAY_ICON_FORCED, false))) {
|
||||
System.setProperty("java.awt.headless", "false");
|
||||
|
||||
if(nativeTrayIcon.isSupported()) {
|
||||
final String iconpath = sb.getAppPath().toString() + "/addon/YaCy_TrayIcon.png".replace("/", File.separator);
|
||||
ActionListener al = new ActionListener() {
|
||||
public void actionPerformed(final ActionEvent e) {
|
||||
trayClickAction();
|
||||
}
|
||||
};
|
||||
ti = new nativeTrayIcon(iconpath, al, setupPopupMenu());
|
||||
|
||||
ti.addToSystemTray();
|
||||
isShown = true;
|
||||
} else {
|
||||
System.setProperty("java.awt.headless", "true");
|
||||
}
|
||||
}
|
||||
} catch (final Exception e) {
|
||||
System.setProperty("java.awt.headless", "true");
|
||||
}
|
||||
}
|
||||
|
||||
public static PopupMenu setupPopupMenu() {
|
||||
String label;
|
||||
// this is the popup menu
|
||||
PopupMenu menu = new PopupMenu();
|
||||
MenuItem menuItem;
|
||||
|
||||
if(isIntegrated) return menu;
|
||||
|
||||
// YaCy Search
|
||||
if (deutsch)
|
||||
label = "YaCy Suche";
|
||||
else if (french)
|
||||
label = "YaCy Recherche";
|
||||
else
|
||||
label = "YaCy Search";
|
||||
menuItem = new MenuItem(label);
|
||||
menuItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(final ActionEvent e) {
|
||||
openBrowser("");
|
||||
}
|
||||
});
|
||||
menu.add(menuItem);
|
||||
|
||||
// Compare YaCy
|
||||
if (deutsch)
|
||||
label = "Vergleichs-Suche";
|
||||
else if (french)
|
||||
label = "Comparer YaCy";
|
||||
else
|
||||
label = "Compare YaCy";
|
||||
menuItem = new MenuItem(label);
|
||||
menuItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(final ActionEvent e) {
|
||||
openBrowser("compare_yacy.html");
|
||||
}
|
||||
});
|
||||
menu.add(menuItem);
|
||||
|
||||
// Peer Administration
|
||||
if (deutsch)
|
||||
label = "Peer Administration";
|
||||
else if (french)
|
||||
label = "Peer Administration";
|
||||
else
|
||||
label = "Peer Administration";
|
||||
menuItem = new MenuItem(label);
|
||||
menuItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(final ActionEvent e) {
|
||||
openBrowser("Status.html");
|
||||
}
|
||||
});
|
||||
menu.add(menuItem);
|
||||
|
||||
// Separator
|
||||
menu.addSeparator();
|
||||
|
||||
// Quit
|
||||
if(deutsch)
|
||||
label = "YaCy Beenden";
|
||||
else if(french)
|
||||
label = "Arrêt YaCy";
|
||||
else
|
||||
label = "Shutdown YaCy";
|
||||
menuItem = new MenuItem(label);
|
||||
menuItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(final ActionEvent e) {
|
||||
sb.terminate("shutdown from tray");
|
||||
}
|
||||
});
|
||||
menu.add(menuItem);
|
||||
return menu;
|
||||
}
|
||||
|
||||
|
||||
protected static void trayClickAction(){ //doubleclick
|
||||
if (lockBrowserPopup) {
|
||||
String label;
|
||||
if (deutsch)
|
||||
label = "Bitte warten bis YaCy gestartet ist.";
|
||||
else if (french)
|
||||
label = "S'il vous plaît attendre jusqu'à YaCy est démarré.";
|
||||
else
|
||||
label = "Please wait until YaCy is started.";
|
||||
ti.displayBalloonMessage("YaCy",label);
|
||||
} else {
|
||||
openBrowser("");
|
||||
}
|
||||
}
|
||||
|
||||
protected static void openBrowser(final String browserPopUpPage){
|
||||
if(isIntegrated) return;
|
||||
// no need for https, because we are on localhost
|
||||
Browser.openBrowser("http://localhost:" + sb.getConfig("port", "8090") + "/" + browserPopUpPage);
|
||||
}
|
||||
|
||||
public static void removeTray(){
|
||||
if (isShown){
|
||||
ti.removeFromSystemTray();
|
||||
isShown = false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class nativeTrayIcon {
|
||||
private Object SystemTray;
|
||||
private Object TrayIcon;
|
||||
private Class<?> SystemTrayClass;
|
||||
private Class<?> TrayIconClass;
|
||||
|
||||
public static boolean isSupported() {
|
||||
try {
|
||||
Class<?> l_SystemTrayClass = Class.forName("java.awt.SystemTray");
|
||||
//Object SystemTray = SystemTrayClass.newInsta
|
||||
Method isSupportedMethod = l_SystemTrayClass.getMethod("isSupported", (Class[])null);
|
||||
Boolean isSupported = (Boolean)isSupportedMethod.invoke(null, (Object[])null);
|
||||
return isSupported;
|
||||
} catch (Throwable e) {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public nativeTrayIcon(String IconPath, ActionListener al, PopupMenu menu) {
|
||||
if(!isSupported()) return;
|
||||
|
||||
final Image i = Toolkit.getDefaultToolkit().getImage(IconPath);
|
||||
|
||||
try {
|
||||
this.TrayIconClass = Class.forName("java.awt.TrayIcon");
|
||||
this.SystemTrayClass = Class.forName("java.awt.SystemTray");
|
||||
|
||||
// with reflections: this.TrayIcon = new TrayIcon(i, "YaCy");
|
||||
Class<?> partypes1[] = new Class[3];
|
||||
partypes1[0] = Image.class;
|
||||
partypes1[1] = String.class;
|
||||
partypes1[2] = PopupMenu.class;
|
||||
Constructor<?> TrayIconConstructor = TrayIconClass.getConstructor(partypes1);
|
||||
|
||||
Object arglist1[] = new Object[3];
|
||||
arglist1[0] = i;
|
||||
arglist1[1] = Tray.trayLabel;
|
||||
arglist1[2] = menu;
|
||||
this.TrayIcon = TrayIconConstructor.newInstance(arglist1);
|
||||
|
||||
// with reflections: this.TrayIcon.setImageAutoSize(true)
|
||||
Class<?> partypes2[] = new Class[1];
|
||||
partypes2[0] = Boolean.TYPE;
|
||||
Method setImageAutoSizeMethod = TrayIconClass.getMethod("setImageAutoSize", partypes2);
|
||||
|
||||
Object arglist2[] = new Object[1];
|
||||
arglist2[0] = Boolean.TRUE;
|
||||
setImageAutoSizeMethod.invoke(this.TrayIcon, arglist2);
|
||||
|
||||
// with reflections: this.TrayIcon.addActionListener(al)
|
||||
Class<?> partypes3[] = new Class[1];
|
||||
partypes3[0] = ActionListener.class;
|
||||
Method addActionListenerMethod = TrayIconClass.getMethod("addActionListener", partypes3);
|
||||
|
||||
Object arglist3[] = new Object[1];
|
||||
arglist3[0] = al;
|
||||
addActionListenerMethod.invoke(this.TrayIcon, arglist3);
|
||||
|
||||
// with reflections: nativSystemTray = SystemTray.getDefaultSystemTray()
|
||||
Method getDefaultSystemTrayMethod = SystemTrayClass.getMethod("getSystemTray", (Class[])null);
|
||||
|
||||
this.SystemTray = getDefaultSystemTrayMethod.invoke(null, (Object[])null);
|
||||
|
||||
} catch (Throwable e) {
|
||||
Log.logException(e);
|
||||
this.TrayIcon = null;
|
||||
}
|
||||
}
|
||||
|
||||
public void addToSystemTray() {
|
||||
try {
|
||||
// with reflections: this.SystemTray.add(this.TrayIcon)
|
||||
Class<?> partypes1[] = new Class[1];
|
||||
partypes1[0] = TrayIconClass;
|
||||
Method addMethod = SystemTrayClass.getMethod("add", partypes1);
|
||||
|
||||
Object arglist1[] = new Object[1];
|
||||
arglist1[0] = this.TrayIcon;
|
||||
addMethod.invoke(this.SystemTray, arglist1);
|
||||
} catch (Throwable e) {
|
||||
Log.logException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public void removeFromSystemTray() {
|
||||
try {
|
||||
// with reflections: this.SystemTray.remove(this.TrayIcon)
|
||||
Class<?> partypes1[] = new Class[1];
|
||||
partypes1[0] = TrayIconClass;
|
||||
Method removeMethod = SystemTrayClass.getMethod("remove", partypes1);
|
||||
|
||||
Object arglist1[] = new Object[1];
|
||||
arglist1[0] = this.TrayIcon;
|
||||
removeMethod.invoke(this.SystemTray, arglist1);
|
||||
} catch (Throwable e) {
|
||||
Log.logException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public void displayBalloonMessage(final String title, final String message) {
|
||||
try {
|
||||
// with reflections: this.TrayIcon.displayBalloonMessage(title, message, TrayIcon.MessageType.NONE)
|
||||
Class<?> partypes1[] = new Class[3];
|
||||
partypes1[0] = String.class;
|
||||
partypes1[1] = String.class;
|
||||
partypes1[2] = Class.forName("java.awt.TrayIcon.MessageType");
|
||||
Method displayBalloonMessageMethod = TrayIconClass.getMethod("displayBalloonMessage", partypes1);
|
||||
|
||||
Object arglist1[] = new Object[1];
|
||||
arglist1[0] = title;
|
||||
arglist1[1] = message;
|
||||
arglist1[2] = null;
|
||||
displayBalloonMessageMethod.invoke(this.TrayIcon, arglist1);
|
||||
} catch (Throwable e) {
|
||||
Log.logException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
// yacyTray.java
|
||||
// (C) 2008 by David Wieditz; d.wieditz@gmx.de
|
||||
// (C) 2008 by Florian Richter; Florian_Richter@gmx.de
|
||||
// first published 13.07.2008 on http://yacy.net
|
||||
//
|
||||
// This is a part of YaCy, a peer-to-peer based web search engine
|
||||
//
|
||||
// $LastChangedDate: $
|
||||
// $LastChangedRevision: $
|
||||
// $LastChangedBy: $
|
||||
//
|
||||
// LICENSE
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 2 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
package de.anomic.yacy;
|
||||
|
||||
import java.awt.Image;
|
||||
import java.awt.MenuItem;
|
||||
import java.awt.PopupMenu;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
import net.yacy.gui.framework.Browser;
|
||||
import net.yacy.kelondro.logging.Log;
|
||||
import net.yacy.kelondro.util.OS;
|
||||
|
||||
import de.anomic.search.Switchboard;
|
||||
import de.anomic.search.SwitchboardConstants;
|
||||
|
||||
|
||||
public final class Tray {
|
||||
protected static Switchboard sb;
|
||||
|
||||
private static nativeTrayIcon ti;
|
||||
private static boolean isIntegrated; // browser integration
|
||||
private static boolean isShown = false;
|
||||
final private static boolean deutsch = System.getProperty("user.language","").equals("de");
|
||||
final private static boolean french = System.getProperty("user.language","").equals("fr");
|
||||
|
||||
public static String trayLabel;
|
||||
|
||||
public static boolean lockBrowserPopup = true;
|
||||
|
||||
|
||||
public static void init(final Switchboard par_sb) {
|
||||
sb = par_sb;
|
||||
isIntegrated = sb.getConfigBool(SwitchboardConstants.BROWSERINTEGRATION, false);
|
||||
trayLabel = sb.getConfig(SwitchboardConstants.TRAY_LABEL, "YaCy");
|
||||
try {
|
||||
final boolean trayIcon = sb.getConfigBool(SwitchboardConstants.TRAY_ICON_ENABLED, false);
|
||||
if (trayIcon && (OS.isWindows || sb.getConfigBool(SwitchboardConstants.TRAY_ICON_FORCED, false))) {
|
||||
System.setProperty("java.awt.headless", "false");
|
||||
|
||||
if(nativeTrayIcon.isSupported()) {
|
||||
final String iconpath = sb.getAppPath().toString() + "/addon/YaCy_TrayIcon.png".replace("/", File.separator);
|
||||
ActionListener al = new ActionListener() {
|
||||
public void actionPerformed(final ActionEvent e) {
|
||||
trayClickAction();
|
||||
}
|
||||
};
|
||||
ti = new nativeTrayIcon(iconpath, al, setupPopupMenu());
|
||||
|
||||
ti.addToSystemTray();
|
||||
isShown = true;
|
||||
} else {
|
||||
System.setProperty("java.awt.headless", "true");
|
||||
}
|
||||
}
|
||||
} catch (final Exception e) {
|
||||
System.setProperty("java.awt.headless", "true");
|
||||
}
|
||||
}
|
||||
|
||||
public static PopupMenu setupPopupMenu() {
|
||||
String label;
|
||||
// this is the popup menu
|
||||
PopupMenu menu = new PopupMenu();
|
||||
MenuItem menuItem;
|
||||
|
||||
if(isIntegrated) return menu;
|
||||
|
||||
// YaCy Search
|
||||
if (deutsch)
|
||||
label = "YaCy Suche";
|
||||
else if (french)
|
||||
label = "YaCy Recherche";
|
||||
else
|
||||
label = "YaCy Search";
|
||||
menuItem = new MenuItem(label);
|
||||
menuItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(final ActionEvent e) {
|
||||
openBrowser("");
|
||||
}
|
||||
});
|
||||
menu.add(menuItem);
|
||||
|
||||
// Compare YaCy
|
||||
if (deutsch)
|
||||
label = "Vergleichs-Suche";
|
||||
else if (french)
|
||||
label = "Comparer YaCy";
|
||||
else
|
||||
label = "Compare YaCy";
|
||||
menuItem = new MenuItem(label);
|
||||
menuItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(final ActionEvent e) {
|
||||
openBrowser("compare_yacy.html");
|
||||
}
|
||||
});
|
||||
menu.add(menuItem);
|
||||
|
||||
// Peer Administration
|
||||
if (deutsch)
|
||||
label = "Peer Administration";
|
||||
else if (french)
|
||||
label = "Peer Administration";
|
||||
else
|
||||
label = "Peer Administration";
|
||||
menuItem = new MenuItem(label);
|
||||
menuItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(final ActionEvent e) {
|
||||
openBrowser("Status.html");
|
||||
}
|
||||
});
|
||||
menu.add(menuItem);
|
||||
|
||||
// Separator
|
||||
menu.addSeparator();
|
||||
|
||||
// Quit
|
||||
if(deutsch)
|
||||
label = "YaCy Beenden";
|
||||
else if(french)
|
||||
label = "Arrêt YaCy";
|
||||
else
|
||||
label = "Shutdown YaCy";
|
||||
menuItem = new MenuItem(label);
|
||||
menuItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(final ActionEvent e) {
|
||||
sb.terminate("shutdown from tray");
|
||||
}
|
||||
});
|
||||
menu.add(menuItem);
|
||||
return menu;
|
||||
}
|
||||
|
||||
|
||||
protected static void trayClickAction(){ //doubleclick
|
||||
if (lockBrowserPopup) {
|
||||
String label;
|
||||
if (deutsch)
|
||||
label = "Bitte warten bis YaCy gestartet ist.";
|
||||
else if (french)
|
||||
label = "S'il vous plaît attendre jusqu'à YaCy est démarré.";
|
||||
else
|
||||
label = "Please wait until YaCy is started.";
|
||||
ti.displayBalloonMessage("YaCy",label);
|
||||
} else {
|
||||
openBrowser("");
|
||||
}
|
||||
}
|
||||
|
||||
protected static void openBrowser(final String browserPopUpPage){
|
||||
if(isIntegrated) return;
|
||||
// no need for https, because we are on localhost
|
||||
Browser.openBrowser("http://localhost:" + sb.getConfig("port", "8090") + "/" + browserPopUpPage);
|
||||
}
|
||||
|
||||
public static void removeTray(){
|
||||
if (isShown){
|
||||
ti.removeFromSystemTray();
|
||||
isShown = false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class nativeTrayIcon {
|
||||
private Object SystemTray;
|
||||
private Object TrayIcon;
|
||||
private Class<?> SystemTrayClass;
|
||||
private Class<?> TrayIconClass;
|
||||
|
||||
public static boolean isSupported() {
|
||||
try {
|
||||
Class<?> l_SystemTrayClass = Class.forName("java.awt.SystemTray");
|
||||
//Object SystemTray = SystemTrayClass.newInsta
|
||||
Method isSupportedMethod = l_SystemTrayClass.getMethod("isSupported", (Class[])null);
|
||||
Boolean isSupported = (Boolean)isSupportedMethod.invoke(null, (Object[])null);
|
||||
return isSupported;
|
||||
} catch (Throwable e) {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public nativeTrayIcon(String IconPath, ActionListener al, PopupMenu menu) {
|
||||
if(!isSupported()) return;
|
||||
|
||||
final Image i = Toolkit.getDefaultToolkit().getImage(IconPath);
|
||||
|
||||
try {
|
||||
this.TrayIconClass = Class.forName("java.awt.TrayIcon");
|
||||
this.SystemTrayClass = Class.forName("java.awt.SystemTray");
|
||||
|
||||
// with reflections: this.TrayIcon = new TrayIcon(i, "YaCy");
|
||||
Class<?> partypes1[] = new Class[3];
|
||||
partypes1[0] = Image.class;
|
||||
partypes1[1] = String.class;
|
||||
partypes1[2] = PopupMenu.class;
|
||||
Constructor<?> TrayIconConstructor = TrayIconClass.getConstructor(partypes1);
|
||||
|
||||
Object arglist1[] = new Object[3];
|
||||
arglist1[0] = i;
|
||||
arglist1[1] = Tray.trayLabel;
|
||||
arglist1[2] = menu;
|
||||
this.TrayIcon = TrayIconConstructor.newInstance(arglist1);
|
||||
|
||||
// with reflections: this.TrayIcon.setImageAutoSize(true)
|
||||
Class<?> partypes2[] = new Class[1];
|
||||
partypes2[0] = Boolean.TYPE;
|
||||
Method setImageAutoSizeMethod = TrayIconClass.getMethod("setImageAutoSize", partypes2);
|
||||
|
||||
Object arglist2[] = new Object[1];
|
||||
arglist2[0] = Boolean.TRUE;
|
||||
setImageAutoSizeMethod.invoke(this.TrayIcon, arglist2);
|
||||
|
||||
// with reflections: this.TrayIcon.addActionListener(al)
|
||||
Class<?> partypes3[] = new Class[1];
|
||||
partypes3[0] = ActionListener.class;
|
||||
Method addActionListenerMethod = TrayIconClass.getMethod("addActionListener", partypes3);
|
||||
|
||||
Object arglist3[] = new Object[1];
|
||||
arglist3[0] = al;
|
||||
addActionListenerMethod.invoke(this.TrayIcon, arglist3);
|
||||
|
||||
// with reflections: nativSystemTray = SystemTray.getDefaultSystemTray()
|
||||
Method getDefaultSystemTrayMethod = SystemTrayClass.getMethod("getSystemTray", (Class[])null);
|
||||
|
||||
this.SystemTray = getDefaultSystemTrayMethod.invoke(null, (Object[])null);
|
||||
|
||||
} catch (Throwable e) {
|
||||
Log.logException(e);
|
||||
this.TrayIcon = null;
|
||||
}
|
||||
}
|
||||
|
||||
public void addToSystemTray() {
|
||||
try {
|
||||
// with reflections: this.SystemTray.add(this.TrayIcon)
|
||||
Class<?> partypes1[] = new Class[1];
|
||||
partypes1[0] = TrayIconClass;
|
||||
Method addMethod = SystemTrayClass.getMethod("add", partypes1);
|
||||
|
||||
Object arglist1[] = new Object[1];
|
||||
arglist1[0] = this.TrayIcon;
|
||||
addMethod.invoke(this.SystemTray, arglist1);
|
||||
} catch (Throwable e) {
|
||||
Log.logException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public void removeFromSystemTray() {
|
||||
try {
|
||||
// with reflections: this.SystemTray.remove(this.TrayIcon)
|
||||
Class<?> partypes1[] = new Class[1];
|
||||
partypes1[0] = TrayIconClass;
|
||||
Method removeMethod = SystemTrayClass.getMethod("remove", partypes1);
|
||||
|
||||
Object arglist1[] = new Object[1];
|
||||
arglist1[0] = this.TrayIcon;
|
||||
removeMethod.invoke(this.SystemTray, arglist1);
|
||||
} catch (Throwable e) {
|
||||
Log.logException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public void displayBalloonMessage(final String title, final String message) {
|
||||
try {
|
||||
// with reflections: this.TrayIcon.displayBalloonMessage(title, message, TrayIcon.MessageType.NONE)
|
||||
Class<?> partypes1[] = new Class[3];
|
||||
partypes1[0] = String.class;
|
||||
partypes1[1] = String.class;
|
||||
partypes1[2] = Class.forName("java.awt.TrayIcon.MessageType");
|
||||
Method displayBalloonMessageMethod = TrayIconClass.getMethod("displayBalloonMessage", partypes1);
|
||||
|
||||
Object arglist1[] = new Object[1];
|
||||
arglist1[0] = title;
|
||||
arglist1[1] = message;
|
||||
arglist1[2] = null;
|
||||
displayBalloonMessageMethod.invoke(this.TrayIcon, arglist1);
|
||||
} catch (Throwable e) {
|
||||
Log.logException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in new issue