src/pyams_gis/resources/js/leaflet.Control.Draw.js
changeset 0 c73bb834ccbe
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_gis/resources/js/leaflet.Control.Draw.js	Thu May 18 17:23:48 2017 +0200
@@ -0,0 +1,118 @@
+/**
+ * @class L.Control.Draw
+ * @aka L.Draw
+ */
+L.Control.Draw = L.Control.extend({
+
+	// Options
+	options: {
+		position: 'topleft',
+		draw: {},
+		edit: false
+	},
+
+	// @method initialize(): void
+	// Initializes draw control, toolbars from the options
+	initialize: function (options) {
+		if (L.version < '0.7') {
+			throw new Error('Leaflet.draw 0.2.3+ requires Leaflet 0.7.0+. Download latest from https://github.com/Leaflet/Leaflet/');
+		}
+
+		L.Control.prototype.initialize.call(this, options);
+
+		var toolbar;
+
+		this._toolbars = {};
+
+		// Initialize toolbars
+		if (L.DrawToolbar && this.options.draw) {
+			toolbar = new L.DrawToolbar(this.options.draw);
+
+			this._toolbars[L.DrawToolbar.TYPE] = toolbar;
+
+			// Listen for when toolbar is enabled
+			this._toolbars[L.DrawToolbar.TYPE].on('enable', this._toolbarEnabled, this);
+		}
+
+		if (L.EditToolbar && this.options.edit) {
+			toolbar = new L.EditToolbar(this.options.edit);
+
+			this._toolbars[L.EditToolbar.TYPE] = toolbar;
+
+			// Listen for when toolbar is enabled
+			this._toolbars[L.EditToolbar.TYPE].on('enable', this._toolbarEnabled, this);
+		}
+		L.toolbar = this; //set global var for editing the toolbar
+	},
+
+	// @method onAdd(): container
+	// Adds the toolbar container to the map
+	onAdd: function (map) {
+		var container = L.DomUtil.create('div', 'leaflet-draw'),
+			addedTopClass = false,
+			topClassName = 'leaflet-draw-toolbar-top',
+			toolbarContainer;
+
+		for (var toolbarId in this._toolbars) {
+			if (this._toolbars.hasOwnProperty(toolbarId)) {
+				toolbarContainer = this._toolbars[toolbarId].addToolbar(map);
+
+				if (toolbarContainer) {
+					// Add class to the first toolbar to remove the margin
+					if (!addedTopClass) {
+						if (!L.DomUtil.hasClass(toolbarContainer, topClassName)) {
+							L.DomUtil.addClass(toolbarContainer.childNodes[0], topClassName);
+						}
+						addedTopClass = true;
+					}
+
+					container.appendChild(toolbarContainer);
+				}
+			}
+		}
+
+		return container;
+	},
+
+	// @method onRemove(): void
+	// Removes the toolbars from the map toolbar container
+	onRemove: function () {
+		for (var toolbarId in this._toolbars) {
+			if (this._toolbars.hasOwnProperty(toolbarId)) {
+				this._toolbars[toolbarId].removeToolbar();
+			}
+		}
+	},
+
+	// @method setDrawingOptions(options): void
+	// Sets options to all toolbar instances
+	setDrawingOptions: function (options) {
+		for (var toolbarId in this._toolbars) {
+			if (this._toolbars[toolbarId] instanceof L.DrawToolbar) {
+				this._toolbars[toolbarId].setOptions(options);
+			}
+		}
+	},
+
+	_toolbarEnabled: function (e) {
+		var enabledToolbar = e.target;
+
+		for (var toolbarId in this._toolbars) {
+			if (this._toolbars[toolbarId] !== enabledToolbar) {
+				this._toolbars[toolbarId].disable();
+			}
+		}
+	}
+});
+
+L.Map.mergeOptions({
+	drawControlTooltips: true,
+	drawControl: false
+});
+
+L.Map.addInitHook(function () {
+	if (this.options.drawControl) {
+		this.drawControl = new L.Control.Draw();
+		this.addControl(this.drawControl);
+	}
+});