public CommandToolBarItemDefinition(ToolBarItemGroupDefinition group, int sortOrder,
                                     ToolBarItemDisplay display = ToolBarItemDisplay.IconOnly)
     : base(group, sortOrder, display)
 {
     _commandDefinition = IoC.Get <ICommandService>().GetCommandDefinition(typeof(TCommandDefinition));
     KeyGesture         = IoC.Get <ICommandKeyGestureService>().GetPrimaryKeyGesture(_commandDefinition);
 }
Exemplo n.º 2
0
 public CommandBarCommandItemDefinition(Guid id, uint sortOrder, CommandDefinitionBase commandDefinition, bool isCustom = false,
                                        bool isCustomizable = true)
     : base(null, sortOrder, null, commandDefinition, true, false, isCustom, isCustomizable)
 {
     Id   = id;
     Text = CommandDefinition?.Text;
     Name = CommandDefinition?.Name;
 }
        public CommandMenuItemDefinition(MenuItemGroupDefinition group, int sortOrder)
            : base(group, sortOrder)
        {
            var commandService = IoC.Get <ICommandService>();

            _commandDefinition = commandService.GetCommandDefinition(typeof(TCommandDefinition));
            KeyGesture         = IoC.Get <ICommandKeyGestureService>().GetPrimaryKeyGesture(_commandDefinition);
        }
Exemplo n.º 4
0
 public Command GetCommand(CommandDefinitionBase commandDefinition)
 {
     if (!_commands.TryGetValue(commandDefinition, out var command))
     {
         command = _commands[commandDefinition] = new Command(commandDefinition);
     }
     return(command);
 }
Exemplo n.º 5
0
        object ICommandRerouter.GetHandler(CommandDefinitionBase commandDefinition)
        {
            if (commandDefinition is UndoCommandDefinition ||
                commandDefinition is RedoCommandDefinition)
            {
                return(_shell.ActiveItem);
            }

            return(null);
        }
Exemplo n.º 6
0
        public ICommandHandlerProxy GetCommandHandlerProxy(CommandDefinitionBase commandDefinition)
        {
            var handler = GetCommandHandler(commandDefinition);

            if (handler != null)
            {
                var type = typeof(CommandHandlerProxy <>).MakeGenericType(commandDefinition.GetType());
                return((ICommandHandlerProxy)Activator.CreateInstance(type, handler));
            }

            return(null);
        }
Exemplo n.º 7
0
        private CommandHandlerWrapper GetCommandHandlerForLayoutItem(CommandDefinitionBase commandDefinition, object activeItemViewModel)
        {
            var activeItemView   = ViewLocator.LocateForModel(activeItemViewModel, null, null);
            var activeItemWindow = Window.GetWindow(activeItemView);

            if (activeItemWindow == null)
            {
                return(null);
            }

            var startElement = FocusManager.GetFocusedElement(activeItemView) ?? activeItemView;

            // First, we look at the currently focused element, and iterate up through
            // the tree, giving each DataContext a chance to handle the command.
            return(FindCommandHandlerInVisualTree(commandDefinition, startElement));
        }
Exemplo n.º 8
0
        private CommandHandlerWrapper FindCommandHandlerInVisualTree(CommandDefinitionBase commandDefinition, IInputElement target)
        {
            if (!(target is DependencyObject visualObject))
            {
                return(null);
            }

            object previousDataContext = null;

            do
            {
                var frameworkElement = visualObject as FrameworkElement;
                var dataContext      = frameworkElement?.DataContext;
                if (dataContext != null && !ReferenceEquals(dataContext, previousDataContext))
                {
                    if (dataContext is ICommandRerouter context)
                    {
                        var commandRerouter = context;
                        var commandTarget   = commandRerouter.GetHandler(commandDefinition);
                        if (commandTarget != null)
                        {
                            if (IsCommandHandlerForCommandDefinitionType(commandTarget, commandDefinition.GetType()))
                            {
                                return(CreateCommandHandlerWrapper(commandDefinition.GetType(), commandTarget));
                            }
                            throw new InvalidOperationException("This object does not handle the specified command definition.");
                        }
                    }

                    if (IsCommandHandlerForCommandDefinitionType(dataContext, commandDefinition.GetType()))
                    {
                        return(CreateCommandHandlerWrapper(commandDefinition.GetType(), dataContext));
                    }

                    previousDataContext = dataContext;
                }
                visualObject = VisualTreeHelper.GetParent(visualObject);
            } while (visualObject != null);

            return(null);
        }
Exemplo n.º 9
0
        public CommandHandlerWrapper GetCommandHandler(CommandDefinitionBase commandDefinition)
        {
            CommandHandlerWrapper commandHandler;

            var shell = IoC.Get <IDockingHostViewModel>();

            var activeItemViewModel = shell.ActiveLayoutItemBase;

            if (activeItemViewModel != null)
            {
                commandHandler = GetCommandHandlerForLayoutItem(commandDefinition, activeItemViewModel);
                if (commandHandler != null)
                {
                    return(commandHandler);
                }
            }

            var activeDocumentViewModel = shell.ActiveItem;

            if (activeDocumentViewModel != null && !Equals(activeDocumentViewModel, activeItemViewModel))
            {
                commandHandler = GetCommandHandlerForLayoutItem(commandDefinition, activeDocumentViewModel);
                if (commandHandler != null)
                {
                    return(commandHandler);
                }
            }

            // If none of the objects in the DataContext hierarchy handle the command,
            // fallback to the global handler.
            if (!_globalCommandHandlerWrappers.TryGetValue(commandDefinition.GetType(), out commandHandler))
            {
                return(null);
            }

            return(commandHandler);
        }
Exemplo n.º 10
0
 public ICommandHandler GetCommandHandler(CommandDefinitionBase commandDefinition)
 {
     _commandHandlers.TryGetValue(commandDefinition.GetType(), out var handler);
     return(handler);
 }
Exemplo n.º 11
0
 public CommandMenuItemDefinition(MenuItemGroupDefinition group, int sortOrder)
     : base(group, sortOrder)
 {
     CommandDefinition = Locator.Current.GetService <ICommandService>().GetCommandDefinition(typeof(TCommandDefinition));
 }
Exemplo n.º 12
0
 public CommandMenuItemDefinition(MenuItemGroupDefinition group, int sortOrder)
     : base(group, sortOrder)
 {
     _commandDefinition = IoC.Get <ICommandService>().GetCommandDefinition(typeof(TCommandDefinition));
 }
Exemplo n.º 13
0
 public ExcludedCommandDefinition(CommandDefinitionBase excludedDefinition)
 {
     ExcludedDefinition = excludedDefinition;
 }