Mercurial > pub > ImplabJs
view src/djol/_OneshotTool.js @ 10:8705103f074f
Слияние
author | cin |
---|---|
date | Mon, 21 Aug 2017 18:03:00 +0300 |
parents | f0035923ff3e |
children | 9c21e656cbec |
line wrap: on
line source
define([ "dojo/_base/declare", "implab/safe", "implab/guard", "ol3/_ToolBase", "ol3/ToolType" ], function(declare, safe, guard, _ToolBase, ToolType) { return declare([ _ToolBase ], { _pending : null, _lastResult : null, toolType : ToolType.Oneshot, invoke : function() { }, onActivating : function() { var me = this; // start the operation me._lastResult = me._pending = guard(me,"invoke"); return this.inherited(arguments); }, onActivated : function() { var me = this; // fire the activate event this.inherited(arguments); me._pending.then(function() { if (me._pending) { me.log("Operation finished, deactivating."); me._pending = null; me.deactivate(); } }, function(ex) { if (me._pending) { me.error("Operation failed, deactivating: {0}", ex); me._pending = null; me.deactivate(); } }); }, onDeactivated : function() { var d = this._pending; if (d) { this.log("Cancelling pending operation"); this._pending = null; d.cancel(); } return this.inherited(arguments); }, run : function() { var me = this; return me.activate().then(function(success) { if (success) return me._lastResult; throw new Error("Operation declined"); }); } }); });