Removed dialog logic from the Topo2Map Class

Change-Id: I2e89c911d904feb7226160ee368459d04a3ddc32
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2MapDialog.js b/web/gui/src/main/webapp/app/view/topo2/topo2MapDialog.js
new file mode 100644
index 0000000..85b67b6
--- /dev/null
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2MapDialog.js
@@ -0,0 +1,130 @@
+/*
+ * Copyright 2016-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ ONOS GUI -- Topology Force Module.
+ Visualization of the topology in an SVG layer, using a D3 Force Layout.
+ */
+
+(function () {
+    'use strict';
+
+    // Injected
+    var $log, wss, t2ds;
+
+    // Constants
+    var mapRequest = 'mapSelectorRequest';
+
+    // State
+    var order, maps, map, mapItems;
+
+    var Dialog = function (options) {
+
+        this.okHandlerCallback = options.okHandler;
+        this.closeHandlerCallback = options.closeHandler;
+
+        wss.bindHandlers({
+            mapSelectorResponse: this.handleMapResponse.bind(this)
+        });
+    };
+
+    Dialog.prototype = {
+        handleMapResponse: function (data) {
+            $log.info('Got response', data);
+            order = data.order;
+            maps = data.maps;
+
+            t2ds.openDialog()
+                .setTitle('Select Map')
+                .addContent(this.render.bind(this)())
+                .addOk(this.okHandler.bind(this), 'OK')
+                .addCancel(this.closeHandler.bind(this), 'Close')
+                .bindKeys();
+        },
+
+        open: function () {
+            wss.sendEvent(mapRequest);
+        },
+        close: function () {
+            wss.unbindHandlers({
+                mapSelectorResponse: this.handleMapResponse.bind(this)
+            });
+        },
+
+        selectedMap: function () {
+            map = maps[this.options[this.selectedIndex].value];
+            $log.info('Selected map', map);
+        },
+
+        okHandler: function () {
+
+            var p = {
+                mapid: map.id,
+                mapscale: map.scale,
+                mapfilepath: map.filePath,
+                tint: 'off'
+                // tint: tintCheck.property('checked') ? 'on' : 'off'
+            };
+
+            if (this.okHandlerCallback) {
+                this.okHandlerCallback(p);
+            }
+
+            this.close();
+        },
+        closeHandler: function () {
+
+            if (this.closeHandlerCallback) {
+                this.closeHandlerCallback();
+            }
+
+            this.close();
+        },
+
+        render: function () {
+
+            var content = t2ds.createDiv('map-list'),
+                form = content.append('form'),
+                current = this.currentMap();
+
+            map = maps[current.mapid];
+            mapItems = form.append('select').on('change', this.selectedMap);
+
+            order.forEach(function (id) {
+                var m = maps[id];
+                mapItems.append('option')
+                    .attr('value', m.id)
+                    .attr('selected', m.id === current.mapid ? true : null)
+                    .text(m.description);
+            });
+
+            return content;
+        }
+    };
+
+    angular.module('ovTopo2')
+    .factory('Topo2MapDialog', [
+        '$log', 'WebSocketService', 'Topo2DialogService',
+        function (_$log_, _wss_, _t2ds_) {
+
+            $log = _$log_;
+            wss = _wss_;
+            t2ds = _t2ds_;
+
+            return Dialog;
+        }
+    ]);
+})();