Browse Source

- 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
pull/1/head
Kumar Devvrat 16 years ago
parent
commit
5c91c8bb32
  1. 4
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/ControlStyles.xaml
  2. 217
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/QuickOperationMenuExtension.cs
  3. 1
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/WpfDesign.Designer.csproj

4
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/ControlStyles.xaml

@ -507,9 +507,9 @@ @@ -507,9 +507,9 @@
<Setter.Value>
<ControlTemplate TargetType="{x:Type Controls:QuickOperationMenu}">
<Menu Height="15" HorizontalAlignment="Left" Name="menu1" VerticalAlignment="Top" Width="15" BorderThickness="0" Background="Transparent">
<MenuItem Height="15" Width="15" Padding="0" Background="LightGray" BorderThickness="1" Name="MainHeader">
<MenuItem Height="15" Width="15" Padding="0" Background="Transparent" BorderThickness="1" Name="MainHeader">
<MenuItem.Header>
<Path Data="M3,5.5 L12,5.5 L7.5,11 z" Fill="Gray" />
<Path Data="M3.5,5.5 L11.5,5.5 L7.5,11 z" Fill="Black" Stroke="Gray" StrokeThickness="1" />
</MenuItem.Header>
</MenuItem>
</Menu>

217
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/QuickOperationMenuExtension.cs

@ -7,7 +7,7 @@ @@ -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 @@ -18,112 +18,129 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
/// Extends the Quick operation menu for the designer.
/// </summary>
[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);
}
}
}

1
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/WpfDesign.Designer.csproj

@ -130,6 +130,7 @@ @@ -130,6 +130,7 @@
<SubType>Code</SubType>
</Compile>
<Compile Include="Extensions\PanelMove.cs" />
<Compile Include="Extensions\StackPanelPlacementSupport.cs" />
<Compile Include="FocusNavigator.cs" />
<Compile Include="ModelTools.cs" />
<Compile Include="Extensions\PanelInstanceFactory.cs" />

Loading…
Cancel
Save