GUI2 Add links to GUI2 when created dynamically

Change-Id: Ibfa7ae0fa9b02fd6e1b40b9f201ff002c19591a9
diff --git a/core/api/src/main/java/org/onosproject/ui/model/topo/UiRegion.java b/core/api/src/main/java/org/onosproject/ui/model/topo/UiRegion.java
index 4fe24b6..c8a9e05 100644
--- a/core/api/src/main/java/org/onosproject/ui/model/topo/UiRegion.java
+++ b/core/api/src/main/java/org/onosproject/ui/model/topo/UiRegion.java
@@ -36,7 +36,6 @@
  * Represents a region.
  */
 public class UiRegion extends UiNode {
-
     public static final String NULL_NAME = "(root)";
     private static final String NO_NAME = "???";
     private static final String MEMO_ADDED = "added";
@@ -373,6 +372,14 @@
         }
     }
 
+    public void newDeviceAdded(DeviceId deviceId) {
+        deviceIds.add(deviceId);
+    }
+
+    public void deviceRemoved(DeviceId deviceId) {
+        deviceIds.remove(deviceId);
+    }
+
     private boolean isDeviceRelevant(DeviceId deviceId) {
         return deviceIds.contains(deviceId);
     }
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/topo/UiTopoSession.java b/web/gui/src/main/java/org/onosproject/ui/impl/topo/UiTopoSession.java
index 3d164f5..363c4b5 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/topo/UiTopoSession.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/topo/UiTopoSession.java
@@ -16,6 +16,7 @@
 
 package org.onosproject.ui.impl.topo;
 
+import org.onosproject.net.DeviceId;
 import org.onosproject.net.region.RegionId;
 import org.onosproject.ui.UiTopoLayoutService;
 import org.onosproject.ui.impl.UiWebSocket;
@@ -140,6 +141,17 @@
 
     @Override
     public void event(UiModelEvent event) {
+        // To ensure link can be created devices have to be added to the list as
+        // they are created
+        if (event.type() == UiModelEvent.Type.DEVICE_ADDED_OR_UPDATED &&
+                event.memo() == "added") {
+            UiRegion uiRegion = sharedModel.getRegion(currentLayout.regionId());
+            uiRegion.newDeviceAdded(DeviceId.deviceId(event.subject().idAsString()));
+        } else if (event.type() == UiModelEvent.Type.DEVICE_REMOVED) {
+            UiRegion uiRegion = sharedModel.getRegion(currentLayout.regionId());
+            uiRegion.deviceRemoved(DeviceId.deviceId(event.subject().idAsString()));
+        }
+
         webSocket.sendMessage(TOPO2_UI_MODEL_EVENT, t2json.jsonEvent(event));
     }
 
diff --git a/web/gui2-topo-lib/projects/gui2-topo-lib/src/lib/layer/forcesvg/models/force-directed-graph.ts b/web/gui2-topo-lib/projects/gui2-topo-lib/src/lib/layer/forcesvg/models/force-directed-graph.ts
index b4de906..312b69b 100644
--- a/web/gui2-topo-lib/projects/gui2-topo-lib/src/lib/layer/forcesvg/models/force-directed-graph.ts
+++ b/web/gui2-topo-lib/projects/gui2-topo-lib/src/lib/layer/forcesvg/models/force-directed-graph.ts
@@ -36,7 +36,7 @@
     // note: key is link.type
     direct: 100,
     optical: 120,
-    UiEdgeLink: 100,
+    UiEdgeLink: 3,
     _def_: 50,
 };