From 5c91c8bb320af6913f4ee486f84bd14dd57398e8 Mon Sep 17 00:00:00 2001 From: Kumar Devvrat Date: Sat, 31 Jul 2010 13:11:22 +0000 Subject: [PATCH] - Add StackPanelPlacementSupport.cs in .csproj to be compiled. - Change some styles. - Register [Alt]+Enter for Quick operation menu git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@6330 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Project/Controls/ControlStyles.xaml | 4 +- .../Extensions/QuickOperationMenuExtension.cs | 217 ++++++++++-------- .../Project/WpfDesign.Designer.csproj | 1 + 3 files changed, 120 insertions(+), 102 deletions(-) diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/ControlStyles.xaml b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/ControlStyles.xaml index 32f0d5f893..af29907239 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/ControlStyles.xaml +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/ControlStyles.xaml @@ -507,9 +507,9 @@ - + - + diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/QuickOperationMenuExtension.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/QuickOperationMenuExtension.cs index 50e4d4dec3..4bb2473d82 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/QuickOperationMenuExtension.cs +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/QuickOperationMenuExtension.cs @@ -7,7 +7,7 @@ using System; using System.Windows; using System.Windows.Controls; - +using System.Windows.Input; using ICSharpCode.WpfDesign.Designer.Controls; using ICSharpCode.WpfDesign.Extensions; using ICSharpCode.WpfDesign.Adorners; @@ -18,112 +18,129 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions /// Extends the Quick operation menu for the designer. /// [ExtensionFor(typeof (FrameworkElement))] - class QuickOperationMenuExtension : PrimarySelectionAdornerProvider - { - private QuickOperationMenu _menu; - - protected override void OnInitialized() - { - base.OnInitialized(); - _menu = new QuickOperationMenu(); - _menu.Loaded += OnMenuLoaded; - var placement = new RelativePlacement(HorizontalAlignment.Right, VerticalAlignment.Top) {XOffset = 7}; - this.AddAdorners(placement, _menu); - } + class QuickOperationMenuExtension : PrimarySelectionAdornerProvider + { + private QuickOperationMenu _menu; + private KeyBinding _keyBinding; + + protected override void OnInitialized() + { + base.OnInitialized(); + _menu = new QuickOperationMenu(); + _menu.Loaded += OnMenuLoaded; + var placement = new RelativePlacement(HorizontalAlignment.Right, VerticalAlignment.Top) {XOffset = 7, YOffset = 3.5}; + this.AddAdorners(placement, _menu); + + var kbs = this.ExtendedItem.Services.GetService(typeof (IKeyBindingService)) as IKeyBindingService; + var command = new DesignCommand(delegate + { + _menu.MainHeader.IsSubmenuOpen = true; + _menu.MainHeader.Focus(); + }, delegate + { + return true; + }); + _keyBinding=new KeyBinding(command, Key.Enter, ModifierKeys.Alt); + if (kbs != null) + kbs.RegisterBinding(_keyBinding); + } - private void OnMenuLoaded(object sender, EventArgs e) - { - _menu.MainHeader.Click += MainHeaderClick; - int menuItemsAdded = 0; - var view = this.ExtendedItem.View; + private void OnMenuLoaded(object sender, EventArgs e) + { + _menu.MainHeader.Click += MainHeaderClick; + int menuItemsAdded = 0; + var view = this.ExtendedItem.View; - if (view != null) { - string setValue; - if (view is StackPanel) { - var ch = new MenuItem() {Header = "Change Orientation"}; - _menu.AddSubMenuInTheHeader(ch); - setValue = this.ExtendedItem.Properties[StackPanel.OrientationProperty].ValueOnInstance.ToString(); - _menu.AddSubMenuCheckable(ch, Enum.GetValues(typeof (Orientation)), Orientation.Vertical.ToString(), setValue); - _menu.MainHeader.Items.Add(new Separator()); - menuItemsAdded++; - } - - if(this.ExtendedItem.Parent!=null && this.ExtendedItem.Parent.View is DockPanel) { - var sda = new MenuItem() {Header = "Set Dock to"}; - _menu.AddSubMenuInTheHeader(sda); - setValue = this.ExtendedItem.Properties.GetAttachedProperty(DockPanel.DockProperty).ValueOnInstance.ToString(); - _menu.AddSubMenuCheckable(sda, Enum.GetValues(typeof (Dock)), Dock.Left.ToString(), setValue); - _menu.MainHeader.Items.Add(new Separator()); - menuItemsAdded++; - } + if (view != null) { + string setValue; + if (view is StackPanel) { + var ch = new MenuItem() {Header = "Change Orientation"}; + _menu.AddSubMenuInTheHeader(ch); + setValue = this.ExtendedItem.Properties[StackPanel.OrientationProperty].ValueOnInstance.ToString(); + _menu.AddSubMenuCheckable(ch, Enum.GetValues(typeof (Orientation)), Orientation.Vertical.ToString(), setValue); + _menu.MainHeader.Items.Add(new Separator()); + menuItemsAdded++; + } + + if(this.ExtendedItem.Parent!=null && this.ExtendedItem.Parent.View is DockPanel) { + var sda = new MenuItem() {Header = "Set Dock to"}; + _menu.AddSubMenuInTheHeader(sda); + setValue = this.ExtendedItem.Properties.GetAttachedProperty(DockPanel.DockProperty).ValueOnInstance.ToString(); + _menu.AddSubMenuCheckable(sda, Enum.GetValues(typeof (Dock)), Dock.Left.ToString(), setValue); + _menu.MainHeader.Items.Add(new Separator()); + menuItemsAdded++; + } - var ha = new MenuItem() {Header = "Horizontal Alignment"}; - _menu.AddSubMenuInTheHeader(ha); - setValue = this.ExtendedItem.Properties[FrameworkElement.HorizontalAlignmentProperty].ValueOnInstance.ToString(); - _menu.AddSubMenuCheckable(ha, Enum.GetValues(typeof (HorizontalAlignment)), HorizontalAlignment.Stretch.ToString(), setValue); - menuItemsAdded++; + var ha = new MenuItem() {Header = "Horizontal Alignment"}; + _menu.AddSubMenuInTheHeader(ha); + setValue = this.ExtendedItem.Properties[FrameworkElement.HorizontalAlignmentProperty].ValueOnInstance.ToString(); + _menu.AddSubMenuCheckable(ha, Enum.GetValues(typeof (HorizontalAlignment)), HorizontalAlignment.Stretch.ToString(), setValue); + menuItemsAdded++; - var va = new MenuItem() {Header = "Vertical Alignment"}; - _menu.AddSubMenuInTheHeader(va); - setValue = this.ExtendedItem.Properties[FrameworkElement.VerticalAlignmentProperty].ValueOnInstance.ToString(); - _menu.AddSubMenuCheckable(va, Enum.GetValues(typeof (VerticalAlignment)), VerticalAlignment.Stretch.ToString(), setValue); - menuItemsAdded++; - } + var va = new MenuItem() {Header = "Vertical Alignment"}; + _menu.AddSubMenuInTheHeader(va); + setValue = this.ExtendedItem.Properties[FrameworkElement.VerticalAlignmentProperty].ValueOnInstance.ToString(); + _menu.AddSubMenuCheckable(va, Enum.GetValues(typeof (VerticalAlignment)), VerticalAlignment.Stretch.ToString(), setValue); + menuItemsAdded++; + } - if (menuItemsAdded == 0) { - OnRemove(); - } - } + if (menuItemsAdded == 0) { + OnRemove(); + } + } - private void MainHeaderClick(object sender, RoutedEventArgs e) - { - var clickedOn = e.Source as MenuItem; - if (clickedOn != null) { - var parent = clickedOn.Parent as MenuItem; - if (parent != null) { - if ((string) parent.Header == "Change Orientation") { - var value = _menu.UncheckChildrenAndSelectClicked(parent, clickedOn); - if (value != null) { - var orientation = Enum.Parse(typeof (Orientation), value); - if (orientation != null) - this.ExtendedItem.Properties[StackPanel.OrientationProperty].SetValue(orientation); - } - } - if ((string)parent.Header == "Set Dock to") { - var value = _menu.UncheckChildrenAndSelectClicked(parent, clickedOn); - if(value!=null) { - var dock = Enum.Parse(typeof (Dock), value); - if (dock != null) - this.ExtendedItem.Properties.GetAttachedProperty(DockPanel.DockProperty).SetValue(dock); - } - } - + private void MainHeaderClick(object sender, RoutedEventArgs e) + { + var clickedOn = e.Source as MenuItem; + if (clickedOn != null) { + var parent = clickedOn.Parent as MenuItem; + if (parent != null) { + if ((string) parent.Header == "Change Orientation") { + var value = _menu.UncheckChildrenAndSelectClicked(parent, clickedOn); + if (value != null) { + var orientation = Enum.Parse(typeof (Orientation), value); + if (orientation != null) + this.ExtendedItem.Properties[StackPanel.OrientationProperty].SetValue(orientation); + } + } + if ((string)parent.Header == "Set Dock to") { + var value = _menu.UncheckChildrenAndSelectClicked(parent, clickedOn); + if(value!=null) { + var dock = Enum.Parse(typeof (Dock), value); + if (dock != null) + this.ExtendedItem.Properties.GetAttachedProperty(DockPanel.DockProperty).SetValue(dock); + } + } + - if ((string) parent.Header == "Horizontal Alignment") { - var value = _menu.UncheckChildrenAndSelectClicked(parent, clickedOn); - if (value != null) { - var ha = Enum.Parse(typeof (HorizontalAlignment), value); - if (ha != null) - this.ExtendedItem.Properties[FrameworkElement.HorizontalAlignmentProperty].SetValue(ha); - } - } + if ((string) parent.Header == "Horizontal Alignment") { + var value = _menu.UncheckChildrenAndSelectClicked(parent, clickedOn); + if (value != null) { + var ha = Enum.Parse(typeof (HorizontalAlignment), value); + if (ha != null) + this.ExtendedItem.Properties[FrameworkElement.HorizontalAlignmentProperty].SetValue(ha); + } + } - if ((string) parent.Header == "Vertical Alignment") { - var value = _menu.UncheckChildrenAndSelectClicked(parent, clickedOn); - if (value != null) { - var va = Enum.Parse(typeof (VerticalAlignment), value); - if (va != null) - this.ExtendedItem.Properties[FrameworkElement.VerticalAlignmentProperty].SetValue(va); - } - } - } - } - } + if ((string) parent.Header == "Vertical Alignment") { + var value = _menu.UncheckChildrenAndSelectClicked(parent, clickedOn); + if (value != null) { + var va = Enum.Parse(typeof (VerticalAlignment), value); + if (va != null) + this.ExtendedItem.Properties[FrameworkElement.VerticalAlignmentProperty].SetValue(va); + } + } + } + } + } - protected override void OnRemove() - { - base.OnRemove(); - _menu.Loaded -= OnMenuLoaded; - } - } + protected override void OnRemove() + { + base.OnRemove(); + _menu.Loaded -= OnMenuLoaded; + var kbs = this.ExtendedItem.Services.GetService(typeof (IKeyBindingService)) as IKeyBindingService; + if(kbs!=null) + kbs.DeregisterBinding(_keyBinding); + } + } } diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/WpfDesign.Designer.csproj b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/WpfDesign.Designer.csproj index 8d0be76321..d75a7bf047 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/WpfDesign.Designer.csproj +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/WpfDesign.Designer.csproj @@ -130,6 +130,7 @@ Code +