Author: sfrenot
Date: Fri Jun 20 01:29:37 2008
New Revision: 669818

URL: http://svn.apache.org/viewvc?rev=669818&view=rev
Log:
FELIX-159
----------
Fix some bugs:

  - Gateway tree:
    - Can't anymore associate a gateway to a previously removed gateway
    - The gateway association choice is now a combo box, instead of one button 
per gateway
    - Can not create a gateway with an even registered nickname
    - "Remove selected gateway" button, asks user to select a gateway if it's 
not the case
    - Pooling interval of gateways is now into seconds unit and value range is 
1 to 1000 (instead of 500 to 10000 milliseconds)

  - General:
    - Some English correction trying
    - Sometimes, the remote loger panel did not works, because it's start to 
listen gateway properties change event after a gateway connection. Now, gateway 
tree is not anymore a propertyChangeListener, but the node panel ask for an 
other new connection event propagation if a CommonPlugin (like remote loger) 
arrived after a gateway connection.


Modified:
    
felix/trunk/mosgi/console.component/src/main/java/org/apache/felix/mosgi/console/component/RemoteLogger_jtable.java
    
felix/trunk/mosgi/console.component/src/main/java/org/apache/felix/mosgi/console/component/RemoteLogger_jtree.java
    
felix/trunk/mosgi/console.gui/src/main/java/org/apache/felix/mosgi/console/gui/Gateway.java
    
felix/trunk/mosgi/console.gui/src/main/java/org/apache/felix/mosgi/console/gui/NodePanel.java
    
felix/trunk/mosgi/console.gui/src/main/java/org/apache/felix/mosgi/console/gui/NodesTree.java

Modified: 
felix/trunk/mosgi/console.component/src/main/java/org/apache/felix/mosgi/console/component/RemoteLogger_jtable.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/mosgi/console.component/src/main/java/org/apache/felix/mosgi/console/component/RemoteLogger_jtable.java?rev=669818&r1=669817&r2=669818&view=diff
==============================================================================
--- 
felix/trunk/mosgi/console.component/src/main/java/org/apache/felix/mosgi/console/component/RemoteLogger_jtable.java
 (original)
+++ 
felix/trunk/mosgi/console.component/src/main/java/org/apache/felix/mosgi/console/component/RemoteLogger_jtable.java
 Fri Jun 20 01:29:37 2008
@@ -62,7 +62,6 @@
 
   public RemoteLogger_jtable (){
     super(new String[]{"Date","Time", "Src", "Id", "Name", "State", "Lvl", 
"Msg"},1);
-    System.out.println("JTable Remote logger");
 
     jp=new JPanel();
     jp.setLayout(new BorderLayout());

Modified: 
felix/trunk/mosgi/console.component/src/main/java/org/apache/felix/mosgi/console/component/RemoteLogger_jtree.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/mosgi/console.component/src/main/java/org/apache/felix/mosgi/console/component/RemoteLogger_jtree.java?rev=669818&r1=669817&r2=669818&view=diff
==============================================================================
--- 
felix/trunk/mosgi/console.component/src/main/java/org/apache/felix/mosgi/console/component/RemoteLogger_jtree.java
 (original)
+++ 
felix/trunk/mosgi/console.component/src/main/java/org/apache/felix/mosgi/console/component/RemoteLogger_jtree.java
 Fri Jun 20 01:29:37 2008
@@ -118,7 +118,7 @@
       });
       jpopup.add(jmiRemove);
       if (selPath.getPath().length==3) {
-        JMenuItem jmiLogLvl=new JMenuItem("Set log lvl");
+        JMenuItem jmiLogLvl=new JMenuItem("Set log level");
         jmiLogLvl.addActionListener(new ActionListener(){
           public void actionPerformed(ActionEvent e){
             setLogLvl(selPath);
@@ -180,12 +180,6 @@
   /* fin a supprimer */
  
   public void propertyChange(PropertyChangeEvent e){
-    // TODO : DEBUG
-    // Sometimes ???
-    //   *1)  when stay with "return" key pressed => JoptionPane miss 
getValue()
-    //   *2)  when commonPanel started after a new_node_connection event.
-    //        Slow or slowed (by a key pressed for exemple) computer.
-    //        => gui.NodesTree fireNewNodeConnection after each 
PCE_common_plugin_added for each connected nodes
     if (e.getPropertyName().equals(Plugin.NEW_NODE_CONNECTION)){
       try {
         MBeanServerConnection mbsc=(MBeanServerConnection)e.getNewValue();
@@ -296,22 +290,15 @@
       MBeanServerConnection mb=(MBeanServerConnection) 
ht_connectedGateway.get(connString);
       Integer curentVal=(Integer) mb.getAttribute(Activator.REMOTE_LOGGER_ON, 
"LogLvl");
 
-      JOptionPane jop = new JOptionPane("Select a log level for 
\""+connString+"\" :", JOptionPane.QUESTION_MESSAGE, 
JOptionPane.OK_CANCEL_OPTION, null, LOG_LVL, LOG_LVL[curentVal.intValue()-1]);
-      JDialog dialog = jop.createDialog(jp, "Log level");
-      dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
-      dialog.show();
-      String choice = (String) jop.getValue();
-      Integer newVal=new Integer(4);
-      if (choice.equals("Error")) {newVal=new Integer(1);}
-      else if (choice.equals("Warning")) {newVal=new Integer(2);}
-      else if (choice.equals("Info")) {newVal=new Integer(3);}
-      else if (choice.equals("Debug")) {newVal=new Integer(4);}
+      int val = JOptionPane.showOptionDialog(jp, "Select a log level for 
\"..."+connString+"\" :", "Log level", JOptionPane.YES_NO_CANCEL_OPTION, 
JOptionPane.PLAIN_MESSAGE, null, LOG_LVL, LOG_LVL[curentVal.intValue()-1]);
+      if ( val == JOptionPane.CLOSED_OPTION ) { return; }
+      Integer newVal = new Integer(val+1);
 
       mb.setAttribute(Activator.REMOTE_LOGGER_ON, new Attribute("LogLvl", 
newVal));
       DefaultMutableTreeNode ddmmttnn=(DefaultMutableTreeNode) 
tp.getLastPathComponent();
       ht_logLvl.put(ddmmttnn, newVal);
     } catch (Exception ex) {
-      JOptionPane.showMessageDialog(jp,"Error with \""+connString+"\" :\n"+ex, 
"Error :", JOptionPane.ERROR_MESSAGE);
+      JOptionPane.showMessageDialog(jp,"Error with \"..."+connString+"\" 
:\n"+ex, "Error :", JOptionPane.ERROR_MESSAGE);
       ex.printStackTrace();
     }
   }

Modified: 
felix/trunk/mosgi/console.gui/src/main/java/org/apache/felix/mosgi/console/gui/Gateway.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/mosgi/console.gui/src/main/java/org/apache/felix/mosgi/console/gui/Gateway.java?rev=669818&r1=669817&r2=669818&view=diff
==============================================================================
--- 
felix/trunk/mosgi/console.gui/src/main/java/org/apache/felix/mosgi/console/gui/Gateway.java
 (original)
+++ 
felix/trunk/mosgi/console.gui/src/main/java/org/apache/felix/mosgi/console/gui/Gateway.java
 Fri Jun 20 01:29:37 2008
@@ -36,7 +36,7 @@
   private static final String JMX_SERVICE = "service:jmx:";
   private static final String DEFAULT_JMXSURL = 
JMX_SERVICE+"rmi:///jndi/rmi://127.0.0.1:1099/core";
 
-  private static Hashtable HT_GATEWAY = new Hashtable();
+  protected static Hashtable HT_GATEWAY = new Hashtable();
 
   private JMXConnector jmxc;
   private MBeanServerConnection mbsc;
@@ -82,6 +82,9 @@
 
   // Intermediate private Gateway creator
   private static Gateway newGateway(String nickname, String serviceURL, String 
parent_gateway) throws Exception {
+    if ( HT_GATEWAY.containsKey(nickname) ) {
+      throw new Exception("Gateway nickname \""+nickname+"\" even exist.");
+    }
     if ( !serviceURL.startsWith(JMX_SERVICE) ) {
       serviceURL = JMX_SERVICE+serviceURL;
     }
@@ -134,6 +137,9 @@
   public static Gateway newGateway(Gateway ref) throws Exception {
     String nickname = JOptionPane.showInputDialog("Profil nickname", "");
     if ( nickname == null) return null;
+    if ( HT_GATEWAY.containsKey(nickname) ) {
+      throw new Exception("Gateway nickname \""+nickname+"\" even exist.");
+    }
     String gateway_ref = ref!=null?ref+"":"";
     String str_jmxsurl = JOptionPane.showInputDialog("JMX service URL", 
gateway_ref);
     if ( str_jmxsurl == null) return null;
@@ -142,10 +148,12 @@
     System.arraycopy(gateway_list, 0, gateway_list2, 1, gateway_list.length);
     gateway_list2[0] = "None";
     java.util.Arrays.sort(gateway_list);
-    int val = JOptionPane.showOptionDialog(new javax.swing.JFrame(), "Link to 
another gateway ?", "Gateway association", JOptionPane.YES_NO_CANCEL_OPTION, 
JOptionPane.PLAIN_MESSAGE, null, gateway_list2, gateway_list2[0]);
-    String str_parent = "";
-    if ( val != JOptionPane.CLOSED_OPTION ) { str_parent = 
""+gateway_list2[val]; }
-    if ( val == 0 ) { str_parent = ""; }
+    Object val = JOptionPane.showInputDialog(new javax.swing.JFrame(), "Link 
to another gateway ?", "Gateway association", JOptionPane.QUESTION_MESSAGE, 
null, gateway_list2, gateway_list2[0]);
+    if ( val == null) return null;
+    if ( val.toString().equals("None") ) {
+      val = new String("");
+    }
+    String str_parent = val.toString();
     return Gateway.newGateway(nickname, str_jmxsurl, str_parent);
   }
 

Modified: 
felix/trunk/mosgi/console.gui/src/main/java/org/apache/felix/mosgi/console/gui/NodePanel.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/mosgi/console.gui/src/main/java/org/apache/felix/mosgi/console/gui/NodePanel.java?rev=669818&r1=669817&r2=669818&view=diff
==============================================================================
--- 
felix/trunk/mosgi/console.gui/src/main/java/org/apache/felix/mosgi/console/gui/NodePanel.java
 (original)
+++ 
felix/trunk/mosgi/console.gui/src/main/java/org/apache/felix/mosgi/console/gui/NodePanel.java
 Fri Jun 20 01:29:37 2008
@@ -19,6 +19,7 @@
 package org.apache.felix.mosgi.console.gui;
 
 import org.apache.felix.mosgi.console.ifc.Plugin;
+import org.apache.felix.mosgi.console.ifc.CommonPlugin;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.BundleException;
@@ -98,6 +99,14 @@
       MBeanServerConnection mbsc = (MBeanServerConnection)event.getNewValue();
       String connString = (String) event.getOldValue();
       startMBeanTabBundles(connString, mbsc);
+    }else if 
(event.getPropertyName().equals(CommonPlugin.COMMON_PLUGIN_ADDED)) {
+      Iterator it = Gateway.HT_GATEWAY.values().iterator();
+      while (it.hasNext()) {
+        Gateway g = (Gateway) it.next();
+       if ( g.isConnected() ) {
+          a.firePropertyChangedEvent(Plugin.NEW_NODE_CONNECTION, g.toString(), 
g.getMbsc());
+        }
+      }
     }
   }
 

Modified: 
felix/trunk/mosgi/console.gui/src/main/java/org/apache/felix/mosgi/console/gui/NodesTree.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/mosgi/console.gui/src/main/java/org/apache/felix/mosgi/console/gui/NodesTree.java?rev=669818&r1=669817&r2=669818&view=diff
==============================================================================
--- 
felix/trunk/mosgi/console.gui/src/main/java/org/apache/felix/mosgi/console/gui/NodesTree.java
 (original)
+++ 
felix/trunk/mosgi/console.gui/src/main/java/org/apache/felix/mosgi/console/gui/NodesTree.java
 Fri Jun 20 01:29:37 2008
@@ -45,16 +45,16 @@
 import java.util.Hashtable;
 import org.osgi.framework.BundleContext;
 import org.apache.felix.mosgi.console.ifc.Plugin;
-import org.apache.felix.mosgi.console.ifc.CommonPlugin;
 import javax.management.NotificationListener;
 import javax.management.Notification;
 import javax.management.remote.JMXConnectionNotification;
 
-public class NodesTree extends JPanel implements TreeSelectionListener, 
NotificationListener, ActionListener, PropertyChangeListener {
+public class NodesTree extends JPanel implements TreeSelectionListener, 
NotificationListener, ActionListener {
 
   private static Hashtable PROTOCOL_PACKAGE_PROVIDER = new Hashtable();
   protected static final String TOP_NAME = "Servers";
-  private static int POOLING_TIME = 2500;
+  private static int POOLING_TIME = 3;
+  private static boolean needToRefreshPoolingTime = false;
   
   private Activator activator;
   private static BundleContext bc;
@@ -100,23 +100,6 @@
     tree.expandPath(new 
TreePath(((DefaultMutableTreeNode)(dtm.getRoot())).getPath())); // expand root 
node
   }
 
-  //////////////////////////////////////////////////
-  //          PropertyChangeListener              //
-  //////////////////////////////////////////////////
-  public void propertyChange(PropertyChangeEvent event) {
-    if (event.getPropertyName().equals(CommonPlugin.COMMON_PLUGIN_ADDED)) {
-      Enumeration enu = top.breadthFirstEnumeration();
-      enu.nextElement(); // Skip top node
-      while ( enu.hasMoreElements() ) {
-        // Common plugin added after a gateway connection so 
firePCE(Plugin.NEW_NODE_CONNECTION, connString , mbsc) again :
-       Gateway g = (Gateway) ((DefaultMutableTreeNode) 
enu.nextElement()).getUserObject();
-       if ( g.isConnected() ) {
-          activator.firePropertyChangedEvent(Plugin.NEW_NODE_CONNECTION, 
g.toString(), g.getMbsc());
-        }
-      }
-    }
-  }
-
   //////////////////////////////////////////////////////
   //               TreeSelectionListener              //
   //////////////////////////////////////////////////////
@@ -195,12 +178,15 @@
       }
     } else if ( object == jb_removeNode ) { // Remove a node from tree
       DefaultMutableTreeNode node = 
(DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
-      if ( node != top) {
+      if ( node == null || !node.isLeaf() ) {
+        JOptionPane.showMessageDialog(null, "Please select a gateway (without 
child gateway) to remove.", "Warning", JOptionPane.WARNING_MESSAGE);
+      } else if ( node != top) {
         Gateway g = (Gateway) node.getUserObject();
         if ( !node.equals(top) ){
-         if( JOptionPane.showConfirmDialog(null, "Sure we remove this gateway 
\""+g.getNickname()+"\" ?\n "+g.toString()) == JOptionPane.YES_OPTION ) {
+         if( JOptionPane.showConfirmDialog(null, "Sure we remove gateway 
\""+g.getNickname()+"\" ?\n "+g.toString(), "Confirmation", 
JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION ) {
             g.disconnect(this);
            dtm.removeNodeFromParent(node);
+           Gateway.HT_GATEWAY.remove(g.getNickname());
            System.out.println("Remove node : "+g);
           }
        }
@@ -208,22 +194,21 @@
     } else if ( object == jtf_pool) {
       try {
         POOLING_TIME = Integer.parseInt(jtf_pool.getText());
-       if ( POOLING_TIME > 0 & POOLING_TIME < 500 ) {
-          POOLING_TIME = 500;
-       } else if ( POOLING_TIME < 0 ) {
+       if ( POOLING_TIME < 0 ) {
          POOLING_TIME = 0;
-       } else if ( POOLING_TIME > 9999 ) {
-          POOLING_TIME = 9999;
+       } else if ( POOLING_TIME > 999 ) {
+          POOLING_TIME = 999;
        }
       } catch (Exception exep) {
         //
       }
-      if ( POOLING_TIME >= 500 ) {
+      if ( POOLING_TIME > 0 ) {
         jb_refresh.setEnabled(false);
       } else {
         jb_refresh.setEnabled(true);
       }
       jtf_pool.setText(""+POOLING_TIME);
+      needToRefreshPoolingTime = true;
     } else if ( object == jb_refresh) {
       tryToConnectAllNodes();
     }
@@ -232,7 +217,7 @@
   ///////////////////////////////////////////////////
   //           Private part                        //
   ///////////////////////////////////////////////////
-  private void tryToConnectAllNodes(){
+  private void tryToConnectAllNodes() {
     isAllNodesConnected = true;
     Enumeration enu = top.breadthFirstEnumeration();
     enu.nextElement(); // Skip top node
@@ -264,11 +249,15 @@
         if ( !isAllNodesConnected && POOLING_TIME > 0 ) {
          tryToConnectAllNodes();
         } 
-       try {
-          Thread.sleep(POOLING_TIME);
-        } catch(InterruptedException e) {
-          //e.printStackTrace();
-        }
+       int loop = POOLING_TIME;
+       while ( loop-- > 0 & !needToRefreshPoolingTime ) {
+         try {
+            Thread.sleep(1000);
+          } catch(InterruptedException ie) {
+            //ie.printStackTrace();
+          }
+       }
+       needToRefreshPoolingTime = false;
       }
     }
   }
@@ -320,14 +309,14 @@
     buttonPanel.add(Box.createHorizontalGlue());
     jtf_pool = new JTextField(""+POOLING_TIME);
     jtf_pool.addActionListener(this);
-    jtf_pool.setToolTipText("<html>Pooling time in millisecond<br>Value range 
is 500 to 9999<br>A value of 0 means no refresh.</html>");
+    jtf_pool.setToolTipText("<html>Pooling interval in seconds<br>Value range 
is 1 to 999<br>A value of 0 means no refresh.</html>");
     jtf_pool.setPreferredSize(new Dimension(40,21));
     jtf_pool.setMaximumSize(new Dimension(40,21));
     buttonPanel.add(jtf_pool);
     buttonPanel.add(Box.createRigidArea(new Dimension(2,0)));
     jb_refresh = new JButton(new 
ImageIcon(Toolkit.getDefaultToolkit().getImage(bc.getBundle().getResource("images/"+"REFRESH.gif"))));
     jb_refresh.setOpaque(true);
-    jb_refresh.setToolTipText("<html>Try to connect gateways now.<br>Enable 
only if there is no pooling time.</html>");
+    jb_refresh.setToolTipText("<html>Try to connect to gateways 
now.<br>Enabled only if there is no pooling time.</html>");
     jb_refresh.addActionListener(this);
     jb_refresh.setPreferredSize(new Dimension(18, 18));
     jb_refresh.setEnabled(false);


Reply via email to