Author: toad
Date: 2007-09-26 18:11:43 +0000 (Wed, 26 Sep 2007)
New Revision: 15340
Modified:
trunk/freenet/src/freenet/clients/http/ConnectionsToadlet.java
trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
trunk/freenet/src/freenet/clients/http/OpennetConnectionsToadlet.java
Log:
New column on strangers page: time last successful (we only record this for
opennet)
Modified: trunk/freenet/src/freenet/clients/http/ConnectionsToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/ConnectionsToadlet.java
2007-09-26 17:38:57 UTC (rev 15339)
+++ trunk/freenet/src/freenet/clients/http/ConnectionsToadlet.java
2007-09-26 18:11:43 UTC (rev 15340)
@@ -128,6 +128,15 @@
this.peers = n.peers;
}
+ abstract SimpleColumn[] endColumnHeaders();
+
+ abstract class SimpleColumn {
+ abstract protected void drawColumn(HTMLNode peerRow,
PeerNodeStatus peerNodeStatus);
+ abstract public String getSortString();
+ abstract public String getTitleKey();
+ abstract public String getExplanationKey();
+ }
+
public void handleGet(URI uri, final HTTPRequest request,
ToadletContext ctx) throws ToadletContextClosedException, IOException,
RedirectException {
String path = uri.getPath();
if(path.endsWith("myref.fref")) {
@@ -425,10 +434,22 @@
peerTableHeaderRow.addChild("th",
"Time\u00a0Delta");
}
+ SimpleColumn[] endCols = endColumnHeaders();
+ if(endCols != null) {
+ for(int i=0;i<endCols.length;i++) {
+ SimpleColumn col = endCols[i];
+ HTMLNode header =
peerTableHeaderRow.addChild("th");
+ String sortString =
col.getSortString();
+ if(sortString != null)
+ header =
header.addChild("a", "href", sortString(isReversed, sortString));
+ header.addChild("span", new
String[] { "title", "style" }, new String[] {
L10n.getString(col.getExplanationKey()), "border-bottom: 1px dotted; cursor:
help;" }, L10n.getString(col.getTitleKey()));
+ }
+ }
+
for (int peerIndex = 0, peerCount =
peerNodeStatuses.length; peerIndex < peerCount; peerIndex++) {
PeerNodeStatus peerNodeStatus =
peerNodeStatuses[peerIndex];
- drawRow(peerTable, peerNodeStatus,
advancedModeEnabled, fProxyJavascriptEnabled, now, path, enablePeerActions);
+ drawRow(peerTable, peerNodeStatus,
advancedModeEnabled, fProxyJavascriptEnabled, now, path, enablePeerActions,
endCols);
}
@@ -698,7 +719,7 @@
abstract protected SimpleFieldSet getNoderef();
- private void drawRow(HTMLNode peerTable, PeerNodeStatus peerNodeStatus,
boolean advancedModeEnabled, boolean fProxyJavascriptEnabled, long now, String
path, boolean enablePeerActions) {
+ private void drawRow(HTMLNode peerTable, PeerNodeStatus peerNodeStatus,
boolean advancedModeEnabled, boolean fProxyJavascriptEnabled, long now, String
path, boolean enablePeerActions, SimpleColumn[] endCols) {
HTMLNode peerRow = peerTable.addChild("tr");
if(enablePeerActions) {
@@ -787,6 +808,12 @@
peerRow.addChild("td", "class", "peer-idle" /* FIXME
*/).addChild("#", TimeUtil.formatTime(peerNodeStatus.getClockDelta()));
}
+ if(endCols != null) {
+ for(int i=0;i<endCols.length;i++) {
+ endCols[i].drawColumn(peerRow, peerNodeStatus);
+ }
+ }
+
if (path.endsWith("displaymessagetypes.html")) {
drawMessageTypes(peerTable, peerNodeStatus);
}
Modified: trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
2007-09-26 17:38:57 UTC (rev 15339)
+++ trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
2007-09-26 18:11:43 UTC (rev 15340)
@@ -377,4 +377,8 @@
return false;
}
+ SimpleColumn[] endColumnHeaders() {
+ return null;
+ }
+
}
Modified: trunk/freenet/src/freenet/clients/http/OpennetConnectionsToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/OpennetConnectionsToadlet.java
2007-09-26 17:38:57 UTC (rev 15339)
+++ trunk/freenet/src/freenet/clients/http/OpennetConnectionsToadlet.java
2007-09-26 18:11:43 UTC (rev 15340)
@@ -1,12 +1,19 @@
package freenet.clients.http;
+import java.util.Comparator;
+
import freenet.client.HighLevelSimpleClient;
+import freenet.clients.http.ConnectionsToadlet.ComparatorByStatus;
+import freenet.clients.http.DarknetConnectionsToadlet.DarknetComparator;
import freenet.l10n.L10n;
+import freenet.node.DarknetPeerNodeStatus;
import freenet.node.Node;
import freenet.node.NodeClientCore;
+import freenet.node.OpennetPeerNodeStatus;
import freenet.node.PeerNodeStatus;
import freenet.support.HTMLNode;
import freenet.support.SimpleFieldSet;
+import freenet.support.TimeUtil;
public class OpennetConnectionsToadlet extends ConnectionsToadlet implements
LinkEnabledCallback {
@@ -80,4 +87,45 @@
return true;
}
+ protected class OpennetComparator extends ComparatorByStatus {
+
+ OpennetComparator(String sortBy, boolean reversed) {
+ super(sortBy, reversed);
+ }
+
+ protected int customCompare(PeerNodeStatus firstNode,
PeerNodeStatus secondNode, String sortBy) {
+ if(sortBy.equals("successTime")) {
+ long t1 =
((OpennetPeerNodeStatus)firstNode).timeLastSuccess;
+ long t2 =
((OpennetPeerNodeStatus)secondNode).timeLastSuccess;
+ if(t1 > t2) return reversed ? 1 : -1;
+ else if(t2 > t1) return reversed ? -1 : 1;
+ }
+ return super.customCompare(firstNode, secondNode,
sortBy);
+ }
+ }
+
+ protected Comparator comparator(String sortBy, boolean reversed) {
+ return new OpennetComparator(sortBy, reversed);
+ }
+
+ SimpleColumn[] endColumnHeaders() {
+ return new SimpleColumn[] {
+ new SimpleColumn() {
+
+ protected void drawColumn(HTMLNode
peerRow, PeerNodeStatus peerNodeStatus) {
+ OpennetPeerNodeStatus status =
(OpennetPeerNodeStatus) peerNodeStatus;
+ peerRow.addChild("td", "class",
"peer-last-success", TimeUtil.formatTime(System.currentTimeMillis() -
status.timeLastSuccess));
+ }
+ public String getExplanationKey() {
+ return
"OpennetConnectionsToadlet.successTime";
+ }
+ public String getSortString() {
+ return "successTime";
+ }
+ public String getTitleKey() {
+ return
"OpennetConnectionsToadlet.successTimeTitle";
+ }
+ }};
+ }
+
}