1 /** 2 * @ignore 3 */ 4 var Ozone = Ozone ? Ozone : {}; 5 6 /** 7 * @ignore 8 * @namespace 9 */ 10 Ozone.state = Ozone.state ? Ozone.state : {}; 11 12 /** 13 * @deprecated Since OWF 3.7.0 You should use <a href="#.getInstance">Ozone.state.WidgetStateHandler.getInstance</a> 14 * @constructor WidgetStateHandler - Handles eventing from OWF widget to OWF container 15 * @param {Ozone.eventing.Widget} widgetEventingController - widget eventing object which handles eventing for the widget 16 * @description This object is used handle widget requests. To do so it requires a widgetEventingController 17 * 18 */ 19 Ozone.state.WidgetStateHandler = function(widgetEventingController) { 20 if (Ozone.state.WidgetStateHandler.instance == null) { 21 this.stateChannelName = "_WIDGET_STATE_CHANNEL_"; 22 this.widgetEventingController = widgetEventingController || Ozone.eventing.Widget.instance; 23 this.widgetIdJSON = Ozone.util.parseJson(this.widgetEventingController.getWidgetId()); 24 this.version = Ozone.version.owfversion + Ozone.version.widgetStateHandler 25 26 Ozone.state.WidgetStateHandler.instance = this; 27 } 28 29 return Ozone.state.WidgetStateHandler.instance; 30 }; 31 32 Ozone.state.WidgetStateHandler.prototype = { 33 34 /** 35 * @description handles a widget state request based on the config 36 * @param {Object} config object see example for structure 37 * @param {Function} callback a function to be called once after the stateWidget is executed 38 * 39 * @example 40 * 41 * //Example for closing a widget 42 * var widgetEventingController = new Ozone.eventing.Widget(Ozone.util.contextPath() + '/js/eventing/rpc_relay.uncompressed.html'); 43 * var widgetStateHandler = new Ozone.state.WidgetStateHandler(this.widgetEventingController); 44 * widgetStateHandler.handleStateRequest({ 45 * fn: 'closeWidget', 46 * params: { 47 * guid: <widgetGuid> 48 * } 49 * }); 50 * 51 */ 52 handleWidgetRequest: function(config, callback) { 53 54 //send state request to a widget 55 var stateChannel = this.stateChannelName + this.widgetIdJSON.id; 56 gadgets.rpc.call('..', stateChannel, callback, this.widgetIdJSON, config); 57 } 58 }; 59 60 /** 61 * @description Retrieves Ozone.eventing.Widget Singleton instance. 62 * This object is used handle widget requests. To do so it requires a widgetEventingController 63 * @param {Ozone.eventing.Widget} widgetEventingController - widget eventing object which handles eventing for the widget 64 * @example 65 * this.widgetStateHandler = Ozone.state.WidgetStateHandler.getInstance(this.widgetEventingController); 66 */ 67 Ozone.state.WidgetStateHandler.getInstance = function(widgetEventingController) { 68 if (Ozone.state.WidgetStateHandler.instance == null) { 69 Ozone.state.WidgetStateHandler.instance = new Ozone.state.WidgetStateHandler(widgetEventingController); 70 } 71 return Ozone.state.WidgetStateHandler.instance; 72 }; 73