Author: jflesch
Date: 2007-03-13 08:44:56 +0000 (Tue, 13 Mar 2007)
New Revision: 12105
Modified:
trunk/apps/Thaw/src/thaw/core/Logger.java
trunk/apps/Thaw/src/thaw/fcp/FCPListPeers.java
trunk/apps/Thaw/src/thaw/fcp/FCPMessage.java
trunk/apps/Thaw/src/thaw/i18n/thaw.properties
trunk/apps/Thaw/src/thaw/plugins/peerMonitor/PeerMonitorPanel.java
Log:
PeerMonitor display now the peer list
Modified: trunk/apps/Thaw/src/thaw/core/Logger.java
===================================================================
--- trunk/apps/Thaw/src/thaw/core/Logger.java 2007-03-13 07:10:25 UTC (rev
12104)
+++ trunk/apps/Thaw/src/thaw/core/Logger.java 2007-03-13 08:44:56 UTC (rev
12105)
@@ -22,7 +22,7 @@
* 2 or more is recommanded.
* 4 or more is unhealthy
*/
- public final static int LOG_LEVEL = 5;
+ public final static int LOG_LEVEL = 2;
private static Vector logListeners = null;
Modified: trunk/apps/Thaw/src/thaw/fcp/FCPListPeers.java
===================================================================
--- trunk/apps/Thaw/src/thaw/fcp/FCPListPeers.java 2007-03-13 07:10:25 UTC
(rev 12104)
+++ trunk/apps/Thaw/src/thaw/fcp/FCPListPeers.java 2007-03-13 08:44:56 UTC
(rev 12105)
@@ -3,6 +3,8 @@
import java.util.Observer;
import java.util.Observable;
+import java.util.Vector;
+import java.util.Hashtable;
public class FCPListPeers extends Observable implements FCPQuery, Observer {
@@ -11,10 +13,13 @@
private FCPQueueManager queueManager;
+ private Hashtable peers; /* key : peer name -> hashtable : key :
parameter name -> parameter value */
+
public FCPListPeers(boolean withMetadata, boolean withVolatile) {
this.withMetadata = withMetadata;
this.withVolatile = withVolatile;
+ peers = new Hashtable();
}
@@ -41,10 +46,10 @@
final FCPMessage msg = (FCPMessage)param;
if (msg.getMessageName() == null
- || !msg.getMessageName().equals(""))
+ || !msg.getMessageName().equals("Peer"))
return;
- /* TODO */
+ peers.put(msg.getValue("identity"), msg.getValues());
setChanged();
notifyObservers(this);
@@ -52,6 +57,11 @@
}
+ public Hashtable getPeers() {
+ return peers;
+ }
+
+
public int getQueryType() {
return 0;
}
Modified: trunk/apps/Thaw/src/thaw/fcp/FCPMessage.java
===================================================================
--- trunk/apps/Thaw/src/thaw/fcp/FCPMessage.java 2007-03-13 07:10:25 UTC
(rev 12104)
+++ trunk/apps/Thaw/src/thaw/fcp/FCPMessage.java 2007-03-13 08:44:56 UTC
(rev 12105)
@@ -90,6 +90,10 @@
return ((String)fields.get(field));
}
+ public Hashtable getValues() {
+ return fields;
+ }
+
public void setValue(final String field, final String value) {
if("DataLength".equals( field )) {
setAmountOfDataWaiting((new Long(value)).longValue());
Modified: trunk/apps/Thaw/src/thaw/i18n/thaw.properties
===================================================================
--- trunk/apps/Thaw/src/thaw/i18n/thaw.properties 2007-03-13 07:10:25 UTC
(rev 12104)
+++ trunk/apps/Thaw/src/thaw/i18n/thaw.properties 2007-03-13 08:44:56 UTC
(rev 12105)
@@ -308,6 +308,8 @@
thaw.plugin.peerMonitor.peerMonitor=Peer management
thaw.plugin.peerMonitor.yourReference=Your reference:
thaw.plugin.peerMonitor.copyReference=Copy your reference to the clipboard
+thaw.plugin.peerMonitor.nodeStats=Node statistics
+thaw.plugin.peerMonitor.peerList=Peers:
thaw.zeroconf.searchingNode=Searching freenet nodes ...
Modified: trunk/apps/Thaw/src/thaw/plugins/peerMonitor/PeerMonitorPanel.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/peerMonitor/PeerMonitorPanel.java
2007-03-13 07:10:25 UTC (rev 12104)
+++ trunk/apps/Thaw/src/thaw/plugins/peerMonitor/PeerMonitorPanel.java
2007-03-13 08:44:56 UTC (rev 12105)
@@ -7,20 +7,46 @@
import javax.swing.JLabel;
import javax.swing.JProgressBar;
import javax.swing.JButton;
+import javax.swing.ListCellRenderer;
+import javax.swing.BorderFactory;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.BorderLayout;
import java.awt.GridLayout;
+import java.awt.Color;
+
import java.util.Vector;
-import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Enumeration;
+import java.util.Hashtable;
import thaw.core.Config;
import thaw.core.I18n;
public class PeerMonitorPanel implements ActionListener
{
+ /* must match with color list */
+ public final static String[] STR_STATUS = {
+ "CONNECTED",
+ "BACKED OFF",
+ "TOO OLD",
+ "TOO NEW",
+ "DISCONNECTED",
+ "NEVER CONNECTED"
+ };
+
+
+ public final static Color[] COLOR_STATUS = {
+ new Color(0, 164, 0), /* CONNECTED */
+ Color.ORANGE, /* BACKED OFF */
+ Color.RED, /* TOO OLD */
+ Color.BLUE, /* TOO NEW */
+ Color.GRAY, /* DISCONNECTED */
+ Color.PINK /* NEVER CONNECTED */
+ };
+
private JPanel panel;
private JPanel mainPanel;
@@ -34,13 +60,25 @@
public PeerMonitorPanel(Config config) {
- panel = new JPanel(new BorderLayout());
+ panel = new JPanel(new BorderLayout(10, 10));
+ JPanel peerPanel = new JPanel(new BorderLayout());
+
peerList = new JList();
- mainPanel = new JPanel(new GridLayout(2, 1));
+ peerList.setCellRenderer(new PeerCellRenderer());
+ Vector v = new Vector();
+ v.add(I18n.getMessage("thaw.plugin.peerMonitor.nodeStats"));
+ peerList.setListData(v);
+ peerPanel.add(new
JLabel(I18n.getMessage("thaw.plugin.peerMonitor.peerList")),
BorderLayout.NORTH);
+ peerPanel.add(new JScrollPane(peerList), BorderLayout.CENTER);
+
+
+ mainPanel = new JPanel(new GridLayout(2, 1, 10, 10));
+
+
JPanel refPanel = new JPanel(new BorderLayout());
JPanel refTitle = new JPanel(new BorderLayout());
@@ -53,6 +91,7 @@
refArea = new JTextArea("*Put the node ref here*");
refArea.setEditable(false);
+ refArea.setBackground(new Color(250,250,250));
refPanel.add(refTitle, BorderLayout.NORTH);
refPanel.add(refArea, BorderLayout.CENTER);
@@ -65,7 +104,7 @@
memBar.setStringPainted(true);
panel.add(mainPanel, BorderLayout.CENTER);
- panel.add(new JScrollPane(peerList), BorderLayout.EAST);
+ panel.add(peerPanel, BorderLayout.EAST);
panel.add(memBar, BorderLayout.SOUTH);
}
@@ -89,13 +128,94 @@
}
+
+ protected class Peer {
+ private String displayName = null;
+ private Color textColor = Color.BLACK;
+ private Hashtable parameters = null;
+
+ public Peer(Hashtable parameters) {
+ this.parameters = parameters;
+ displayName = (String)parameters.get("myName");
+
+ String status =
(String)parameters.get("volatile.status");
+
+ for (int i = 0 ; i < STR_STATUS.length ; i++) {
+ if (STR_STATUS[i].equals(status))
+ setTextColor(COLOR_STATUS[i]);
+ }
+ }
+
+ public void setTextColor(Color c) {
+ textColor = c;
+ }
+
+ public Color getTextColor() {
+ return textColor;
+ }
+
+ public String toString() {
+ return displayName;
+ }
+ }
+
+
+ protected class PeerCellRenderer extends JLabel implements
ListCellRenderer {
+
+ public PeerCellRenderer() {
+ setOpaque(true);
+ }
+
+ public java.awt.Component
+ getListCellRendererComponent(JList list,
+ Object value, // value to
display
+ int index, // cell index
+ boolean iss, // is
selected
+ boolean chf) // cell has
focus?
+ {
+ if (value instanceof String) {
+ setText((String)value);
+ setForeground(Color.BLACK);
+ }
+
+ if (value instanceof Peer) {
+ setText(((Peer)value).toString());
+ setForeground(((Peer)value).getTextColor());
+ }
+
+ // Set a border if the
+ //list item is selected
+ if (iss)
+
setBorder(BorderFactory.createLineBorder(Color.BLUE, 2));
+ else
+
setBorder(BorderFactory.createLineBorder(list.getBackground(), 2));
+
+ return this;
+ }
+ }
+
+
+
/**
- * @param peerNames see java.lang.String
- * @param peerInfos see java.lang.HashMap
+ * \param peers : Vectors containing Hashmap containing the parameter
list
*/
- public synchronized void setPeerList(Vector peerNames, Vector peerInfos)
+ public synchronized void setPeerList(Hashtable peers)
{
+ Vector results = new Vector();
+ /* TODO : dirty : should use comparator, etc */
+ for (int i = 0 ; i < STR_STATUS.length ; i++) {
+ for (Enumeration e = peers.elements();
+ e.hasMoreElements();) {
+ Hashtable ht = (Hashtable)e.nextElement();
+
+ if
(STR_STATUS[i].equals(ht.get("volatile.status"))) {
+ results.add(new Peer(ht));
+ }
+ }
+ }
+
+ peerList.setListData(results);
}