private static bool register(Dictionary <KET, List <KBEventlistener> > events, KET eventType, object obj, KBEventDelegate funcDelegate) { deregister(events, eventType, obj, funcDelegate); List <KBEventlistener> lst = null; KBEventlistener listener = new KBEventlistener(); listener.obj = obj; listener.eventType = eventType; listener.funcDelegate = funcDelegate; if (listener.funcDelegate == null) { Dbg.ERROR_MSG("Event::register: " + obj + "not found method[" + funcDelegate + "]"); return(false); } monitor_Enter(events); if (!events.TryGetValue(eventType, out lst)) { lst = new List <KBEventlistener>(); lst.Add(listener); events.Add(eventType, lst); monitor_Exit(events); return(true); } lst.Add(listener); monitor_Exit(events); return(true); }
private static bool deregister(Dictionary <KET, List <KBEventlistener> > events, KET eventType, object obj, KBEventDelegate funcDelegate) { monitor_Enter(events); List <KBEventlistener> lst = null; if (!events.TryGetValue(eventType, out lst)) { monitor_Exit(events); return(false); } for (int i = 0; i < lst.Count; i++) { if (obj == lst[i].obj && lst[i].funcDelegate == funcDelegate) { lst.RemoveAt(i); monitor_Exit(events); return(true); } } monitor_Exit(events); return(false); }
protected void save_Click(object sender, EventArgs e) { try { if (FORWARD.SelectedValue.Equals("")) { var page11 = HttpContext.Current.CurrentHandler as Page; ScriptManager.RegisterStartupScript(page11, page11.GetType(), "alert", "alert('Pilih item pada Forward');", true); FORWARD.Focus(); } else if (KET.Value.ToString().Equals("")) { var page11 = HttpContext.Current.CurrentHandler as Page; ScriptManager.RegisterStartupScript(page11, page11.GetType(), "alert", "alert('Harap isi keterangan');", true); KET.Focus(); } else { int a = 0; foreach (GridViewRow row in DataList.Rows) { CheckBox cb = (CheckBox)row.FindControl("chkCheck"); if (cb.Checked == true) { if (cb != null) { NameValueCollection nameValueCollectionKey = new NameValueCollection(); NameValueCollection nameValueCollection = new NameValueCollection(); StaticFramework.SaveNvc(nameValueCollectionKey, "AP_REGINPUT", row.Cells[2].Text.ToString()); StaticFramework.SaveNvc(nameValueCollection, "USERFORWARD", FORWARD); StaticFramework.SaveNvc(nameValueCollection, "KETERANGAN", KET); StaticFramework.SaveNvc(nameValueCollection, "DATECREATED", DateTime.Now); StaticFramework.SaveNvc(nameValueCollection, "USERCREATED", Session["Userid"].ToString()); StaticFramework.Save(nameValueCollection, nameValueCollectionKey, "DATA_FORWARD", this.conn); } a++; } } if (a > 0) { var page11 = HttpContext.Current.CurrentHandler as Page; ScriptManager.RegisterStartupScript(page11, page11.GetType(), "alert", "alert('Berhasil Forward');", true); Bind_DataList(); f_forward.Visible = false; f_keterangan.Visible = false; f_save.Visible = false; FORWARD.ClearSelection(); KET.Value = ""; } else { var page11 = HttpContext.Current.CurrentHandler as Page; ScriptManager.RegisterStartupScript(page11, page11.GetType(), "alert", "alert('Pilih data untuk Forward');", true); } } } catch (Exception) { var page11 = HttpContext.Current.CurrentHandler as Page; ScriptManager.RegisterStartupScript(page11, page11.GetType(), "alert", "alert('Gagal Forward');", true); } }
private static void fire_(Dictionary <KET, List <KBEventlistener> > events, LinkedList <EventObj> firedEvents, KET eventType, IKBEvent eventData) { monitor_Enter(events); List <KBEventlistener> lst = null; if (!events.TryGetValue(eventType, out lst)) { if (events == events_in) { Dbg.WARNING_MSG("Event::fireIn: event(" + eventType + ") not found!"); } else { Dbg.WARNING_MSG("Event::fireOut: event(" + eventType + ") not found!"); } monitor_Exit(events); return; } for (int i = 0; i < lst.Count; i++) { EventObj eobj = new EventObj(); eobj.listener = lst[i]; eobj.eventData = eventData; firedEvents.AddLast(eobj); } monitor_Exit(events); }
/* * 触发kbe插件和渲染表现层都能够收到的事件 */ public static void fireAll(KET eventType, IKBEvent eventData) { fire_(events_in, firedEvents_in, eventType, eventData); fire_(events_out, firedEvents_out, eventType, eventData); }
/* * 渲染表现层抛出事件(in = render->kbe) * 通常由kbe插件层来注册, 例如:UI层点击登录, 此时需要触发一个事件给kbe插件层进行与服务端交互的处理。 */ public static void fireIn(KET eventType, IKBEvent eventData) { fire_(events_in, firedEvents_in, eventType, eventData); }
/* * kbe插件触发事件(out = kbe->render) * 通常由渲染表现层来注册, 例如:监听角色血量属性的变化, 如果UI层注册这个事件, * 事件触发后就可以根据事件所附带的当前血量值来改变角色头顶的血条值。 */ public static void fireOut(KET eventType, IKBEvent eventData) { fire_(events_out, firedEvents_out, eventType, eventData); }
public static bool deregisterIn(KET eventType, object obj, KBEventDelegate funcDelegate) { return(deregister(events_in, eventType, obj, funcDelegate)); }
/* * 注册监听由kbe插件抛出的事件。(out = kbe->render) * 通常由渲染表现层来注册, 例如:监听角色血量属性的变化, 如果UI层注册这个事件, * 事件触发后就可以根据事件所附带的当前血量值来改变角色头顶的血条值。 */ public static bool registerOut(KET eventType, object obj, KBEventDelegate funcDelegate) { return(register(events_out, eventType, obj, funcDelegate)); }