From d74b495736f0c04522ec54274b70fed0ded2878d Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Tue, 27 Jun 2023 11:30:06 +0800
Subject: [PATCH] 任务新增导出

---
 public/map/controls/toolbar/tools/BaseTool.js |  239 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 239 insertions(+), 0 deletions(-)

diff --git a/public/map/controls/toolbar/tools/BaseTool.js b/public/map/controls/toolbar/tools/BaseTool.js
new file mode 100644
index 0000000..a300682
--- /dev/null
+++ b/public/map/controls/toolbar/tools/BaseTool.js
@@ -0,0 +1,239 @@
+/**
+ * 所有工具的基类,自定义工具必需继承于此。BaseTool定义了工具的所有必需方法,有必要时,请重写。
+ * @author 温杨彪 2015-9-12
+ **/
+define([
+	"dojo",
+	"dojo/_base/declare",
+	"dijit/_WidgetBase",
+	"dijit/_TemplatedMixin",
+	"dojo/text!controls/toolbar/tools/template.html",
+	"dojo/dom-construct",
+	"dojo/dom-attr",
+	"dojo/dom-style",
+	"dojo/_base/lang",
+	"dojo/on",
+	"dojo/dom-class"
+], function(
+	dojo,
+	declare,
+	_WidgetBase,
+	_TemplatedMixin,
+	template,
+	domConstruct,
+	domAttr,
+	domStyle,
+	lang,
+	on,
+	domClass
+) {
+	var RL = declare([_WidgetBase, _TemplatedMixin], {
+		templateString: template,
+		_activated: false,
+		map: null,
+		_graphicsLayer: null,
+		_label: "",
+		_toolCursor: null,
+		/**
+		 * 正常的样式类
+		 */
+		_normalClass: "toolbar-item-normal",
+
+		/**
+		 * 正常的图标样式类
+		 */
+		_normalIconClass: "",
+		/**
+		 * 鼠标上浮的图标样式类
+		 */
+		_overIconClass: "",
+		/**
+		 * 鼠标上浮的样式类
+		 */
+		_overClass: "toolbar-item-over",
+		/**
+		 * 工具激活的样式类
+		 */
+		_selectedClass: "toolbar-item-select",
+		/**
+		 * 工具激活的图标样式类
+		 */
+		_selectedIconClass: "",
+		_config: null,
+		_status: "",
+		/**
+		 * 工具不可用的样式类
+		 */
+		_disableClass: "",
+		_enable: true,
+		mapEvents: [],
+		/**
+		 * 
+		 */
+		constructor: function(args) {
+			if (args) {
+				declare.safeMixin(this, args);
+			}
+			this.tooltip = "工具"
+		},
+		postCreate: function() {
+			domClass.add(this.tool, this._normalClass);
+			domClass.add(this.toolicon, this._normalIconClass);
+		},
+		_onClick: function(evt) {
+			evt.stopPropagation();
+			if (!this._enable) {
+				return;
+			}
+		},
+		_onMouseOverHandler: function(evt) {
+			evt.stopPropagation();
+			if (this._enable && this._activated == false) {
+				domClass.add(this.tool, this._overClass);
+				domClass.add(this.toolicon, this._overIconClass);
+			}
+		},
+		_onMouseOutHandler: function(evt) {
+			evt.stopPropagation();
+			if (this._enable && this._activated == false) {
+				domClass.remove(this.tool, this._overClass);
+				domClass.remove(this.toolicon, this._overIconClass);
+			}
+		},
+		_onMouseDownHandler: function(evt) {
+			evt.stopPropagation();
+			if (!this._enable)
+				return;
+			if (this._activated) {
+				this.deactivate(null);
+				this.ondeactivate();
+			} else {
+				this.activate(null);
+			}
+		},
+		_onMouseUpHandler: function(evt) {
+			evt.stopPropagation();
+			if (!this._enable)
+				return;
+			if (!this._activated) {
+				domClass.remove(this.toolicon, this._selectedIconClass);
+				domClass.remove(this.tool, this._selectedClass);
+			}
+			domClass.add(this.toolicon, this._overIconClass);
+			domClass.add(this.tool, this._overClass);
+		},
+		disable:function(){
+			this._enable=false;
+			domStyle.set(this.domNode,"background-color","#DBDBDB");
+		},
+		enable:function(){
+			this._enable=true;
+			domStyle.set(this.domNode,"background-color","");
+		},
+		activate: function(args) {
+			if (this._activated || !this._enable)
+				return;
+			this._activated = true;
+			domClass.add(this.toolicon, this._selectedIconClass);
+			domClass.add(this.tool, this._selectedClass);
+			if (this.map != null) {
+				var map = this.map;
+				var events = this.mapEvents;
+				events.push(map.on("click", this._onMapClickHandler));
+				events.push(map.on("mouse-down", this._onMapMouseDownHandler));
+				events.push(map.on("mouse-up", this._onMapMouseUpHandler));
+				events.push(map.on("mouse-move", this._onMapMouseMoveHandler));
+				events.push(map.on("dbl-click", this._onMapDoubleClickHandler));
+			}
+			this.onactivate();
+		},
+		onactivate: function() {
+			return this;
+		},
+		ondeactivate: function() {
+			return this;
+		},
+		deactivate: function(args) {
+			if (!this._enable || !this._activated)
+				return;
+			this._activated = false;
+			domClass.remove(this.toolicon, this._selectedIconClass);
+			domClass.remove(this.tool, this._selectedClass);
+			domClass.remove(this.toolicon, this._overIconClass);
+			domClass.remove(this.tool, this._overClass);
+			if (this.map != null) {
+				var events = this.mapEvents;
+				for (var i = 0; i < events.length; i++) {
+					events[i].remove();
+				}
+				this.mapEvents = [];
+			}
+			this.ondeactivate();
+		},
+		_onMapClickHandler: function(evt) {},
+		_onMapMouseDownHandler: function(evt) {},
+		_onMapMouseUpHandler: function(evt) {},
+		_onMapMouseMoveHandler: function(evt) {},
+		_onMapDoubleClickHandler: function(evt) {},
+		_setNormalClassAttr: function(normalClass) {
+			this._normalClass = normalClass;
+		},
+		_getNormalClassAttr: function() {
+			return this._normalClass;
+		},
+		_setOverClassAttr: function(overClass) {
+			this._overClass = overClass;
+		},
+		_getOverClassAttr: function() {
+			return this._overClass;
+		},
+		_setSelectedClassAttr: function(selectedClass) {
+			this._selectedClass = _selectedClass;
+		},
+		_getSelectedClassAttr: function() {
+			return this._selectedClass;
+		},
+		_setDisableClassAttr: function(disableClass) {
+			this._disableClass = disableClass;
+		},
+		_getDisableClassAttr: function() {
+			return this._disableClass;
+		},
+		_getStatusAttr: function() {
+			return this._status;
+		},
+		_setStatusAttr: function(status) {
+			this._status = status;
+		},
+		_setLabelAttr: function(label) {
+			if (label !== undefined && label != "") {
+				domStyle.set(this.toollabel, "display", "inline-block");
+				this._label = label;
+			} else {
+				domStyle.set(this.toollabel, "display", "none");
+				this._label = "";
+			}
+			this.toollabel.innerHTML = this._label;
+		},
+		getLabelAttr: function() {
+			return this.label;
+		}
+	});
+
+	/**
+	 * 用户激活工具
+	 */
+	RL.ACTIVATE_EVENT = "onactivate";
+
+	/**
+	 * 用户用鼠标点击工具后的释放
+	 **/
+	RL.DEACTIVATE_EVEN = "ondeactivate";
+
+	/**
+	 * 工具自动释放事件。有的工具激活后只能使用一次就必须释放,比如测量、标注等
+	 **/
+	RL.SELFDEACTIVATE_EVENT = "selfDeactivate";
+
+	return RL;
+});
\ No newline at end of file

--
Gitblit v1.9.3