internal static void InvokeCancelEventHandlers(CancellableNodeEventHandler handler, object sender, CancellableNodeEventArgs e) { if (handler == null) { return; } Exception firstException = null; Delegate[] list = (Delegate[])handler.GetInvocationList().Clone(); bool cancel = false; foreach (CancellableNodeEventHandler del in list) { try { del(sender, e); cancel = cancel | e.Cancel; e.Cancel = cancel; } catch (Exception ex) //TODO: catch block { //LogException(source, ex); if (firstException == null) { firstException = ex; } } } if (firstException != null) { throw firstException; } }
internal static void FireOnPermissionChanging(CancellableNodeEventHandler Deleting, Node sender, CancellableNodeEventArgs e, List <Type> disabledObservers) { InvokeCancelEventHandlers(Deleting, sender, e); var observers = NodeTypeManager.Current.NodeObservers; if (observers == null) { return; } if (disabledObservers == null) { foreach (NodeObserver observer in observers) { observer.OnPermissionChanging(sender, e); } } else { foreach (NodeObserver observer in observers) { if (!disabledObservers.Contains(observer.GetType())) { observer.OnPermissionChanging(sender, e); } } } }
internal static void FireOnNodeDeletingPhysically(CancellableNodeEventHandler DeletingPhysically, Node sender, CancellableNodeEventArgs e, List <Type> disabledObservers) { InvokeCancelEventHandlers(DeletingPhysically, sender, e); var observers = Providers.Instance.NodeObservers; if (observers == null) { return; } if (disabledObservers == null) { foreach (NodeObserver observer in observers) { observer.OnNodeDeletingPhysically(sender, e); } } else { foreach (NodeObserver observer in observers) { if (!disabledObservers.Contains(observer.GetType())) { observer.OnNodeDeletingPhysically(sender, e); } } } }
internal static void FireOnPermissionChanging(CancellableNodeEventHandler PermissionChanging, Node sender, CancellablePermissionChangingEventArgs e, List <Type> disabledObservers) { InvokeCancelEventHandlers(PermissionChanging, sender, e); FireNodeEvent(disabledObservers, observer => { observer.OnPermissionChanging(sender, e); }); }
internal static void FireOnNodeDeletingPhysically(CancellableNodeEventHandler DeletingPhysically, Node sender, CancellableNodeEventArgs e, List <Type> disabledObservers) { InvokeCancelEventHandlers(DeletingPhysically, sender, e); FireNodeEvent(disabledObservers, observer => { observer.OnNodeDeletingPhysically(sender, e); }); }
internal static void FireOnNodeModifying(CancellableNodeEventHandler Modifying, Node sender, CancellableNodeEventArgs e, List <Type> disabledObservers) { InvokeCancelEventHandlers(Modifying, sender, e); FireNodeEvent(disabledObservers, observer => { observer.OnNodeModifying(sender, e); }); }
public static void FireOnNodeRestoring(CancellableNodeEventHandler Restoring, Node sender, CancellableNodeEventArgs e, List <Type> disabledObservers) { InvokeCancelEventHandlers(Restoring, sender, e); FireNodeEvent(disabledObservers, observer => { observer.OnNodeRestoring(sender, e); }); }