- Added support for on-the-fly routerconsole.lang changes to desktopgui and routerconsole (routerconsole now commits changes to the I2PAppContext).

- Added desktopgui support for detecting if it's running in the same JVM as I2P (without commandline arguments).
This commit is contained in:
mathiasdm
2011-01-03 18:40:18 +00:00
parent 2a6c763c31
commit 9b0c42ca6f
6 changed files with 54 additions and 9 deletions

View File

@ -6,7 +6,7 @@ Current setup:
* Place desktopgui.jar in the $I2P/lib/ directory. * Place desktopgui.jar in the $I2P/lib/ directory.
* Add to .i2p/clients.config: * Add to .i2p/clients.config:
#Desktopgui #Desktopgui
clientApp.6.args=--startWithI2P --I2PLocation=/SOME_LOCATION clientApp.6.args=
clientApp.6.delay=5 clientApp.6.delay=5
clientApp.6.main=net.i2p.desktopgui.Main clientApp.6.main=net.i2p.desktopgui.Main
clientApp.6.name=desktopgui clientApp.6.name=desktopgui

View File

@ -4,10 +4,13 @@ HIGH PRIORITY:
- Internationalisation: - Internationalisation:
* Add strings - DONE * Add strings - DONE
* Add Windows support - NEED TO CHECK * Add Windows support - NEED TO CHECK
* Might need some kind of trigger to reload the menu (for live language switching) * Might need some kind of trigger to reload the menu (for live language switching) - DONE
* Language choice is not actually set as a parameter in I2P config? * Language choice is not actually set as a parameter in I2P config?
As a result, desktopgui always starts with the default, unless you manually set the language. As a result, desktopgui always starts with the default, unless you manually set the language.
- Modify installer to set I2P directory parameter; or use $I2P? DONE - uses routerconsole.lang -- this parameter is now updated in routerconsole as well
- Check if we're inside I2P without using a command-line parameter - DONE
- Modify installer to set I2P directory parameter; or use $I2P? - Is already there
- Include in installer - TODO
- Fix tabs versus spaces ;-) - Fix tabs versus spaces ;-)
UNKNOWN: UNKNOWN:
- API to allow applications to add themselves to the menu? - API to allow applications to add themselves to the menu?

View File

@ -7,8 +7,12 @@ package net.i2p.desktopgui;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import javax.swing.UIManager; import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException; import javax.swing.UnsupportedLookAndFeelException;
import net.i2p.I2PAppContext;
import net.i2p.desktopgui.util.*; import net.i2p.desktopgui.util.*;
import net.i2p.util.Log; import net.i2p.util.Log;
import net.i2p.util.Translate;
import net.i2p.util.I2PProperties.I2PPropertyCallback;
/** /**
* The main class of the application. * The main class of the application.
@ -25,6 +29,19 @@ public class Main {
private void startUp() { private void startUp() {
trayManager = TrayManager.getInstance(); trayManager = TrayManager.getInstance();
trayManager.startManager(); trayManager.startManager();
I2PAppContext.getCurrentContext().addPropertyCallback(new I2PPropertyCallback() {
@Override
public String getPropertyKey() {
return Translate.PROP_LANG;
}
@Override
public void propertyChanged(String arg0, String arg1) {
trayManager.languageChanged();
}
});
} }
/** /**

View File

@ -42,9 +42,9 @@ public abstract class TrayManager {
*/ */
protected TrayManager() {} protected TrayManager() {}
public static TrayManager getInstance() { protected static TrayManager getInstance() {
if(instance == null) { if(instance == null) {
boolean inI2P = ConfigurationManager.getInstance().getBooleanConfiguration("startWithI2P", false); boolean inI2P = RouterManager.inI2P();
if(inI2P) { if(inI2P) {
instance = new InternalTrayManager(); instance = new InternalTrayManager();
} }
@ -58,7 +58,7 @@ public abstract class TrayManager {
/** /**
* Add the tray icon to the system tray and start everything up. * Add the tray icon to the system tray and start everything up.
*/ */
public void startManager() { protected void startManager() {
if(SystemTray.isSupported()) { if(SystemTray.isSupported()) {
tray = SystemTray.getSystemTray(); tray = SystemTray.getSystemTray();
trayIcon = new TrayIcon(getTrayImage(), "I2P", getMainMenu()); trayIcon = new TrayIcon(getTrayImage(), "I2P", getMainMenu());
@ -70,17 +70,21 @@ public abstract class TrayManager {
} }
} }
protected void languageChanged() {
trayIcon.setPopupMenu(getMainMenu());
}
/** /**
* Build a popup menu, adding callbacks to the different items. * Build a popup menu, adding callbacks to the different items.
* @return popup menu * @return popup menu
*/ */
public abstract PopupMenu getMainMenu(); protected abstract PopupMenu getMainMenu();
/** /**
* Get tray icon image from the desktopgui resources in the jar file. * Get tray icon image from the desktopgui resources in the jar file.
* @return image used for the tray icon * @return image used for the tray icon
*/ */
public Image getTrayImage() { private Image getTrayImage() {
URL url = getClass().getResource("/desktopgui/resources/images/logo.jpg"); URL url = getClass().getResource("/desktopgui/resources/images/logo.jpg");
Image image = Toolkit.getDefaultToolkit().getImage(url); Image image = Toolkit.getDefaultToolkit().getImage(url);
return image; return image;

View File

@ -56,6 +56,13 @@ public class RouterManager {
getRouter().shutdownGracefully(); getRouter().shutdownGracefully();
} }
/**
* Check if we are running inside I2P.
*/
public static boolean inI2P() {
return (RouterContext.listContexts().size() > 0);
}
private static String _(String s) { private static String _(String s) {
return DesktopguiTranslator._(s); return DesktopguiTranslator._(s);
} }

View File

@ -18,7 +18,21 @@ public class ContentHelper extends HelperBase {
public void setStartAtBeginning(String moo) { public void setStartAtBeginning(String moo) {
_startAtBeginning = Boolean.valueOf(""+moo).booleanValue(); _startAtBeginning = Boolean.valueOf(""+moo).booleanValue();
} }
public void setLang(String l) { _lang = l; } public void setLang(String l) {
if(_lang == null || !_lang.equals(l)) {
//Set language for router console
_lang = l;
if(_context == null) {
setContextId(null);
}
//Set language persistently throughout I2P
_context.router().setConfigSetting(Messages.PROP_LANG, _lang);
_context.router().saveConfig();
_context.setProperty(Messages.PROP_LANG, _lang);
}
}
public void setMaxLines(String lines) { public void setMaxLines(String lines) {
if (lines != null) { if (lines != null) {