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);
        }




Reply via email to