public static ToolBarButton NewToolbarButton(IEntityOperationContext eoc)
        {
            var man = OperationClient.Manager;

            ToolBarButton button = new ToolBarButton
            {
                Content = man.GetText(eoc.OperationInfo.OperationSymbol, eoc.OperationSettings),
                Image = man.GetImage(eoc.OperationInfo.OperationSymbol, eoc.OperationSettings),
                Tag = eoc.OperationInfo,
                Background = man.GetBackground(eoc.OperationInfo, eoc.OperationSettings)
            };

            if (eoc.OperationSettings != null && eoc.OperationSettings.Order != 0)
                Common.SetOrder(button, eoc.OperationSettings.Order);

            AutomationProperties.SetName(button, eoc.OperationInfo.OperationSymbol.Key);

            eoc.SenderButton = button;

            if (eoc.CanExecute != null)
            {
                button.ToolTip = eoc.CanExecute;
                button.IsEnabled = false;
                ToolTipService.SetShowOnDisabled(button, true);
                AutomationProperties.SetHelpText(button, eoc.CanExecute);
            }
            else
            {
                button.Click += (_, __) => OperationExecute(eoc);
            }
            return button;
        }
        internal static MenuItem NewMenuItem(IEntityOperationContext eoc, EntityOperationGroup group)
        {
            var man = OperationClient.Manager;

            MenuItem menuItem = new MenuItem
            {
                Header = eoc.OperationSettings?.Text ?? 
                (group == null || group.SimplifyName == null ? eoc.OperationInfo.OperationSymbol.NiceToString() :
                 group.SimplifyName(eoc.OperationInfo.OperationSymbol.NiceToString())),
                Icon = man.GetImage(eoc.OperationInfo.OperationSymbol, eoc.OperationSettings).ToSmallImage(),
                Tag = eoc.OperationInfo,
                Background = man.GetBackground(eoc.OperationInfo, eoc.OperationSettings)
            };

            if (eoc.OperationSettings != null && eoc.OperationSettings.Order != 0)
                Common.SetOrder(menuItem, eoc.OperationSettings.Order);

            AutomationProperties.SetName(menuItem, eoc.OperationInfo.OperationSymbol.Key);

            eoc.SenderButton = menuItem;

            if (eoc.CanExecute != null)
            {
                menuItem.ToolTip = eoc.CanExecute;
                menuItem.IsEnabled = false;
                ToolTipService.SetShowOnDisabled(menuItem, true);
                AutomationProperties.SetHelpText(menuItem, eoc.CanExecute);
            }
            else
            {
                menuItem.Click += (_, __) => OperationExecute(eoc);
            }
            return menuItem;
        }
        public static bool MoveToSearchControls(IEntityOperationContext eoc)
        {
            var controls = eoc.EntityControl.Children<SearchControl>()
                .Where(sc => eoc.OperationInfo.OperationSymbol.Equals(OperationClient.GetConstructFromOperationKey(sc)) ||
                sc.NotSet(OperationClient.ConstructFromOperationKeyProperty) && sc.EntityType == eoc.OperationInfo.ReturnType).ToList();

            if (!controls.Any())
                return false;

            foreach (var sc in controls)
            {
                if (sc.NotSet(OperationClient.ConstructFromOperationKeyProperty))
                    OperationClient.SetConstructFromOperationKey(sc, eoc.OperationInfo.OperationSymbol);

                sc.Create = false;

                var menu = sc.Child<Menu>(b => b.Name == "menu");

                var panel = (StackPanel)menu.Parent;

                var oldButton = panel.Children<ToolBarButton>(tb => tb.Tag is OperationInfo && ((OperationInfo)tb.Tag).OperationSymbol.Equals(eoc.OperationInfo.OperationSymbol)).FirstOrDefault();
                if (oldButton != null)
                    panel.Children.Remove(oldButton);

                var index = panel.Children.IndexOf(menu);
                panel.Children.Insert(index, NewToolbarButton(eoc));
            }
            return true;
        }
Exemplo n.º 4
0
        internal static MenuItem NewMenuItem(IEntityOperationContext eoc, EntityOperationGroup group)
        {
            var man = OperationClient.Manager;

            MenuItem menuItem = new MenuItem
            {
                Header = eoc.OperationSettings?.Text ??
                         (group == null || group.SimplifyName == null ? eoc.OperationInfo.OperationSymbol.NiceToString() :
                          group.SimplifyName(eoc.OperationInfo.OperationSymbol.NiceToString())),
                Icon       = man.GetImage(eoc.OperationInfo.OperationSymbol, eoc.OperationSettings).ToSmallImage(),
                Tag        = eoc.OperationInfo,
                Background = man.GetBackground(eoc.OperationInfo, eoc.OperationSettings)
            };

            if (eoc.OperationSettings != null && eoc.OperationSettings.Order != 0)
            {
                Common.SetOrder(menuItem, eoc.OperationSettings.Order);
            }

            AutomationProperties.SetName(menuItem, eoc.OperationInfo.OperationSymbol.Key);

            eoc.SenderButton = menuItem;

            if (eoc.CanExecute != null)
            {
                menuItem.ToolTip   = eoc.CanExecute;
                menuItem.IsEnabled = false;
                ToolTipService.SetShowOnDisabled(menuItem, true);
                AutomationProperties.SetHelpText(menuItem, eoc.CanExecute);
            }
            else
            {
                menuItem.Click += (_, __) => OperationExecute(eoc);
            }
            return(menuItem);
        }
Exemplo n.º 5
0
        protected internal virtual ToolBarButton CreateToolBarButton(IEntityOperationContext ctx, EntityOperationGroup group)
        {
            var result = new ToolBarButton(ctx.Context.Prefix, ctx.OperationInfo.OperationSymbol.Key.Replace(".", "_"))
            {
                Style = ctx.OperationSettings?.Style ?? EntityOperationSettingsBase.AutoStyleFunction(ctx.OperationInfo),

                Tooltip = ctx.CanExecute,
                Enabled = ctx.CanExecute == null,
                Order   = ctx.OperationSettings != null ? ctx.OperationSettings.Order : 0,

                Text      = ctx.OperationSettings?.Text ?? (group == null || group.SimplifyName == null ? ctx.OperationInfo.OperationSymbol.NiceToString() : group.SimplifyName(ctx.OperationInfo.OperationSymbol.NiceToString())),
                OnClick   = ((ctx.OperationSettings != null && ctx.OperationSettings.HasClick) ? ctx.OperationSettings.OnClick(ctx) ?? DefaultClick(ctx) : DefaultClick(ctx)),
                HtmlProps = { { "data-operation", ctx.OperationInfo.OperationSymbol.Key } },

                Tag = ctx,
            };

            if (CustomizeToolBarButton != null)
            {
                return(CustomizeToolBarButton(result));
            }

            return(result);
        }
Exemplo n.º 6
0
        static void OperationExecute(IEntityOperationContext eoc)
        {
            if (eoc.CanExecute != null)
            {
                throw new ApplicationException("Operation {0} is disabled: {1}".FormatWith(eoc.OperationInfo.OperationSymbol, eoc.CanExecute));
            }

            if (eoc.OperationSettings != null && eoc.OperationSettings.HasClick)
            {
                IEntity newIdent = eoc.OperationSettings.OnClick(eoc);
                if (newIdent != null)
                {
                    eoc.EntityControl.RaiseEvent(new ChangeDataContextEventArgs(newIdent));
                }
            }
            else
            {
                Entity ident = (Entity)(IEntity)eoc.Entity;
                if (eoc.OperationInfo.OperationType == OperationType.Execute)
                {
                    if (eoc.OperationInfo.Lite.Value)
                    {
                        if (eoc.EntityControl.LooseChangesIfAny())
                        {
                            if (eoc.ConfirmMessage())
                            {
                                Lite <Entity> lite     = ident.ToLite();
                                IEntity       newIdent = Server.Return((IOperationServer s) => s.ExecuteOperationLite(lite, eoc.OperationInfo.OperationSymbol, null));
                                if (eoc.OperationInfo.Returns)
                                {
                                    eoc.EntityControl.RaiseEvent(new ChangeDataContextEventArgs(newIdent));
                                }
                            }
                        }
                    }
                    else
                    {
                        if (eoc.ConfirmMessage())
                        {
                            try
                            {
                                IEntity newIdent = Server.Return((IOperationServer s) => s.ExecuteOperation(ident, eoc.OperationInfo.OperationSymbol, null));
                                if (eoc.OperationInfo.Returns)
                                {
                                    eoc.EntityControl.RaiseEvent(new ChangeDataContextEventArgs(newIdent));
                                }
                            }
                            catch (IntegrityCheckException e)
                            {
                                GraphExplorer.SetValidationErrors(GraphExplorer.FromRoot(ident), e);
                                throw e;
                            }
                        }
                    }
                }
                else if (eoc.OperationInfo.OperationType == OperationType.ConstructorFrom)
                {
                    if (eoc.OperationInfo.Lite.Value && !eoc.EntityControl.LooseChangesIfAny())
                    {
                        return;
                    }

                    if (!eoc.ConfirmMessage())
                    {
                        return;
                    }

                    IEntity result = (Entity) new ConstructorContext(eoc.EntityControl, eoc.OperationInfo).SurroundConstructUntyped(eoc.OperationInfo.ReturnType, ctx =>
                    {
                        Entity r;

                        if (eoc.OperationInfo.Lite.Value)
                        {
                            r = Server.Return((IOperationServer s) => s.ConstructFromLite(ident.ToLite(), eoc.OperationInfo.OperationSymbol, null));
                        }
                        else
                        {
                            try
                            {
                                r = Server.Return((IOperationServer s) => s.ConstructFrom(ident, eoc.OperationInfo.OperationSymbol, null));
                            }
                            catch (IntegrityCheckException e)
                            {
                                GraphExplorer.SetValidationErrors(GraphExplorer.FromRoot(ident), e);
                                throw e;
                            }
                        }

                        if (r == null)
                        {
                            MessageBox.Show(Window.GetWindow(eoc.EntityControl), OperationMessage.TheOperation0DidNotReturnAnEntity.NiceToString().FormatWith(eoc.OperationInfo.OperationSymbol.NiceToString()));
                        }

                        return(r);
                    });

                    if (result != null)
                    {
                        Navigator.Navigate(result);
                    }
                }
                else if (eoc.OperationInfo.OperationType == OperationType.Delete)
                {
                    if (eoc.ConfirmMessage())
                    {
                        Lite <Entity> lite = ident.ToLite();
                        Server.Execute((IOperationServer s) => s.DeleteLite(lite, eoc.OperationInfo.OperationSymbol, null));
                        Window.GetWindow(eoc.EntityControl).Close();
                    }
                }
            }
        }
Exemplo n.º 7
0
 public override bool OnIsVisible(IEntityOperationContext ctx)
 {
     return(this.IsVisible((EntityOperationContext <T>)ctx));
 }
Exemplo n.º 8
0
 public override Entity OnClick(IEntityOperationContext ctx)
 {
     return((Entity)(IEntity)this.Click((EntityOperationContext <T>)ctx));
 }
Exemplo n.º 9
0
 public abstract bool OnIsVisible(IEntityOperationContext ctx);
Exemplo n.º 10
0
 public abstract Entity OnClick(IEntityOperationContext ctx);
        static void OperationExecute(IEntityOperationContext eoc)
        {
            if (eoc.CanExecute != null)
                throw new ApplicationException("Operation {0} is disabled: {1}".FormatWith(eoc.OperationInfo.OperationSymbol, eoc.CanExecute));

            if (eoc.OperationSettings != null && eoc.OperationSettings.HasClick)
            {
                IEntity newIdent = eoc.OperationSettings.OnClick(eoc);
                if (newIdent != null)
                    eoc.EntityControl.RaiseEvent(new ChangeDataContextEventArgs(newIdent));
            }
            else
            {
                Entity ident = (Entity)(IEntity)eoc.Entity;
                if (eoc.OperationInfo.OperationType == OperationType.Execute)
                {
                    if (eoc.OperationInfo.Lite.Value)
                    {
                        if (eoc.EntityControl.LooseChangesIfAny())
                        {
                            if (eoc.ConfirmMessage())
                            {
                                Lite<Entity> lite = ident.ToLite();
                                IEntity newIdent = Server.Return((IOperationServer s) => s.ExecuteOperationLite(lite, eoc.OperationInfo.OperationSymbol, null));
                                if (eoc.OperationInfo.Returns)
                                    eoc.EntityControl.RaiseEvent(new ChangeDataContextEventArgs(newIdent));
                            }
                        }
                    }
                    else
                    {
                        if (eoc.ConfirmMessage())
                        {
                            try
                            {

                                IEntity newIdent = Server.Return((IOperationServer s) => s.ExecuteOperation(ident, eoc.OperationInfo.OperationSymbol, null));
                                if (eoc.OperationInfo.Returns)
                                    eoc.EntityControl.RaiseEvent(new ChangeDataContextEventArgs(newIdent));
                            }
                            catch (IntegrityCheckException e)
                            {
                                GraphExplorer.SetValidationErrors(GraphExplorer.FromRoot(ident), e);
                                throw e;
                            }
                        }
                    }
                }
                else if (eoc.OperationInfo.OperationType == OperationType.ConstructorFrom)
                {
                    if (eoc.OperationInfo.Lite.Value && !eoc.EntityControl.LooseChangesIfAny())
                        return;

                    if (!eoc.ConfirmMessage())
                        return;

                    IEntity result = (Entity)new ConstructorContext(eoc.EntityControl, eoc.OperationInfo).SurroundConstructUntyped(eoc.OperationInfo.ReturnType, ctx =>
                    {
                        Entity r;

                        if (eoc.OperationInfo.Lite.Value)
                        {
                            r = Server.Return((IOperationServer s) => s.ConstructFromLite(ident.ToLite(), eoc.OperationInfo.OperationSymbol, null));
                        }
                        else
                        {
                            try
                            {
                                r = Server.Return((IOperationServer s) => s.ConstructFrom(ident, eoc.OperationInfo.OperationSymbol, null));
                            }
                            catch (IntegrityCheckException e)
                            {
                                GraphExplorer.SetValidationErrors(GraphExplorer.FromRoot(ident), e);
                                throw e;
                            }
                        }

                        if (r == null)
                            MessageBox.Show(Window.GetWindow(eoc.EntityControl), OperationMessage.TheOperation0DidNotReturnAnEntity.NiceToString().FormatWith(eoc.OperationInfo.OperationSymbol.NiceToString()));

                        return r;
                    });

                    if (result != null)
                        Navigator.Navigate(result);
                       
                }
                else if (eoc.OperationInfo.OperationType == OperationType.Delete)
                {
                    if (eoc.ConfirmMessage())
                    {
                        Lite<Entity> lite = ident.ToLite();
                        Server.Execute((IOperationServer s) => s.DeleteLite(lite, eoc.OperationInfo.OperationSymbol, null));
                        Window.GetWindow(eoc.EntityControl).Close();
                    }
                }
            }
        }
Exemplo n.º 12
0
 public override JsFunction OnClick(IEntityOperationContext ctx)
 {
     return(Click((EntityOperationContext <T>)ctx));
 }
Exemplo n.º 13
0
 public abstract JsFunction OnClick(IEntityOperationContext ctx);