Revision: 1574
http://azsmrc.svn.sourceforge.net/azsmrc/?rev=1574&view=rev
Author: Damokles
Date: 2008-01-14 11:10:16 -0800 (Mon, 14 Jan 2008)
Log Message:
-----------
added statusIcon
added DHTStatus -Listener
fixed/updated unload() function of Plugin
Modified Paths:
--------------
azsmrcplugins/trunk/lbms/plugins/mldht/azureus/MlDHTPlugin.java
azsmrcplugins/trunk/lbms/plugins/mldht/kad/DHT.java
azsmrcplugins/trunk/lbms/plugins/scanerss/azureus/ScanerssAzPlugin.java
Added Paths:
-----------
azsmrcplugins/trunk/lbms/plugins/mldht/azureus/gui/dhtIcon.png
azsmrcplugins/trunk/lbms/plugins/mldht/kad/DHTStatus.java
azsmrcplugins/trunk/lbms/plugins/mldht/kad/DHTStatusListener.java
Modified: azsmrcplugins/trunk/lbms/plugins/mldht/azureus/MlDHTPlugin.java
===================================================================
--- azsmrcplugins/trunk/lbms/plugins/mldht/azureus/MlDHTPlugin.java 2008-01-14 10:07:42 UTC (rev 1573)
+++ azsmrcplugins/trunk/lbms/plugins/mldht/azureus/MlDHTPlugin.java 2008-01-14 19:10:16 UTC (rev 1574)
@@ -8,7 +8,10 @@
import lbms.plugins.mldht.azureus.gui.DHTView;
import lbms.plugins.mldht.kad.DHT;
import lbms.plugins.mldht.kad.DHTLogger;
+import lbms.plugins.mldht.kad.DHTStatus;
+import lbms.plugins.mldht.kad.DHTStatusListener;
+import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import org.gudy.azureus2.plugins.PluginException;
import org.gudy.azureus2.plugins.PluginInterface;
@@ -29,6 +32,7 @@
import org.gudy.azureus2.plugins.ui.tables.TableManager;
import org.gudy.azureus2.plugins.ui.tables.TableRow;
import org.gudy.azureus2.ui.swt.plugins.UISWTInstance;
+import org.gudy.azureus2.ui.swt.plugins.UISWTStatusEntry;
import com.aelitis.azureus.plugins.upnp.UPnPPlugin;
@@ -49,14 +53,18 @@
private LoggerChannelListener logListener;
private UIManagerListener uiListener;
private UISWTInstance swtInstance = null;
+ private UISWTStatusEntry statusEntry;
+ private Image dhtStatusEntryIcon;
+
private Display display;
private DHTView view;
+ private DHTStatusListener dhtStatusListener;
/* (non-Javadoc)
* @see org.gudy.azureus2.plugins.Plugin#initialize(org.gudy.azureus2.plugins.PluginInterface)
*/
- public void initialize (PluginInterface pluginInterface)
+ public void initialize (final PluginInterface pluginInterface)
throws PluginException {
this.pluginInterface = pluginInterface;
UIManager ui_manager = pluginInterface.getUIManager();
@@ -68,6 +76,8 @@
config_model.addBooleanParameter2("autoopen", "mldht.autoopen", true);
config_model.addBooleanParameter2("backupOnly", "mldht.backupOnly",
false);
+ config_model.addBooleanParameter2("showStatusEntry",
+ "mldht.showStatusEntry", true);
view_model = ui_manager.createBasicPluginViewModel("Mainline DHT Log");
@@ -120,6 +130,22 @@
}
});
+ dhtStatusListener = new DHTStatusListener() {
+ /* (non-Javadoc)
+ * @see lbms.plugins.mldht.kad.DHTStatusListener#statusChanged(lbms.plugins.mldht.kad.DHTStatus, lbms.plugins.mldht.kad.DHTStatus)
+ */
+ public void statusChanged (DHTStatus newStatus, DHTStatus oldStatus) {
+ if (statusEntry != null) {
+ statusEntry.setTooltipText(newStatus.toString());
+ statusEntry.setText("mlDHT: " + newStatus);
+ statusEntry.setVisible(pluginInterface.getPluginconfig().getPluginBooleanParameter(
+ "showStatusEntry"));
+ }
+ }
+ };
+
+ dht.addStatusListener(dhtStatusListener);
+
tracker = new Tracker(this);
view = new DHTView(this);
@@ -131,6 +157,14 @@
display = swtInstance.getDisplay();
swtInstance.addView(UISWTInstance.VIEW_MAIN,
DHTView.VIEWID, view);
+ dhtStatusEntryIcon = new Image(
+ display,
+ MlDHTPlugin.class.getResourceAsStream("/lbms/plugins/mldht/azureus/gui/dhtIcon.png"));
+ statusEntry = swtInstance.createStatusEntry();
+ statusEntry.setImage(dhtStatusEntryIcon);
+ statusEntry.setImageEnabled(true);
+ dhtStatusListener.statusChanged(dht.getStatus(),
+ DHTStatus.Stopped);
if (isPluginAutoOpen()) {
swtInstance.openMainView(DHTView.VIEWID, view, null);
logChannel.log("Opening Main View!");
@@ -238,7 +272,21 @@
* @see org.gudy.azureus2.plugins.UnloadablePlugin#unload()
*/
public void unload () throws PluginException {
+ if (statusEntry != null) {
+ statusEntry.destroy();
+ }
+ if (dhtStatusEntryIcon != null) {
+ dhtStatusEntryIcon.dispose();
+ }
+ if (swtInstance != null) {
+ swtInstance.removeViews(UISWTInstance.VIEW_MAIN, DHTView.VIEWID);
+ }
stopDHT();
+ logChannel.removeListener(logListener);
+ pluginInterface.getUIManager().removeUIListener(uiListener);
+ view_model.destroy();
+ config_model.destroy();
+ pluginInterface.removeListener(this);
}
/* (non-Javadoc)
Added: azsmrcplugins/trunk/lbms/plugins/mldht/azureus/gui/dhtIcon.png
===================================================================
(Binary files differ)
Property changes on: azsmrcplugins/trunk/lbms/plugins/mldht/azureus/gui/dhtIcon.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: azsmrcplugins/trunk/lbms/plugins/mldht/kad/DHT.java
===================================================================
--- azsmrcplugins/trunk/lbms/plugins/mldht/kad/DHT.java 2008-01-14 10:07:42 UTC (rev 1573)
+++ azsmrcplugins/trunk/lbms/plugins/mldht/kad/DHT.java 2008-01-14 19:10:16 UTC (rev 1574)
@@ -76,12 +76,16 @@
private File table_file;
private List<DHTStatsListener> statsListeners;
+ private List<DHTStatusListener> statusListeners;
private DHTStats stats;
+ private DHTStatus status;
public DHT () {
expire_timer = new ExpireTimer();
stats = new DHTStats();
+ status = DHTStatus.Stopped;
statsListeners = new ArrayList<DHTStatsListener>(2);
+ statusListeners = new ArrayList<DHTStatusListener>(2);
}
@@ -300,6 +304,13 @@
return stats;
}
+ /**
+ * @return the status
+ */
+ public DHTStatus getStatus () {
+ return status;
+ }
+
/* (non-Javadoc)
* @see lbms.plugins.mldht.kad.DHTBase#isRunning()
*/
@@ -332,6 +343,7 @@
if (port == 0) {
port = 49001;
}
+ setStatus(DHTStatus.Initializing);
stats.resetStartedTimestamp();
table_file = table;
@@ -400,7 +412,7 @@
db = null;
node = null;
srv = null;
-
+ setStatus(DHTStatus.Stopped);
}
/* (non-Javadoc)
@@ -455,6 +467,8 @@
//regualary search for our id to update routing table
bootstrap();
+ } else {
+ setStatus(DHTStatus.Running);
}
}
@@ -511,9 +525,8 @@
if (nl != null) {
nl.setInfo("Bootstrap: search for ourself.");
nl.addListener(bootstrapListener);
- bootstrapping = true;
} else {
- bootstrapping = true;
+ bootstrapping = false;
}
}
}
@@ -615,6 +628,18 @@
}
}
+ private void setStatus (DHTStatus status) {
+ if (!this.status.equals(status)) {
+ DHTStatus old = this.status;
+ this.status = status;
+ if (!statusListeners.isEmpty()) {
+ for (int i = 0; i < statusListeners.size(); i++) {
+ statusListeners.get(i).statusChanged(status, old);
+ }
+ }
+ }
+ }
+
public void addStatsListener (DHTStatsListener listener) {
statsListeners.add(listener);
}
@@ -623,6 +648,14 @@
statsListeners.remove(listener);
}
+ public void addStatusListener (DHTStatusListener listener) {
+ statusListeners.add(listener);
+ }
+
+ public void removeStatusListener (DHTStatusListener listener) {
+ statusListeners.remove(listener);
+ }
+
/**
* @return the logger
*/
Added: azsmrcplugins/trunk/lbms/plugins/mldht/kad/DHTStatus.java
===================================================================
--- azsmrcplugins/trunk/lbms/plugins/mldht/kad/DHTStatus.java (rev 0)
+++ azsmrcplugins/trunk/lbms/plugins/mldht/kad/DHTStatus.java 2008-01-14 19:10:16 UTC (rev 1574)
@@ -0,0 +1,9 @@
+package lbms.plugins.mldht.kad;
+
+/**
+ * @author Damokles
+ *
+ */
+public enum DHTStatus {
+ Stopped, Initializing, Running
+}
Added: azsmrcplugins/trunk/lbms/plugins/mldht/kad/DHTStatusListener.java
===================================================================
--- azsmrcplugins/trunk/lbms/plugins/mldht/kad/DHTStatusListener.java (rev 0)
+++ azsmrcplugins/trunk/lbms/plugins/mldht/kad/DHTStatusListener.java 2008-01-14 19:10:16 UTC (rev 1574)
@@ -0,0 +1,9 @@
+package lbms.plugins.mldht.kad;
+
+/**
+ * @author Damokles
+ *
+ */
+public interface DHTStatusListener {
+ public void statusChanged (DHTStatus newStatus, DHTStatus oldStatus);
+}
Modified: azsmrcplugins/trunk/lbms/plugins/scanerss/azureus/ScanerssAzPlugin.java
===================================================================
--- azsmrcplugins/trunk/lbms/plugins/scanerss/azureus/ScanerssAzPlugin.java 2008-01-14 10:07:42 UTC (rev 1573)
+++ azsmrcplugins/trunk/lbms/plugins/scanerss/azureus/ScanerssAzPlugin.java 2008-01-14 19:10:16 UTC (rev 1574)
@@ -173,7 +173,7 @@
scheduler.scheduleAtFixedRate(new Runnable() {
/*
* (non-Javadoc)
- *
+ *
* @see java.lang.Runnable#run()
*/
public void run () {
@@ -194,7 +194,7 @@
/**
* Gets the pluginInterface from Plugin.java
- *
+ *
* @return pluginInterface
*/
public static PluginInterface getPluginInterface () {
@@ -203,7 +203,7 @@
/**
* Gets the Display from Plugin.java from the UISWTInstance
- *
+ *
* @return display
*/
public static Display getDisplay () {
@@ -247,7 +247,7 @@
/**
* Returns the user set status of whether or not the plugin should autoOpen
- *
+ *
* @return boolean autoOpen
*/
public static boolean isPluginAutoOpen () {
@@ -270,9 +270,9 @@
/**
* Provides a way to save the Config via IPC.
- *
+ *
* This is intendet to be used with TaskManager
- *
+ *
* @param filename save config here
* @return true on success, false on error
*/
@@ -351,7 +351,7 @@
/*
* (non-Javadoc)
- *
+ *
* @see org.gudy.azureus2.plugins.UnloadablePlugin#unload()
*/
public void unload () throws PluginException {
@@ -366,6 +366,7 @@
pluginInterface.getUIManager().removeUIListener(uiListener);
logChannel.removeListener(logListener);
config_model.destroy();
+ view_model.destroy();
}
// EOF
}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|