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";
+                                       }
+                               }};
+       }
+               
 }


Reply via email to