comparison src/djol/_OneshotTool.js @ 10:8705103f074f

Слияние
author cin
date Mon, 21 Aug 2017 18:03:00 +0300
parents f0035923ff3e
children 9c21e656cbec
comparison
equal deleted inserted replaced
9:37e9e6bbe87a 10:8705103f074f
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(success) {
59 if (success)
60 return me._lastResult;
61 throw new Error("Operation declined");
62 });
63 }
64 });
65 });