comparison src/djol/_OneshotTool.js @ 34:27e8e9e38e07 default tip

Слияние
author nickolay
date Wed, 05 Jun 2019 20:44:15 +0300
parents 8af8e840dd49 1dc2fd263b90
children
comparison
equal deleted inserted replaced
33:8af8e840dd49 34:27e8e9e38e07
1 define(["dojo/_base/declare", "implab/safe", "implab/guard", "ol3/_ToolBase", "ol3/ToolType"],
2
3 function (declare, safe, guard, _ToolBase, ToolType) {
4 return declare([_ToolBase], {
5 _pending: null,
6
7 _lastResult: null,
8
9 toolType: ToolType.Oneshot,
10
11 invoke: function () {
12 },
13
14 onActivating: function () {
15 var me = this;
16
17 // start the operation
18 me._lastResult = me._pending = guard(me, "invoke");
19
20 return this.inherited(arguments);
21 },
22
23 onActivated: function () {
24 var me = this;
25
26 // fire the activate event
27 this.inherited(arguments);
28
29 me._pending.then(function () {
30 if (me._pending) {
31 me.log("Operation finished, deactivating.");
32 me._pending = null;
33 me.deactivate();
34 }
35 }, function (ex) {
36 if (me._pending) {
37 me.error("Operation failed, deactivating: {0}", ex);
38 me._pending = null;
39 me.deactivate();
40 }
41 });
42 },
43
44 onDeactivated: function () {
45 var d = this._pending;
46 if (d) {
47 this.log("Cancelling pending operation");
48 this._pending = null;
49 d.cancel();
50 }
51
52 return this.inherited(arguments);
53 },
54
55 run: function () {
56 var me = this;
57
58 return me.activate().then(function () {
59 return me._lastResult;
60 });
61 }
62 });
63 });