예제 #1
0
        private void AddEventHandlers(object userForm, string formType)
        {
            var handlerMethods = ClassHelper.FindAnnotatedMethods <ItemEventHandlerAttribute>(userForm);

            foreach (var method in handlerMethods)
            {
                var attribute = method.GetAttribute <ItemEventHandlerAttribute>();
                var signature = ItemEventSignature.Create(method);

                if (attribute.BeforeAction)
                {
                    var action = BeforeAction <ItemEvent> .CreateNew(signature, method, userForm);

                    handlers.AddBefore(action);
                }
                else
                {
                    var action = AfterAction <ItemEvent> .CreateNew(signature, method, userForm);

                    handlers.AddAfter(action);
                }

                HandlerAdded(this, new HandlerAddedEventArgs(attribute.EventType, formType));
            }
        }
예제 #2
0
        private void AddEventHandlers(IMainMenuInstance mainMenu)
        {
            var handlerMethods = ClassHelper.FindAnnotatedMethods <MenuEventHandlerAttribute>(mainMenu);

            foreach (var method in handlerMethods)
            {
                var attribute = method.GetAttribute <MenuEventHandlerAttribute>();
                try
                {
                    if (attribute.Before)
                    {
                        before.Add(attribute.MenuId, method.CreateBeforeEventDelegate <MenuEvent>(mainMenu));
                    }
                    else
                    {
                        after.Add(attribute.MenuId, method.CreateAfterEventDelegate <MenuEvent>(mainMenu));
                    }
                }
                catch (ArgumentException e)
                {
                    var exception =
                        new EventHandlerAlreadyExistsException(
                            $"A menu event handler for {attribute.MenuId} already exists. Duplicate method {method.Name}.",
                            e);
                    throw exception;
                }


                HandlerAdded(this, new HandlerAddedEventArgs(BoEventTypes.et_MENU_CLICK, @"ALL_FORMS"));
            }
        }
예제 #3
0
        private void AddEventHandlers(IMainMenuInstance mainMenu)
        {
            var handlerMethods = ClassHelper.FindAnnotatedMethods <MenuEventHandlerAttribute>(mainMenu);

            foreach (var method in handlerMethods)
            {
                AddEventHandler(mainMenu, method);
            }
        }
예제 #4
0
        private void AddEventHandlers(IFormInstance userForm)
        {
            var handlerMethods = ClassHelper.FindAnnotatedMethods <RightClickEventHandlerAttribute>(userForm);

            foreach (var method in handlerMethods)
            {
                var attribute = method.GetAttribute <RightClickEventHandlerAttribute>();
                if (attribute.Before)
                {
                    before.Add(attribute.ItemId, method.CreateBeforeEventDelegate <ContextMenuInfo>(userForm));
                }
                else
                {
                    after.Add(attribute.ItemId, method.CreateAfterEventDelegate <ContextMenuInfo>(userForm));
                }

                HandlerAdded(this, new HandlerAddedEventArgs(BoEventTypes.et_RIGHT_CLICK, userForm.FormType));
            }
        }
예제 #5
0
        private void AddEventHandlers(IFormInstance userForm)
        {
            var handlerMethods = ClassHelper.FindAnnotatedMethods <LayoutKeyEventHandlerAttribute>(userForm);

            foreach (var method in handlerMethods)
            {
                var attribute = method.GetAttribute <LayoutKeyEventHandlerAttribute>();
                if (attribute.Before)
                {
                    before.Add(attribute, method.CreateBeforeEventDelegate <LayoutKeyInfo>(userForm));
                }
                else
                {
                    after.Add(attribute, method.CreateAfterEventDelegate <LayoutKeyInfo>(userForm));
                }

                HandlerAdded(this, new HandlerAddedEventArgs(BoEventTypes.et_PRINT_LAYOUT_KEY, userForm.FormType));
            }
        }
예제 #6
0
        private void AddEventHandlers(IFormInstance userForm)
        {
            var handlerMethods = ClassHelper.FindAnnotatedMethods <FormDataEventHandlerAttribute>(userForm);

            foreach (var method in handlerMethods)
            {
                var attribute = method.GetAttribute <FormDataEventHandlerAttribute>();

                if (attribute.Before)
                {
                    before.Add(attribute, method.CreateBeforeEventDelegate <BusinessObjectInfo>(userForm));
                }
                else
                {
                    after.Add(attribute, method.CreateAfterEventDelegate <BusinessObjectInfo>(userForm));
                }

                HandlerAdded(this, new HandlerAddedEventArgs(attribute.EventType, userForm.FormType));
            }
        }