Example #1
0
        protected override void ControlInvoke(XRControl control, EditActionBase editAction)
        {
            var action     = editAction as ChangeImageSizeModeAction;
            var pictureBox = control as XRPictureBox;

            if (action == null || pictureBox == null)
            {
                return;
            }
            pictureBox.Sizing = action.ImageSizeMode;
        }
Example #2
0
 private void AddEditorCommandBinding(EditActionBase action, Key key, ModifierKeys modifiers)
 {
     editor.CommandBindings.Add(action.CreateCommandBinding());
     editor.InputBindings.Add(new KeyBinding(action, key, modifiers));
 }
Example #3
0
        /////////////////////////////////////////////////////////////////////////////////////////////////////
        // NON-PUBLIC PROCEDURES
        /////////////////////////////////////////////////////////////////////////////////////////////////////

        /// <summary>
        /// Binds data to the list.
        /// </summary>
        private void BindList()
        {
            string ClipboardCategory     = "Clipboard / Undo";
            string DeletionCategory      = "Deletion";
            string InsertionCategory     = "Insertion";
            string IntelliPromptCategory = "IntelliPrompt";
            string MacroCategory         = "Macro Recording";
            string MiscellaneousCategory = "Miscellaneous";
            string MovementCategory      = "Movement";
            string ScrollCategory        = "Scroll";
            string SearchCategory        = "Search";
            string SelectionCategory     = "Selection";

            EditActionData[] actionDataArray = new EditActionData[] {
                // Clipboard/undo
                new EditActionData()
                {
                    Category = ClipboardCategory, Action = new CopyAndAppendToClipboardAction()
                },
                new EditActionData()
                {
                    Category = ClipboardCategory, Action = new CopyToClipboardAction()
                },
                new EditActionData()
                {
                    Category = ClipboardCategory, Action = new CutAndAppendToClipboardAction()
                },
                new EditActionData()
                {
                    Category = ClipboardCategory, Action = new CutLineToClipboardAction()
                },
                new EditActionData()
                {
                    Category = ClipboardCategory, Action = new CutToClipboardAction()
                },
                new EditActionData()
                {
                    Category = ClipboardCategory, Action = new PasteFromClipboardAction()
                },
                new EditActionData()
                {
                    Category = ClipboardCategory, Action = new RedoAction()
                },
                new EditActionData()
                {
                    Category = ClipboardCategory, Action = new ActiproSoftware.Windows.Controls.SyntaxEditor.EditActions.UndoAction()
                },
                // Deletion
                new EditActionData()
                {
                    Category = DeletionCategory, Action = new BackspaceAction()
                },
                new EditActionData()
                {
                    Category = DeletionCategory, Action = new BackspaceToPreviousWordAction()
                },
                new EditActionData()
                {
                    Category = DeletionCategory, Action = new DeleteAction()
                },
                new EditActionData()
                {
                    Category = DeletionCategory, Action = new DeleteBlankLinesAction()
                },
                new EditActionData()
                {
                    Category = DeletionCategory, Action = new DeleteHorizontalWhitespaceAction()
                },
                new EditActionData()
                {
                    Category = DeletionCategory, Action = new DeleteLineAction()
                },
                new EditActionData()
                {
                    Category = DeletionCategory, Action = new DeleteToLineEndAction()
                },
                new EditActionData()
                {
                    Category = DeletionCategory, Action = new DeleteToLineStartAction()
                },
                new EditActionData()
                {
                    Category = DeletionCategory, Action = new DeleteToNextWordAction()
                },
                // Insertion
                new EditActionData()
                {
                    Category = InsertionCategory, Action = new InsertLineBreakAction()
                },
                new EditActionData()
                {
                    Category = InsertionCategory, Action = new OpenLineAboveAction()
                },
                new EditActionData()
                {
                    Category = InsertionCategory, Action = new OpenLineBelowAction()
                },
                new EditActionData()
                {
                    Category = InsertionCategory, Action = new TypingAction("*Typing*", false)
                },
                // IntelliPrompt
                new EditActionData()
                {
                    Category = IntelliPromptCategory, Action = new RequestIntelliPromptAutoCompleteAction()
                },
                new EditActionData()
                {
                    Category = IntelliPromptCategory, Action = new RequestIntelliPromptCompletionSessionAction()
                },
                new EditActionData()
                {
                    Category = IntelliPromptCategory, Action = new RequestIntelliPromptParameterInfoSessionAction()
                },
                new EditActionData()
                {
                    Category = IntelliPromptCategory, Action = new RequestIntelliPromptQuickInfoSessionAction()
                },
                // Macro
                new EditActionData()
                {
                    Category = MacroCategory, Action = new CancelMacroRecordingAction()
                },
                new EditActionData()
                {
                    Category = MacroCategory, Action = new PauseResumeMacroRecordingAction()
                },
                new EditActionData()
                {
                    Category = MacroCategory, Action = new RunMacroAction()
                },
                new EditActionData()
                {
                    Category = MacroCategory, Action = new ToggleMacroRecordingAction()
                },
                // Miscellaneous
                new EditActionData()
                {
                    Category = MiscellaneousCategory, Action = new CapitalizeAction()
                },
                new EditActionData()
                {
                    Category = MiscellaneousCategory, Action = new CommentLinesAction()
                },
                new EditActionData()
                {
                    Category = MiscellaneousCategory, Action = new ConvertSpacesToTabsAction()
                },
                new EditActionData()
                {
                    Category = MiscellaneousCategory, Action = new ConvertTabsToSpacesAction()
                },
                new EditActionData()
                {
                    Category = MiscellaneousCategory, Action = new DuplicateAction()
                },
                new EditActionData()
                {
                    Category = MiscellaneousCategory, Action = new FormatDocumentAction()
                },
                new EditActionData()
                {
                    Category = MiscellaneousCategory, Action = new FormatSelectionAction()
                },
                new EditActionData()
                {
                    Category = MiscellaneousCategory, Action = new IndentAction()
                },
                new EditActionData()
                {
                    Category = MiscellaneousCategory, Action = new InsertTabStopOrIndentAction()
                },
                new EditActionData()
                {
                    Category = MiscellaneousCategory, Action = new MakeLowercaseAction()
                },
                new EditActionData()
                {
                    Category = MiscellaneousCategory, Action = new MakeUppercaseAction()
                },
                new EditActionData()
                {
                    Category = MiscellaneousCategory, Action = new MoveSelectedLinesDownAction()
                },
                new EditActionData()
                {
                    Category = MiscellaneousCategory, Action = new MoveSelectedLinesUpAction()
                },
                new EditActionData()
                {
                    Category = MiscellaneousCategory, Action = new OutdentAction()
                },
                new EditActionData()
                {
                    Category = MiscellaneousCategory, Action = new RemoveTabStopOrOutdentAction()
                },
                new EditActionData()
                {
                    Category = MiscellaneousCategory, Action = new ResetZoomLevelAction()
                },
                new EditActionData()
                {
                    Category = MiscellaneousCategory, Action = new TabifySelectedLinesAction()
                },
                new EditActionData()
                {
                    Category = MiscellaneousCategory, Action = new ToggleCharacterCasingAction()
                },
                new EditActionData()
                {
                    Category = MiscellaneousCategory, Action = new ToggleOverwriteModeAction()
                },
                new EditActionData()
                {
                    Category = MiscellaneousCategory, Action = new TransposeCharactersAction()
                },
                new EditActionData()
                {
                    Category = MiscellaneousCategory, Action = new TransposeLinesAction()
                },
                new EditActionData()
                {
                    Category = MiscellaneousCategory, Action = new TransposeWordsAction()
                },
                new EditActionData()
                {
                    Category = MiscellaneousCategory, Action = new TrimAllTrailingWhitespaceAction()
                },
                new EditActionData()
                {
                    Category = MiscellaneousCategory, Action = new TrimTrailingWhitespaceAction()
                },
                new EditActionData()
                {
                    Category = MiscellaneousCategory, Action = new UncommentLinesAction()
                },
                new EditActionData()
                {
                    Category = MiscellaneousCategory, Action = new UntabifySelectedLinesAction()
                },
                new EditActionData()
                {
                    Category = MiscellaneousCategory, Action = new ZoomInAction()
                },
                new EditActionData()
                {
                    Category = MiscellaneousCategory, Action = new ZoomOutAction()
                },
                // Movement
                new EditActionData()
                {
                    Category = MovementCategory, Action = new MoveDownAction()
                },
                new EditActionData()
                {
                    Category = MovementCategory, Action = new MoveLeftAction()
                },
                new EditActionData()
                {
                    Category = MovementCategory, Action = new MovePageDownAction()
                },
                new EditActionData()
                {
                    Category = MovementCategory, Action = new MovePageUpAction()
                },
                new EditActionData()
                {
                    Category = MovementCategory, Action = new MoveRightAction()
                },
                new EditActionData()
                {
                    Category = MovementCategory, Action = new MoveToDocumentEndAction()
                },
                new EditActionData()
                {
                    Category = MovementCategory, Action = new MoveToDocumentStartAction()
                },
                new EditActionData()
                {
                    Category = MovementCategory, Action = new MoveToLineEndAction()
                },
                new EditActionData()
                {
                    Category = MovementCategory, Action = new MoveToLineStartAction()
                },
                new EditActionData()
                {
                    Category = MovementCategory, Action = new MoveToLineStartAfterIndentationAction()
                },
                new EditActionData()
                {
                    Category = MovementCategory, Action = new MoveToMatchingBracketAction()
                },
                new EditActionData()
                {
                    Category = MovementCategory, Action = new MoveToNextLineStartAfterIndentationAction()
                },
                new EditActionData()
                {
                    Category = MovementCategory, Action = new MoveToNextWordAction()
                },
                new EditActionData()
                {
                    Category = MovementCategory, Action = new MoveToPreviousLineStartAfterIndentationAction()
                },
                new EditActionData()
                {
                    Category = MovementCategory, Action = new MoveToPreviousWordAction()
                },
                new EditActionData()
                {
                    Category = MovementCategory, Action = new MoveToVisibleBottomAction()
                },
                new EditActionData()
                {
                    Category = MovementCategory, Action = new MoveToVisibleTopAction()
                },
                new EditActionData()
                {
                    Category = MovementCategory, Action = new MoveUpAction()
                },
                // Scroll
                new EditActionData()
                {
                    Category = ScrollCategory, Action = new ScrollDownAction()
                },
                new EditActionData()
                {
                    Category = ScrollCategory, Action = new ScrollLeftAction()
                },
                new EditActionData()
                {
                    Category = ScrollCategory, Action = new ScrollLineToVisibleBottomAction()
                },
                new EditActionData()
                {
                    Category = ScrollCategory, Action = new ScrollLineToVisibleMiddleAction()
                },
                new EditActionData()
                {
                    Category = ScrollCategory, Action = new ScrollLineToVisibleTopAction()
                },
                new EditActionData()
                {
                    Category = ScrollCategory, Action = new ScrollPageDownAction()
                },
                new EditActionData()
                {
                    Category = ScrollCategory, Action = new ScrollPageUpAction()
                },
                new EditActionData()
                {
                    Category = ScrollCategory, Action = new ScrollRightAction()
                },
                new EditActionData()
                {
                    Category = ScrollCategory, Action = new ScrollToDocumentEndAction()
                },
                new EditActionData()
                {
                    Category = ScrollCategory, Action = new ScrollToDocumentStartAction()
                },
                new EditActionData()
                {
                    Category = ScrollCategory, Action = new ScrollUpAction()
                },
                // Search
                new EditActionData()
                {
                    Category = SearchCategory, Action = new FindAction()
                },
                new EditActionData()
                {
                    Category = SearchCategory, Action = new FindNextAction()
                },
                new EditActionData()
                {
                    Category = SearchCategory, Action = new FindNextSelectedAction()
                },
                new EditActionData()
                {
                    Category = SearchCategory, Action = new FindPreviousAction()
                },
                new EditActionData()
                {
                    Category = SearchCategory, Action = new FindPreviousSelectedAction()
                },
                new EditActionData()
                {
                    Category = SearchCategory, Action = new IncrementalSearchAction()
                },
                new EditActionData()
                {
                    Category = SearchCategory, Action = new ReplaceAction()
                },
                new EditActionData()
                {
                    Category = SearchCategory, Action = new ReverseIncrementalSearchAction()
                },
                // Selection
                new EditActionData()
                {
                    Category = SelectionCategory, Action = new CodeBlockSelectionContractAction()
                },
                new EditActionData()
                {
                    Category = SelectionCategory, Action = new CodeBlockSelectionExpandAction()
                },
                new EditActionData()
                {
                    Category = SelectionCategory, Action = new CollapseSelectionAction()
                },
                new EditActionData()
                {
                    Category = SelectionCategory, Action = new CollapseSelectionLeftAction()
                },
                new EditActionData()
                {
                    Category = SelectionCategory, Action = new CollapseSelectionRightAction()
                },
                new EditActionData()
                {
                    Category = SelectionCategory, Action = new SelectAllAction()
                },
                new EditActionData()
                {
                    Category = SelectionCategory, Action = new SelectBlockDownAction()
                },
                new EditActionData()
                {
                    Category = SelectionCategory, Action = new SelectBlockLeftAction()
                },
                new EditActionData()
                {
                    Category = SelectionCategory, Action = new SelectBlockRightAction()
                },
                new EditActionData()
                {
                    Category = SelectionCategory, Action = new SelectBlockToNextWordAction()
                },
                new EditActionData()
                {
                    Category = SelectionCategory, Action = new SelectBlockToPreviousWordAction()
                },
                new EditActionData()
                {
                    Category = SelectionCategory, Action = new SelectBlockUpAction()
                },
                new EditActionData()
                {
                    Category = SelectionCategory, Action = new SelectDownAction()
                },
                new EditActionData()
                {
                    Category = SelectionCategory, Action = new SelectLeftAction()
                },
                new EditActionData()
                {
                    Category = SelectionCategory, Action = new SelectPageDownAction()
                },
                new EditActionData()
                {
                    Category = SelectionCategory, Action = new SelectPageUpAction()
                },
                new EditActionData()
                {
                    Category = SelectionCategory, Action = new SelectRightAction()
                },
                new EditActionData()
                {
                    Category = SelectionCategory, Action = new SelectToDocumentEndAction()
                },
                new EditActionData()
                {
                    Category = SelectionCategory, Action = new SelectToDocumentStartAction()
                },
                new EditActionData()
                {
                    Category = SelectionCategory, Action = new SelectToLineEndAction()
                },
                new EditActionData()
                {
                    Category = SelectionCategory, Action = new SelectToLineStartAction()
                },
                new EditActionData()
                {
                    Category = SelectionCategory, Action = new SelectToLineStartAfterIndentationAction()
                },
                new EditActionData()
                {
                    Category = SelectionCategory, Action = new SelectToMatchingBracketAction()
                },
                new EditActionData()
                {
                    Category = SelectionCategory, Action = new SelectToNextWordAction()
                },
                new EditActionData()
                {
                    Category = SelectionCategory, Action = new SelectToPreviousWordAction()
                },
                new EditActionData()
                {
                    Category = SelectionCategory, Action = new SelectToVisibleBottomAction()
                },
                new EditActionData()
                {
                    Category = SelectionCategory, Action = new SelectToVisibleTopAction()
                },
                new EditActionData()
                {
                    Category = SelectionCategory, Action = new SelectUpAction()
                },
                new EditActionData()
                {
                    Category = SelectionCategory, Action = new SelectWordAction()
                },
            };

            // Find the default binding for each action
            foreach (EditActionData actionData in actionDataArray)
            {
                foreach (InputBinding binding in editor.InputBindings)
                {
                    KeyBinding keyBinding = binding as KeyBinding;
                    if (keyBinding != null)
                    {
                        IEditAction command = binding.Command as IEditAction;
                        if ((command != null) && (command.Key == actionData.Name))
                        {
                            actionData.Key = EditActionBase.GetKeyText(keyBinding.Modifiers, keyBinding.Key);
                            break;
                        }
                    }
                }
            }

            // Create a collection view source
            ListCollectionView source = new ListCollectionView(actionDataArray);

            source.GroupDescriptions.Add(new PropertyGroupDescription("Category"));

            // Set list items source
            editActionsListView.ItemsSource = source;
        }
Example #4
0
 private void AddEditorCommandBinding(EditActionBase action)
 {
     editor.CommandBindings.Add(action.CreateCommandBinding());
 }
        public sealed override void OnInvoke(MethodInterceptionArgs eventArgs)
        {
            if (EditActionSettings.Disabled && !(EditActionSettings.AllowRestoreActions && editActionType != null))
            {
                return;
            }

            IEditAction editAction = null;

            try
            {
                editActionsInProgress++;

                if (EventSettings.EnableLogging)
                {
                    //log.DebugFormat(Indent + ">> Entering edit action {0} (enabled:{1}) {2}",
                    //               (eventArgs.Instance != null ? eventArgs.Instance.GetType().Name : "static") + "." + eventArgs.Method.Name, !Disabled, editActionsInProgress);
                }

                if (BeforeEdit != null)
                {
                    BeforeEdit(eventArgs);
                }

                var editableObject = eventArgs.Instance as IEditableObject;
                if (EditActionSettings.SupportEditableObject && editActionType != null)
                {
                    if (editableObject == null)
                    {
                        throw new InvalidOperationException("Cannot apply EditAction attribute with EditActionType if target is not IEditableObject");
                    }

                    editAction = EditActionBase.Create(editActionType);

                    if (editAction.HandlesRestore)
                    {
                        editAction.Instance  = eventArgs.Instance;
                        editAction.Arguments = eventArgs.Arguments.ToArray();
                        editAction.BeforeChanges();
                    }

                    editableObject.BeginEdit(editAction);
                }

                var exception = false;
                try
                {
                    eventArgs.Proceed();
                }
                catch (Exception)
                {
                    exception = true;
                    throw;
                }
                finally
                {
                    if (EditActionSettings.SupportEditableObject && editAction != null)
                    {
                        if (exception)
                        {
                            editableObject.CancelEdit();
                        }
                        else
                        {
                            if (editAction.HandlesRestore)
                            {
                                editAction.ReturnValue = eventArgs.ReturnValue;
                            }
                            editableObject.EndEdit();
                        }
                    }

                    if (AfterEdit != null)
                    {
                        AfterEdit(eventArgs);
                    }

                    if (EventSettings.EnableLogging)
                    {
                        //log.DebugFormat(Indent + "<< Exiting edit action {0} {1}",
                        //                (eventArgs.Instance != null ? eventArgs.Instance.GetType().Name : "static") + "." + eventArgs.Method.Name, editActionsInProgress);
                    }
                }
            }
            finally
            {
                editActionsInProgress--;
            }
        }