diff --git a/apps/desktopgui/build.xml b/apps/desktopgui/build.xml
index 5c7f2f496..961088719 100644
--- a/apps/desktopgui/build.xml
+++ b/apps/desktopgui/build.xml
@@ -6,12 +6,14 @@
+
+
@@ -44,6 +46,22 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/desktopgui/src/net/i2p/desktopgui/Main.java b/apps/desktopgui/src/net/i2p/desktopgui/Main.java
index f4c1948aa..997cde64d 100644
--- a/apps/desktopgui/src/net/i2p/desktopgui/Main.java
+++ b/apps/desktopgui/src/net/i2p/desktopgui/Main.java
@@ -7,37 +7,40 @@ package net.i2p.desktopgui;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
-import java.util.logging.Level;
-import java.util.logging.Logger;
import net.i2p.desktopgui.util.*;
+import net.i2p.util.Log;
/**
* The main class of the application.
*/
public class Main {
+
+ ///Manages the lifetime of the tray icon.
+ private TrayManager trayManager = null;
+ private final static Log log = new Log(Main.class);
/**
* Start the tray icon code (loads tray icon in the tray area).
*/
private void startUp() {
- trayManager = new TrayManager();
+ trayManager = TrayManager.getInstance();
+ trayManager.startManager();
}
/**
* Main method launching the application.
*/
public static void main(String[] args) {
- System.setProperty("java.awt.headless", "false"); //Make sure I2P is running in GUI mode for our application
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException ex) {
- Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
+ log.log(Log.ERROR, null, ex);
} catch (InstantiationException ex) {
- Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
+ log.log(Log.ERROR, null, ex);
} catch (IllegalAccessException ex) {
- Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
+ log.log(Log.ERROR, null, ex);
} catch (UnsupportedLookAndFeelException ex) {
- Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
+ log.log(Log.ERROR, null, ex);
}
ConfigurationManager.getInstance().loadArguments(args);
@@ -78,6 +81,4 @@ public class Main {
t.start();
}
- ///Manages the lifetime of the tray icon.
- private TrayManager trayManager = null;
}
diff --git a/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java b/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java
index 51bf9b95c..8aa4e65c6 100644
--- a/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java
+++ b/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java
@@ -9,43 +9,54 @@ import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.Desktop.Action;
-import java.awt.TrayIcon.MessageType;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
-import java.util.Properties;
import javax.swing.SwingWorker;
import net.i2p.desktopgui.router.RouterManager;
-import net.i2p.desktopgui.util.*;
-import net.i2p.router.Router;
+import net.i2p.desktopgui.util.ConfigurationManager;
+import net.i2p.util.Log;
/**
* Manages the tray icon life.
*/
public class TrayManager {
+ private static TrayManager instance = null;
///The tray area, or null if unsupported
private SystemTray tray = null;
///Our tray icon, or null if unsupported
private TrayIcon trayIcon = null;
+ private final static Log log = new Log(TrayManager.class);
+
+ /**
+ * Instantiate tray manager.
+ */
+ private TrayManager() {}
+
+ public static TrayManager getInstance() {
+ if(instance == null) {
+ instance = new TrayManager();
+ }
+ return instance;
+ }
/**
- * Instantiate tray icon and add it to the system tray.
+ * Add the tray icon to the system tray and start everything up.
*/
- public TrayManager() {
+ public void startManager() {
if(SystemTray.isSupported()) {
tray = SystemTray.getSystemTray();
trayIcon = new TrayIcon(getTrayImage(), "I2P", getMainMenu());
try {
tray.add(trayIcon);
} catch (AWTException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
+ log.log(Log.WARN, "Problem creating system tray icon!", e);
}
}
}
@@ -78,11 +89,9 @@ public class TrayManager {
try {
desktop.browse(new URI("http://localhost:7657"));
} catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
+ log.log(Log.WARN, "Failed to open browser!", e);
} catch (URISyntaxException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
+ log.log(Log.WARN, "Failed to open browser!", e);
}
}
else {
diff --git a/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java b/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java
index eb6a762d3..228747106 100644
--- a/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java
+++ b/apps/desktopgui/src/net/i2p/desktopgui/router/RouterManager.java
@@ -5,9 +5,17 @@ import java.io.IOException;
import net.i2p.desktopgui.util.ConfigurationManager;
import net.i2p.router.Router;
import net.i2p.router.RouterContext;
+import net.i2p.util.Log;
+/**
+ * Handle communications with the router instance.
+ * @author mathias
+ *
+ */
public class RouterManager {
+ private final static Log log = new Log(RouterManager.class);
+
private static Router getRouter() {
return RouterContext.listContexts().get(0).router();
}
@@ -27,8 +35,7 @@ public class RouterManager {
//TODO: crossplatform
Runtime.getRuntime().exec(location + "/i2psvc " + location + "/wrapper.config");
} catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
+ log.log(Log.WARN, "Failed to start I2P", e);
}
}
diff --git a/apps/desktopgui/src/net/i2p/desktopgui/util/ConfigurationManager.java b/apps/desktopgui/src/net/i2p/desktopgui/util/ConfigurationManager.java
index 21e32bb27..d514f314a 100644
--- a/apps/desktopgui/src/net/i2p/desktopgui/util/ConfigurationManager.java
+++ b/apps/desktopgui/src/net/i2p/desktopgui/util/ConfigurationManager.java
@@ -2,7 +2,6 @@ package net.i2p.desktopgui.util;
import java.util.HashMap;
import java.util.Map;
-import java.util.regex.Pattern;
/**
* Manage the configuration of desktopgui.
@@ -53,16 +52,31 @@ public class ConfigurationManager {
}
}
+ /**
+ * Add a boolean configuration.
+ * @param arg The key we wish to add as a configuration.
+ */
public void loadBooleanConfiguration(String arg) {
booleanConfigurations.put(arg, Boolean.TRUE);
}
+ /**
+ * Add a String configuration which consists a key and a value.
+ * @param arg String of the form substring1=substring2.
+ * @param equalsPosition Position of the '=' element.
+ */
public void loadStringConfiguration(String arg, int equalsPosition) {
String key = arg.substring(0, equalsPosition);
String value = arg.substring(equalsPosition+1);
stringConfigurations.put(key, value);
}
+ /**
+ * Check if a specific boolean configuration exists.
+ * @param arg The key for the configuration.
+ * @param defaultValue If the configuration is not found, we use a default value.
+ * @return The value of a configuration: true if found, defaultValue if not found.
+ */
public boolean getBooleanConfiguration(String arg, boolean defaultValue) {
Boolean value = ((Boolean) booleanConfigurations.get("startWithI2P"));
System.out.println(value);
@@ -72,6 +86,12 @@ public class ConfigurationManager {
return defaultValue;
}
+ /**
+ * Get a specific String configuration.
+ * @param arg The key for the configuration.
+ * @param defaultValue If the configuration is not found, we use a default value.
+ * @return The value of the configuration, or the defaultValue.
+ */
public String getStringConfiguration(String arg, String defaultValue) {
String value = stringConfigurations.get(arg);
System.out.println(value);