public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { if (value != null && value is ComponentDirectEvent) { ComponentDirectEvent directEvent = (ComponentDirectEvent)value; if (!directEvent.IsDefault) { Control owner = null; if (this.Owner is StateManagedItem) { owner = ((StateManagedItem)this.Owner).Owner; } else if (this.Owner is Control) { owner = (Control)this.Owner; } directEvent.Owner = owner; directEvent.ExtraParams.Owner = owner; foreach (Parameter param in directEvent.ExtraParams) { param.Owner = owner; } string configObject = new ClientConfig().SerializeInternal(directEvent, directEvent.Owner); StringBuilder cfgObj = new StringBuilder(configObject.Length + 64); cfgObj.Append(configObject); cfgObj.Remove(cfgObj.Length - 1, 1); cfgObj.AppendFormat("{0}control:this", configObject.Length > 2 ? "," : ""); if (this.PropertyName != "Click") { cfgObj.AppendFormat(",action:'{0}'", this.PropertyName); } cfgObj.Append("}"); directEvent.SetArgumentList(this.Owner.GetType().GetProperty(this.PropertyName)); JFunction jFunction = new JFunction("var params=arguments;Ext.net.DirectEvent.confirmRequest(".ConcatWith(cfgObj.ToString(), ");"), directEvent.ArgumentList.ToArray()); HandlerConfig cfg = directEvent.GetListenerConfig(); string scope = directEvent.Scope.IsEmpty() || directEvent.Scope == "this" ? "" : directEvent.Scope; StringBuilder sb = new StringBuilder(); sb.Append("{"); sb.Append("fn:").Append(jFunction.ToScript()).Append(","); if (scope.Length > 0) { sb.Append("scope:").Append(scope).Append(","); } string cfgStr = cfg.ToJsonString(); if (cfgStr != "{}") { sb.Append(cfgStr.Chop()); } if (sb[sb.Length - 1] == ',') { sb.Remove(sb.Length - 1, 1); } sb.Append("}"); writer.WriteRawValue(sb.ToString()); return; } } writer.WriteRawValue("{}"); }
public virtual void NodeOn(string nodeId, string eventName, JFunction fn, string scope, HandlerConfig options) { this.CallNode("on", nodeId, eventName, new JRawValue(TokenUtils.ParseAndNormalize(fn.ToScript(), this)), new JRawValue(scope), new JRawValue(options.ToJsonString())); }
public virtual void AddListener(string eventName, string fn, string scope, HandlerConfig options) { fn = TokenUtils.ParseAndNormalize(fn, this).Trim('"'); this.Call("on", eventName, new JRawValue(fn), new JRawValue(scope), new JRawValue(options.ToJsonString())); }
public virtual void AddListener(string eventName, string fn, string scope, HandlerConfig options) { fn = TokenUtils.ParseAndNormalize(fn, this).Trim('"'); this.Call("on", eventName, new JRawValue(fn), new JRawValue(scope), new JRawValue(options.ToJsonString())); }
public virtual void Mon(Observable el, string eventName, string fn, string scope, HandlerConfig options) { this.Call("mon", new JRawValue(el.ClientID), eventName, fn, new JRawValue(scope), new JRawValue(options.ToJsonString())); }
public virtual void Mon(Element el, string eventName, string fn, string scope, HandlerConfig options) { this.Call("mon", new JRawValue(el.Descriptor), eventName, fn, new JRawValue(scope), new JRawValue(options.ToJsonString())); }
protected override void OnBeforeClientInit(Observable sender) { if (this.StoreID.IsNotEmpty() && this.Store.Primary != null) { throw new Exception(string.Format("Please do not set both the StoreID property on {0} and <Store> inner property at the same time.", this.ID)); } if (this.AutoPostBack) { EventHandler handler = (EventHandler)Events[EventSelectionChanged]; if (handler != null) { this.On("change", new JFunction(this.PostBackFunction)); } } if (this.StoreID.IsNotEmpty() || this.Store.Primary != null) { Store store = this.Store.Primary ?? ControlUtils.FindControl <Store>(this, this.StoreID, true); if (store == null && !this.IsDynamic) { throw new InvalidOperationException("The Control '{0}' could not find the StoreID of '{1}'.".FormatWith(this.ID, this.StoreID)); } if (this.SelectedItems.Count > 0) { HandlerConfig options = new HandlerConfig(); options.Single = true; string template = "{0}.store.on(\"{1}\",{2},{3},{4});"; string values = this.SelectedItems.ValuesToJsonArray(); string indexes = this.SelectedItems.IndexesToJsonArray(true); string suppressEvent = this.FireSelectOnLoad ? "false" : "true"; values = values != "[]" ? ".setValue(".ConcatWith(values, ", true, ", suppressEvent, ");") : ""; indexes = indexes != "[]" ? ".setValueByIndex(".ConcatWith(indexes, ", true, ", suppressEvent, ");") : ""; this.AddScript(template, this.ClientID, "load", new JFunction(this.ClientID.ConcatWith(values, indexes, this.ClientID, ".clearInvalid();")).ToScript(), "this", options.ToJsonString() ); } } else { if (this.SelectedItems.Count > 0) { string values = this.SelectedItems.ValuesToJsonArray(); string indexes = this.SelectedItems.IndexesToJsonArray(true); string suppressEvent = this.FireSelectOnLoad ? "false" : "true"; if (values != "[]") { this.Call("setValue", new JRawValue(values), true, suppressEvent); } if (indexes != "[]") { this.Call("setValue", new JRawValue(indexes), true, suppressEvent); } } } }