Skip to content
This repository has been archived by the owner on Oct 16, 2020. It is now read-only.

Commit

Permalink
Refactoring and documentation
Browse files Browse the repository at this point in the history
git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/shortcuts@4606 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
  • Loading branch information
sandrejev committed Aug 6, 2009
1 parent 81c76aa commit a94fa24
Show file tree
Hide file tree
Showing 28 changed files with 598 additions and 455 deletions.
6 changes: 3 additions & 3 deletions src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs
Expand Up @@ -30,7 +30,7 @@
using ICSharpCode.SharpDevelop.Bookmarks;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Editor;
using CommandManager=ICSharpCode.Core.Presentation.CommandManager;
using SDCommandManager=ICSharpCode.Core.Presentation.CommandManager;
using ICSharpCode.SharpDevelop.Editor.CodeCompletion;

namespace ICSharpCode.AvalonEdit.AddIn
Expand Down Expand Up @@ -128,11 +128,11 @@ public void Redraw(ISegment segment, DispatcherPriority priority)
static CodeEditor()
{
var commandBindingInfo = new CommandBindingInfo();
commandBindingInfo.OwnerTypeName = CommandManager.DefaultContextName;
commandBindingInfo.OwnerTypeName = SDCommandManager.DefaultOwnerTypeName;
commandBindingInfo.RoutedCommandName = "SDWindowCommands.SplitView";
commandBindingInfo.ExecutedEventHandler = OnSplitView;
commandBindingInfo.CanExecuteEventHandler = OnCanSplitView;
CommandManager.RegisterCommandBinding(commandBindingInfo);
SDCommandManager.RegisterCommandBindingInfo(commandBindingInfo);
}

public CodeEditor()
Expand Down
Expand Up @@ -168,7 +168,7 @@ Keys[] GetKeyboardShortcut(string path, string id)

Keys[] GetKeyBoardShortcut(string routedCommandName)
{
var template = new BindingInfoTemplate { RoutedCommandName = routedCommandName };
var template = BindingInfoTemplate.Create(null, null, routedCommandName);
var gestureCollection = SDCommandManager.FindInputGestures(template);
var keyCollection = new Keys[gestureCollection.Count];

Expand Down
Expand Up @@ -53,29 +53,29 @@ static void AddBinding(string routedCommandName, string gesturesString, CanExecu
static void AddInputBinding(string routedCommandName, string gesturesString)
{
var inputBinding = new InputBindingInfo();
inputBinding.OwnerTypeName = typeof(TextArea).GetShortAssemblyQualifiedName();
inputBinding.OwnerTypeName = SDCommandManager.GetShortAssemblyQualifiedName(typeof(TextArea));
inputBinding.DefaultGestures.AddRange((InputGestureCollection)new InputGestureCollectionConverter().ConvertFrom(gesturesString));
inputBinding.Groups.Add(ClassWideBindingGroup);
inputBinding.Categories.Add(classWideInputBindingCategory);
inputBinding.RoutedCommandName = routedCommandName;
SDCommandManager.RegisterInputBinding(inputBinding);
SDCommandManager.RegisterInputBindingInfo(inputBinding);
}

static void AddCommandBinding(string routedCommandName, CanExecuteRoutedEventHandler canExecuteHandler, ExecutedRoutedEventHandler executedHandler)
{
var commandBinding = new CommandBindingInfo();
commandBinding.OwnerTypeName = typeof(TextArea).GetShortAssemblyQualifiedName();
commandBinding.OwnerTypeName = SDCommandManager.GetShortAssemblyQualifiedName(typeof(TextArea));
commandBinding.ExecutedEventHandler = executedHandler;
commandBinding.CanExecuteEventHandler = canExecuteHandler;
commandBinding.IsLazy = false;
commandBinding.Groups.Add(ClassWideBindingGroup);
commandBinding.RoutedCommandName = routedCommandName;
SDCommandManager.RegisterCommandBinding(commandBinding);
SDCommandManager.RegisterCommandBindingInfo(commandBinding);
}

static CaretNavigationCommandHandler()
{
ClassWideBindingGroup = new BindingGroup();
ClassWideBindingGroup = new BindingGroup("CaretNavigationCommandHandler");
classWideInputBindingCategory = new InputBindingCategory("/CaretNavigation", "Caret navigation commands");
SDCommandManager.RegisterInputBindingCategory(classWideInputBindingCategory);

Expand Down
Expand Up @@ -61,30 +61,30 @@ static void AddBinding(string routedCommandName, string gesturesString, CanExecu
static void AddInputBinding(string routedCommandName, string gesturesString)
{
var inputBinding = new InputBindingInfo();
inputBinding.OwnerTypeName = typeof(TextArea).GetShortAssemblyQualifiedName();
inputBinding.OwnerTypeName = SDCommandManager.GetShortAssemblyQualifiedName(typeof(TextArea));
inputBinding.DefaultGestures.AddRange((InputGestureCollection)new InputGestureCollectionConverter().ConvertFrom(gesturesString));
inputBinding.Groups.Add(ClassWideBindingGroup);
inputBinding.Categories.Add(classWideInputBindingCategory);
inputBinding.Categories.AddRange(SDCommandManager.GetInputBindingCategoryCollection("/MainMenu/Edit", true));
inputBinding.RoutedCommandName = routedCommandName;
SDCommandManager.RegisterInputBinding(inputBinding);
SDCommandManager.RegisterInputBindingInfo(inputBinding);
}

static void AddCommandBinding(string routedCommandName, CanExecuteRoutedEventHandler canExecuteHandler, ExecutedRoutedEventHandler executedHandler)
{
var commandBinding = new CommandBindingInfo();
commandBinding.OwnerTypeName = typeof(TextArea).GetShortAssemblyQualifiedName();
commandBinding.OwnerTypeName = SDCommandManager.GetShortAssemblyQualifiedName(typeof(TextArea));
commandBinding.ExecutedEventHandler = executedHandler;
commandBinding.CanExecuteEventHandler = canExecuteHandler;
commandBinding.IsLazy = false;
commandBinding.Groups.Add(ClassWideBindingGroup);
commandBinding.RoutedCommandName = routedCommandName;
SDCommandManager.RegisterCommandBinding(commandBinding);
SDCommandManager.RegisterCommandBindingInfo(commandBinding);
}

static EditingCommandHandler()
{
ClassWideBindingGroup = new BindingGroup();
ClassWideBindingGroup = new BindingGroup("EditingCommandHandler");
classWideInputBindingCategory = new InputBindingCategory("/EditingCommands", "Editing commands");
SDCommandManager.RegisterInputBindingCategory(classWideInputBindingCategory);

Expand Down
Expand Up @@ -38,7 +38,7 @@ public class TextArea : Control, IScrollInfo, IWeakEventListener, ITextEditorCom
#region Constructor
static TextArea()
{
SDCommandManager.RegisterNamedUIType(typeof(TextArea).GetShortAssemblyQualifiedName(), typeof(TextArea));
SDCommandManager.RegisterNamedUIType(SDCommandManager.GetShortAssemblyQualifiedName(typeof(TextArea)), typeof(TextArea));

DefaultStyleKeyProperty.OverrideMetadata(typeof(TextArea),
new FrameworkPropertyMetadata(typeof(TextArea)));
Expand Down
Expand Up @@ -40,7 +40,7 @@ public static BindingGroup ClassWideBindingGroup

static TextAreaDefaultInputHandler()
{
ClassWideBindingGroup = new BindingGroup();
ClassWideBindingGroup = new BindingGroup("TextAreaDefaultInputHandler");

AddCommandBinding("ApplicationCommands.Undo", CanExecuteUndo, ExecuteUndo);
AddCommandBinding("ApplicationCommands.Redo", CanExecuteRedo, ExecuteRedo);
Expand All @@ -49,13 +49,13 @@ static TextAreaDefaultInputHandler()
static void AddCommandBinding(string routedCommandName, CanExecuteRoutedEventHandler canExecuteHandler, ExecutedRoutedEventHandler executedHandler)
{
var commandBinding = new CommandBindingInfo();
commandBinding.OwnerTypeName = typeof(TextArea).GetShortAssemblyQualifiedName();
commandBinding.OwnerTypeName = SDCommandManager.GetShortAssemblyQualifiedName(typeof(TextArea));
commandBinding.ExecutedEventHandler = executedHandler;
commandBinding.CanExecuteEventHandler = canExecuteHandler;
commandBinding.IsLazy = false;
commandBinding.Groups.Add(ClassWideBindingGroup);
commandBinding.RoutedCommandName = routedCommandName;
SDCommandManager.RegisterCommandBinding(commandBinding);
SDCommandManager.RegisterCommandBindingInfo(commandBinding);
}

/// <summary>
Expand Down
Expand Up @@ -176,7 +176,7 @@ public virtual void Attach()
isAttached = true;

if(BindingGroup != null) {
BindingGroup.AttachTo(textArea);
BindingGroup.RegisterHandledInstance(textArea);
}

textArea.CommandBindings.AddRange(commandBindings);
Expand All @@ -195,7 +195,7 @@ public virtual void Detach()

// Detach binding from textarea
if(BindingGroup != null) {
BindingGroup.DetachFrom(textArea);
BindingGroup.UnregisterHandledInstance(textArea);
}

// Detach binding to specified input and command bindings
Expand Down
41 changes: 18 additions & 23 deletions src/Main/Base/Project/Src/Commands/MenuItemBuilders.cs
Expand Up @@ -22,7 +22,7 @@
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Util;

using CommandManager=ICSharpCode.Core.Presentation.CommandManager;
using SDCommandManager=ICSharpCode.Core.Presentation.CommandManager;

namespace ICSharpCode.SharpDevelop.Commands
{
Expand Down Expand Up @@ -227,30 +227,28 @@ public ICollection BuildItems(Codon codon, object owner)
var addIn = AddInTree.AddIns.FirstOrDefault(a => a.Name == "SharpDevelop");

// Dynamicaly create routed UI command to loaded pad and bindings for it
CommandManager.RegisterRoutedUICommand(routedCommandName, routedCommandText);
SDCommandManager.RegisterRoutedUICommand(routedCommandName, routedCommandText);

var commandBindingInfo = new CommandBindingInfo();
commandBindingInfo.OwnerTypeName = CommandManager.DefaultContextName;
commandBindingInfo.OwnerTypeName = SDCommandManager.DefaultOwnerTypeName;
commandBindingInfo.RoutedCommandName = routedCommandName;
commandBindingInfo.CanExecuteEventHandler = delegate(object sender, CanExecuteRoutedEventArgs e) { e.CanExecute = true; };
commandBindingInfo.ExecutedEventHandler = delegate { RunTool(tool); };
CommandManager.RegisterCommandBinding(commandBindingInfo);
SDCommandManager.RegisterCommandBindingInfo(commandBindingInfo);

var inputBindingInfo = new InputBindingInfo();
inputBindingInfo.OwnerTypeName = CommandManager.DefaultContextName;
inputBindingInfo.OwnerTypeName = SDCommandManager.DefaultOwnerTypeName;
inputBindingInfo.RoutedCommandName = routedCommandName;
inputBindingInfo.Categories.Add(externalToolsCategory);
CommandManager.RegisterInputBinding(inputBindingInfo);
SDCommandManager.RegisterInputBindingInfo(inputBindingInfo);
}

var gesturesTemplate = new BindingInfoTemplate();
gesturesTemplate.OwnerTypeName = CommandManager.DefaultContextName;
gesturesTemplate.RoutedCommandName = routedCommandName;
var updatedGestures = CommandManager.FindInputGestures(gesturesTemplate);
var gesturesTemplate = BindingInfoTemplate.Create(null, SDCommandManager.DefaultOwnerTypeName, routedCommandName);
var updatedGestures = SDCommandManager.FindInputGestures(gesturesTemplate);
var updatedGesturesText = (string)new InputGestureCollectionConverter().ConvertToInvariantString(updatedGestures);

items[i].InputGestureText = updatedGesturesText;
items[i].Command = CommandManager.GetRoutedUICommand(routedCommandName);
items[i].Command = SDCommandManager.GetRoutedUICommand(routedCommandName);
items[i].Header = StringParser.Parse(tool.ToString());
}

Expand Down Expand Up @@ -524,24 +522,23 @@ public ICollection BuildItems(Codon codon, object owner)
var addIn = AddInTree.AddIns.FirstOrDefault(a => a.Name == "SharpDevelop");

// Dynamicaly create routed UI command to loaded pad and bindings for it
CommandManager.RegisterRoutedUICommand(routedCommandName, routedCommandText);
CommandManager.LoadCommand(routedCommandName, new BringPadToFrontCommand(padContent));
SDCommandManager.RegisterRoutedUICommand(routedCommandName, routedCommandText);
SDCommandManager.LoadCommand(routedCommandName, new BringPadToFrontCommand(padContent));

var commandBindingInfo = new CommandBindingInfo();
commandBindingInfo.CommandTypeName = routedCommandName;
commandBindingInfo.OwnerTypeName = CommandManager.DefaultContextName;
commandBindingInfo.OwnerTypeName = SDCommandManager.DefaultOwnerTypeName;
commandBindingInfo.RoutedCommandName = routedCommandName;
commandBindingInfo.AddIn = addIn;
CommandManager.RegisterCommandBinding(commandBindingInfo);
SDCommandManager.RegisterCommandBindingInfo(commandBindingInfo);

var gestures = (InputGestureCollection)new InputGestureCollectionConverter().ConvertFromString(padContent.Shortcut);

var inputBindingInfo = new InputBindingInfo();
inputBindingInfo.OwnerTypeName = CommandManager.DefaultContextName;
inputBindingInfo.OwnerTypeName = SDCommandManager.DefaultOwnerTypeName;
inputBindingInfo.RoutedCommandName = routedCommandName;
inputBindingInfo.DefaultGestures.AddRange(gestures);


var categoryPath = "/MainMenu/View" + (Category == padContent.Category && padContent.Category != "Main" ? "/" + padContent.Class : "");
var category = ICSharpCode.Core.Presentation.CommandManager.GetInputBindingCategory(categoryPath, false);
if(category == null) {
Expand All @@ -551,17 +548,15 @@ public ICollection BuildItems(Codon codon, object owner)

inputBindingInfo.Categories.Add(category);
inputBindingInfo.AddIn = addIn;
CommandManager.RegisterInputBinding(inputBindingInfo);
SDCommandManager.RegisterInputBindingInfo(inputBindingInfo);

bindingsAssigned.Add(routedCommandName);
}

item.Command = CommandManager.GetRoutedUICommand(routedCommandName);
item.Command = SDCommandManager.GetRoutedUICommand(routedCommandName);

var gesturesTemplate = new BindingInfoTemplate();
gesturesTemplate.OwnerTypeName = CommandManager.DefaultContextName;
gesturesTemplate.RoutedCommandName = routedCommandName;
var updatedGestures = CommandManager.FindInputGestures(gesturesTemplate);
var gesturesTemplate = BindingInfoTemplate.Create(null, SDCommandManager.DefaultOwnerTypeName, routedCommandName);
var updatedGestures = SDCommandManager.FindInputGestures(gesturesTemplate);
var updatedGesturesText = (string)new InputGestureCollectionConverter().ConvertToInvariantString(updatedGestures);
item.InputGestureText = updatedGesturesText;

Expand Down
8 changes: 4 additions & 4 deletions src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs
Expand Up @@ -20,7 +20,7 @@

using ICSharpCode.Core;
using ICSharpCode.Core.Presentation;
using CommandManager=ICSharpCode.Core.Presentation.CommandManager;
using SDCommandManager=ICSharpCode.Core.Presentation.CommandManager;

namespace ICSharpCode.SharpDevelop.Gui
{
Expand Down Expand Up @@ -79,8 +79,8 @@ public void Initialize()

// Use shortened assembly qualified name to not lose user defined gestures
// when sharp develop is updated
CommandManager.DefaultContextName = GetType().GetShortAssemblyQualifiedName();
CommandManager.RegisterNamedUIType(CommandManager.DefaultContextName, GetType());
SDCommandManager.DefaultOwnerTypeName = SDCommandManager.GetShortAssemblyQualifiedName(GetType());
SDCommandManager.RegisterNamedUIType(SDCommandManager.DefaultOwnerTypeName, GetType());

CommandsService.RegisterBuiltInRoutedUICommands();
CommandsService.RegisterRoutedCommands(typeof(ICSharpCode.AvalonEdit.AvalonEditCommands));
Expand All @@ -93,7 +93,7 @@ public void Initialize()
CommandsService.RegisterMenuBindings(this, "/SharpDevelop/CommandManager/MenuLocations");

// Register context and load all commands from addin
CommandManager.LoadAddinCommands(AddInTree.AddIns.FirstOrDefault(a => a.Name == "SharpDevelop"));
SDCommandManager.LoadAddinCommands(AddInTree.AddIns.FirstOrDefault(a => a.Name == "SharpDevelop"));

foreach (PadDescriptor content in AddInTree.BuildItems<PadDescriptor>(viewContentPath, this, false)) {
if (content != null) {
Expand Down

0 comments on commit a94fa24

Please sign in to comment.