https support added
diff --git a/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/TokenStore.java b/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/TokenStore.java
index a51fed7..bd11036 100644
--- a/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/TokenStore.java
+++ b/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/TokenStore.java
@@ -38,8 +38,5 @@
 
 	public void save(String gwName, AccessToken token) {
 		tokens.put(gwName, token);
-	}
-	
-	
-	
+	}	
 }
diff --git a/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/connectionmanager/Connection.java b/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/connectionmanager/Connection.java
index dc4e4b2..43ee49d 100644
--- a/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/connectionmanager/Connection.java
+++ b/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/connectionmanager/Connection.java
@@ -14,8 +14,13 @@
 import java.net.URI;
 
 import org.apache.log4j.Logger;
+import org.eclipse.jetty.util.component.Container;
+import org.eclipse.jetty.util.component.LifeCycle;
+import org.eclipse.jetty.util.component.LifeCycle.Listener;
 import org.eclipse.jetty.websocket.client.ClientUpgradeRequest;
 import org.eclipse.jetty.websocket.client.WebSocketClient;
+import org.eclipse.jetty.websocket.common.WebSocketSession;
+import org.eclipse.jetty.websocket.common.WebSocketSessionListener;
 
 public class Connection {
 
@@ -42,8 +47,61 @@
 		this.client = new WebSocketClient();
 		
 		try {
+			
+			org.eclipse.jetty.util.component.Container.Listener l = new org.eclipse.jetty.util.component.Container.Listener() {
+				
+				@Override
+				public void beanRemoved(Container parent, Object child) {
+					System.out.println("a");
+					
+				}
+				
+				@Override
+				public void beanAdded(Container parent, Object child) {
+					System.out.println("a");
+					
+				}
+			}; 
+			
+			client.addEventListener(l);
+			
+			
+			client.addLifeCycleListener(new Listener() {
+				
+				@Override
+				public void lifeCycleStopping(LifeCycle event) {
+					System.out.println("a");
+					
+				}
+				
+				@Override
+				public void lifeCycleStopped(LifeCycle event) {
+					System.out.println("a");
+					
+				}
+				
+				@Override
+				public void lifeCycleStarting(LifeCycle event) {
+					System.out.println("a");
+					
+				}
+				
+				@Override
+				public void lifeCycleStarted(LifeCycle event) {
+					System.out.println("a");
+					
+				}
+				
+				@Override
+				public void lifeCycleFailure(LifeCycle event, Throwable cause) {
+					System.out.println("a");
+				}
+			});
+			
 			client.start();
 			client.connect(socket, url, request);
+			
+			
 		} catch (Throwable t) {
 			throw new ConnectException("Cant (re)connect gateway " + gatewayName + ": " + t.getMessage());
 		}
diff --git a/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/connectionmanager/ConnectionListener.java b/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/connectionmanager/ConnectionListener.java
new file mode 100644
index 0000000..6e162b8
--- /dev/null
+++ b/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/connectionmanager/ConnectionListener.java
@@ -0,0 +1,21 @@
+/**
+ * Copyright (c) 2019 CEA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ *  Contributors:
+ *     CEA - initial API and implementation and/or initial documentation
+ */
+package org.eclipse.sensinact.studio.http.services.client.connectionmanager;
+
+/**
+ * @author Etienne Gandrille
+ */
+public interface ConnectionListener {
+
+	void onConnect(String gatewayname);
+	
+	void onDisconnect(String gatewayname);
+}
diff --git a/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/connectionmanager/NotifDispatcher.java b/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/connectionmanager/NotifDispatcher.java
index ff85b3e..2c39022 100644
--- a/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/connectionmanager/NotifDispatcher.java
+++ b/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/connectionmanager/NotifDispatcher.java
@@ -27,7 +27,9 @@
 
 	private static NotifDispatcher INSTANCE = null;
 
-	private Set<NotifSubscriptionListener> listeners = new HashSet<>();
+	private Set<NotifSubscriptionListener> notifSublisteners = new HashSet<>();
+	
+	private Set<ConnectionListener> conlisteners = new HashSet<>();
 
 	private static final Logger logger = Logger.getLogger(NotifDispatcher.class);
 
@@ -41,13 +43,21 @@
 	}
 
 	public void subscribe(NotifSubscriptionListener listener) {
-		listeners.add(listener);
+		notifSublisteners.add(listener);
 	}
 
 	public void unsubscribe(NotifSubscriptionListener listener) {
-		listeners.remove(listener);
+		notifSublisteners.remove(listener);
 	}
 
+	public void subscribe(ConnectionListener listener) {
+		conlisteners.add(listener);
+	}
+
+	public void unsubscribe(ConnectionListener listener) {
+		conlisteners.remove(listener);
+	}
+		
 	void notifyMessage(String gatewayName, String msg) {
 		System.out.println("Message " + msg);
 
@@ -93,25 +103,27 @@
 	}
 
 	void notifyGatewayConnected(String gatewayName) {
-		System.out.println("GATEWAY CONNECTED !!!! " + gatewayName);
+		for (ConnectionListener listener : conlisteners)
+			listener.onConnect(gatewayName);
 	}
 
 	void notifyGatewayDisconnected(String gatewayName) {
-		System.out.println("GATEWAY DISCONNECTED !!!! " + gatewayName);
+		for (ConnectionListener listener : conlisteners)
+			listener.onDisconnect(gatewayName);
 	}
 
 	private void notifyLocation(String gateway, List<MsgSensinact> message) {
-		for (NotifSubscriptionListener listener : listeners)
+		for (NotifSubscriptionListener listener : notifSublisteners)
 			listener.onLocationEvent(gateway, message);
 	}
 
 	private void notifyLifecycle(String gateway, List<MsgSensinact> message) {
-		for (NotifSubscriptionListener listener : listeners)
+		for (NotifSubscriptionListener listener : notifSublisteners)
 			listener.onLifecycleEvent(gateway, message);
 	}
 	
 	private void notifyValue(String gateway, List<MsgSensinact> message) {
-		for (NotifSubscriptionListener listener : listeners)
+		for (NotifSubscriptionListener listener : notifSublisteners)
 			listener.onValueEvent(gateway, message);
 	}
 }
diff --git a/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/connectionmanager/SensinactSocket.java b/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/connectionmanager/SensinactSocket.java
index c06e358..142fbf6 100644
--- a/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/connectionmanager/SensinactSocket.java
+++ b/services/org.eclipse.sensinact.studio.http.services/src/org/eclipse/sensinact/studio/http/services/client/connectionmanager/SensinactSocket.java
@@ -11,10 +11,6 @@
 package org.eclipse.sensinact.studio.http.services.client.connectionmanager;
 
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
 
 import org.apache.log4j.Logger;
 import org.eclipse.jetty.websocket.api.RemoteEndpoint;
diff --git a/services/org.eclipse.sensinact.studio.model.manager/src/org/eclipse/sensinact/studio/model/manager/modelupdater/ModelUpdater.java b/services/org.eclipse.sensinact.studio.model.manager/src/org/eclipse/sensinact/studio/model/manager/modelupdater/ModelUpdater.java
index 5c2d8f9..1bdd0b1 100644
--- a/services/org.eclipse.sensinact.studio.model.manager/src/org/eclipse/sensinact/studio/model/manager/modelupdater/ModelUpdater.java
+++ b/services/org.eclipse.sensinact.studio.model.manager/src/org/eclipse/sensinact/studio/model/manager/modelupdater/ModelUpdater.java
@@ -31,6 +31,7 @@
 import org.eclipse.sensinact.studio.http.messages.snamessage.resourceslist.MsgResourcesList;
 import org.eclipse.sensinact.studio.http.services.client.GatewayHttpClient;
 import org.eclipse.sensinact.studio.http.services.client.GatewayHttpClient.RequestParameter;
+import org.eclipse.sensinact.studio.http.services.client.connectionmanager.ConnectionListener;
 import org.eclipse.sensinact.studio.http.services.client.connectionmanager.NotifDispatcher;
 import org.eclipse.sensinact.studio.http.services.client.connectionmanager.NotifSubscriptionListener;
 import org.eclipse.sensinact.studio.model.manager.listener.devicelocation.DeviceLocationManager;
@@ -44,7 +45,7 @@
 /**
  * @author Nicolas Hili, Etienne Gandrille, Jander and others
  */
-public class ModelUpdater implements NotifSubscriptionListener {
+public class ModelUpdater implements NotifSubscriptionListener, ConnectionListener {
 
 	private static final Logger logger = Logger.getLogger(ModelUpdater.class);
 	
@@ -57,7 +58,8 @@
 	}
 
 	private ModelUpdater() {
-		NotifDispatcher.getInstance().subscribe(this);
+		NotifDispatcher.getInstance().subscribe((NotifSubscriptionListener) this);
+		NotifDispatcher.getInstance().subscribe((ConnectionListener) this);
 	}
 
 	/**
@@ -326,6 +328,16 @@
 		return tokens[3];
 	}
 	
+	@Override
+	public void onConnect(String gatewayname) {
+		System.out.println("CONNECT !!!!!!!!!!!!!");
+	}
+
+	@Override
+	public void onDisconnect(String gatewayname) {
+		ModelEditor.getInstance().clearGatewayContent(gatewayname);
+	}
+	
 	/* ========= */
 	/* Exception */
 	/* ========= */
diff --git a/ui/org.eclipse.sensinact.studio.navigator.device/src/org/eclipse/sensinact/studio/navigator/device/toolbar/DisconnectHandler.java b/ui/org.eclipse.sensinact.studio.navigator.device/src/org/eclipse/sensinact/studio/navigator/device/toolbar/DisconnectHandler.java
index c27c4b0..532bdb3 100644
--- a/ui/org.eclipse.sensinact.studio.navigator.device/src/org/eclipse/sensinact/studio/navigator/device/toolbar/DisconnectHandler.java
+++ b/ui/org.eclipse.sensinact.studio.navigator.device/src/org/eclipse/sensinact/studio/navigator/device/toolbar/DisconnectHandler.java
@@ -17,7 +17,6 @@
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.sensinact.studio.http.services.client.connectionmanager.ConnectionManager;
-import org.eclipse.sensinact.studio.model.manager.modelupdater.ModelEditor;
 import org.eclipse.sensinact.studio.preferences.ConfigurationManager;
 import org.eclipse.sensinact.studio.preferences.GatewayHttpConfig;
 import org.eclipse.sensinact.studio.resource.Gateway;
@@ -61,7 +60,6 @@
 	}
 
 	private void disconnect(Shell parent, GatewayHttpConfig gwConfig) throws ConnectException {
-		ModelEditor.getInstance().clearGatewayContent(gwConfig.getName());
 		ConnectionManager.getInstance().disconnect(gwConfig.getName());
 	}
 }
diff --git a/ui/org.eclipse.sensinact.studio.navigator.device/src/org/eclipse/sensinact/studio/navigator/device/toolbar/dialog/GatewayConfigDialog.java b/ui/org.eclipse.sensinact.studio.navigator.device/src/org/eclipse/sensinact/studio/navigator/device/toolbar/dialog/GatewayConfigDialog.java
index 0501cc7..d018051 100644
--- a/ui/org.eclipse.sensinact.studio.navigator.device/src/org/eclipse/sensinact/studio/navigator/device/toolbar/dialog/GatewayConfigDialog.java
+++ b/ui/org.eclipse.sensinact.studio.navigator.device/src/org/eclipse/sensinact/studio/navigator/device/toolbar/dialog/GatewayConfigDialog.java
@@ -224,8 +224,8 @@
 		}
 
 		boolean isLocalhost = address.equals("localhost") || address.equals("http://localhost");
-		boolean isIPv4 = address.matches("^(http://)?[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$");
-		boolean isDnsName = address.matches("^(http://)?[0-9A-Za-z\\.]+\\.[A-Za-z]{2,8}$");
+		boolean isIPv4 = address.matches("^(http://|https://)?[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$");
+		boolean isDnsName = address.matches("^(http://|https://)?[0-9A-Za-z\\.]+\\.[A-Za-z]{2,8}$");
 		if (!isLocalhost && !isIPv4 & !isDnsName) {
 			return "The gateway address is not well formed";
 		}