Browse Source

- Turn SizeDisplay on when the element is resized and hide margin handles at the time.

- remove unused variable to suppress warnings.
- Fix a bug - NullReferenceException in CanPaste().

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/wpfdesigner@6087 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Kumar Devvrat 16 years ago
parent
commit
7420a7907e
  1. 3
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/GridAdorner.cs
  2. 17
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/MarginHandle.cs
  3. 16
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/DesignSurface.xaml.cs
  4. 40
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/MarginHandleExtension.cs
  5. 41
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/ResizeThumbExtension.cs
  6. 27
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/SizeDisplayExtension.cs

3
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/GridAdorner.cs

@ -39,8 +39,7 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
readonly Orientation orientation; readonly Orientation orientation;
readonly GridUnitSelector unitSelector; readonly GridUnitSelector unitSelector;
static readonly SolidColorBrush bgBrush; static readonly SolidColorBrush bgBrush;
static readonly SolidColorBrush selBrush;
public const double RailSize = 10; public const double RailSize = 10;
public const double RailDistance = 6; public const double RailDistance = 6;

17
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/MarginHandle.cs

@ -83,6 +83,11 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
MarginHandle mar=(MarginHandle)d; MarginHandle mar=(MarginHandle)d;
mar.DecideVisiblity((double)e.NewValue); mar.DecideVisiblity((double)e.NewValue);
} }
/// <summary>
/// Decides whether to permanently display the handle or not.
/// </summary>
public bool ShouldBeVisible { get; set; }
public MarginHandle(DesignItem adornedControlItem, AdornerPanel adornerPanel, HandleOrientation orientation) public MarginHandle(DesignItem adornedControlItem, AdornerPanel adornerPanel, HandleOrientation orientation)
{ {
@ -144,11 +149,13 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
/// <param name="handleLength"></param> /// <param name="handleLength"></param>
public void DecideVisiblity(double handleLength) public void DecideVisiblity(double handleLength)
{ {
marginStub.Visibility = handleLength == 0.0 ? Visibility.Visible : Visibility.Hidden; if(ShouldBeVisible){
this.Visibility = handleLength != 0.0 ? Visibility.Visible : Visibility.Hidden; marginStub.Visibility = handleLength == 0.0 ? Visibility.Visible : Visibility.Hidden;
if (this.lineArrow != null){ this.Visibility = handleLength != 0.0 ? Visibility.Visible : Visibility.Hidden;
lineArrow.Visibility = handleLength < 23 ? Visibility.Hidden : Visibility.Visible; if (this.lineArrow != null){
} lineArrow.Visibility = handleLength < 23 ? Visibility.Hidden : Visibility.Visible;
}
}
} }
public override void OnApplyTemplate() public override void OnApplyTemplate()

16
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/DesignSurface.xaml.cs

@ -185,18 +185,18 @@ namespace ICSharpCode.WpfDesign.Designer
public void Copy() public void Copy()
{ {
XamlDesignContext xamlContext = _designContext as XamlDesignContext; XamlDesignContext xamlContext = _designContext as XamlDesignContext;
ISelectionService selection = _designContext.Services.Selection; ISelectionService selectionService = GetService<ISelectionService>();
if(xamlContext != null && selection != null){ if(xamlContext != null && selectionService != null){
xamlContext.XamlEditAction.Copy(selection.SelectedItems); xamlContext.XamlEditAction.Copy(selectionService.SelectedItems);
} }
} }
public void Cut() public void Cut()
{ {
XamlDesignContext xamlContext = _designContext as XamlDesignContext; XamlDesignContext xamlContext = _designContext as XamlDesignContext;
ISelectionService selection = _designContext.Services.Selection; ISelectionService selectionService = GetService<ISelectionService>();
if(xamlContext != null && selection != null){ if(xamlContext != null && selectionService != null){
xamlContext.XamlEditAction.Cut(selection.SelectedItems); xamlContext.XamlEditAction.Cut(selectionService.SelectedItems);
} }
} }
@ -217,8 +217,8 @@ namespace ICSharpCode.WpfDesign.Designer
public bool CanPaste() public bool CanPaste()
{ {
ISelectionService selection = _designContext.Services.Selection; ISelectionService selectionService = GetService<ISelectionService>();
if(selection!=null && selection.SelectedItems.Count!=0){ if(selectionService!=null && selectionService.SelectedItems.Count!=0){
string xaml = Clipboard.GetText(TextDataFormat.Xaml); string xaml = Clipboard.GetText(TextDataFormat.Xaml);
if(xaml != "" && xaml != " ") if(xaml != "" && xaml != " ")
return true; return true;

40
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/MarginHandleExtension.cs

@ -19,7 +19,8 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
[ExtensionServer(typeof(PrimarySelectionExtensionServer))] [ExtensionServer(typeof(PrimarySelectionExtensionServer))]
public class MarginHandleExtension : AdornerProvider public class MarginHandleExtension : AdornerProvider
{ {
MarginHandle leftHandle, topHandle, rightHandle, bottomHandle; private MarginHandle _leftHandle, _topHandle, _rightHandle, _bottomHandle;
protected override void OnInitialized() protected override void OnInitialized()
{ {
base.OnInitialized(); base.OnInitialized();
@ -32,10 +33,10 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
// If the Element is rotated/skewed in the grid, then margin handles do not appear // If the Element is rotated/skewed in the grid, then margin handles do not appear
if (extendedControl.LayoutTransform.Value == Matrix.Identity && extendedControl.RenderTransform.Value == Matrix.Identity) if (extendedControl.LayoutTransform.Value == Matrix.Identity && extendedControl.RenderTransform.Value == Matrix.Identity)
{ {
MarginHandle leftHandle = new MarginHandle(this.ExtendedItem, adornerPanel, HandleOrientation.Left); _leftHandle = new MarginHandle(this.ExtendedItem, adornerPanel, HandleOrientation.Left);
MarginHandle topHandle = new MarginHandle(this.ExtendedItem, adornerPanel, HandleOrientation.Top); _topHandle = new MarginHandle(this.ExtendedItem, adornerPanel, HandleOrientation.Top);
MarginHandle rightHandle = new MarginHandle(this.ExtendedItem, adornerPanel, HandleOrientation.Right); _rightHandle = new MarginHandle(this.ExtendedItem, adornerPanel, HandleOrientation.Right);
MarginHandle bottomHandle = new MarginHandle(this.ExtendedItem, adornerPanel, HandleOrientation.Bottom); _bottomHandle = new MarginHandle(this.ExtendedItem, adornerPanel, HandleOrientation.Bottom);
} }
if (adornerPanel != null) if (adornerPanel != null)
@ -43,6 +44,35 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
} }
} }
} }
public void HideHandles()
{
_leftHandle.Visibility=Visibility.Hidden;
_leftHandle.ShouldBeVisible=false;
_topHandle.Visibility=Visibility.Hidden;
_rightHandle.ShouldBeVisible=false;
_rightHandle.Visibility=Visibility.Hidden;
_rightHandle.ShouldBeVisible=false;
_bottomHandle.Visibility=Visibility.Hidden;
_bottomHandle.ShouldBeVisible=false;
}
public void ShowHandles()
{
_leftHandle.Visibility=Visibility.Visible;
_leftHandle.ShouldBeVisible=true;
_leftHandle.DecideVisiblity(_leftHandle.HandleLength);
_topHandle.Visibility=Visibility.Visible;
_topHandle.ShouldBeVisible=true;
_rightHandle.DecideVisiblity(_rightHandle.HandleLength);
_rightHandle.Visibility=Visibility.Visible;
_rightHandle.ShouldBeVisible=true;
_rightHandle.DecideVisiblity(_rightHandle.HandleLength);
_bottomHandle.Visibility=Visibility.Visible;
_bottomHandle.ShouldBeVisible=true;
_bottomHandle.DecideVisiblity(_bottomHandle.HandleLength);
}
} }
} }

41
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/ResizeThumbExtension.cs

@ -106,6 +106,7 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
else { else {
changeGroup = this.ExtendedItem.Context.OpenGroup("Resize", extendedItemArray); changeGroup = this.ExtendedItem.Context.OpenGroup("Resize", extendedItemArray);
} }
ShowSizeAndHideHandles();
} }
void drag_Changed(DragListener drag) void drag_Changed(DragListener drag)
@ -153,6 +154,7 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
else changeGroup.Commit(); else changeGroup.Commit();
changeGroup = null; changeGroup = null;
} }
HideSizeAndShowHandles();
} }
protected override void OnInitialized() protected override void OnInitialized()
@ -194,5 +196,44 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
r.Visibility = isVisible ? Visibility.Visible : Visibility.Hidden; r.Visibility = isVisible ? Visibility.Visible : Visibility.Hidden;
} }
} }
void ShowSizeAndHideHandles()
{
SizeDisplayExtension sizeDisplay=null;
MarginHandleExtension marginDisplay=null;
foreach(var extension in ExtendedItem.Extensions) {
if (extension is SizeDisplayExtension)
sizeDisplay = extension as SizeDisplayExtension;
if (extension is MarginHandleExtension)
marginDisplay = extension as MarginHandleExtension;
}
if(sizeDisplay!=null) {
sizeDisplay.HeightDisplay.Visibility = Visibility.Visible;
sizeDisplay.WidthDisplay.Visibility = Visibility.Visible;
}
if(marginDisplay!=null)
marginDisplay.HideHandles();
}
void HideSizeAndShowHandles()
{
SizeDisplayExtension sizeDisplay = null;
MarginHandleExtension marginDisplay=null;
foreach (var extension in ExtendedItem.Extensions){
if (extension is SizeDisplayExtension)
sizeDisplay = extension as SizeDisplayExtension;
if (extension is MarginHandleExtension)
marginDisplay = extension as MarginHandleExtension;
}
if (sizeDisplay != null) {
sizeDisplay.HeightDisplay.Visibility = Visibility.Hidden;
sizeDisplay.WidthDisplay.Visibility = Visibility.Hidden;
}
if (marginDisplay !=null ) {
marginDisplay.ShowHandles();
}
}
} }
} }

27
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/SizeDisplayExtension.cs

@ -23,8 +23,17 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
[ExtensionFor(typeof(UIElement))] [ExtensionFor(typeof(UIElement))]
class SizeDisplayExtension : PrimarySelectionAdornerProvider class SizeDisplayExtension : PrimarySelectionAdornerProvider
{ {
HeightDisplay heightDisplay; HeightDisplay _heightDisplay;
WidthDisplay widthDisplay; WidthDisplay _widthDisplay;
public HeightDisplay HeightDisplay{
get { return _heightDisplay; }
}
public WidthDisplay WidthDisplay{
get { return _widthDisplay; }
}
protected override void OnInitialized() protected override void OnInitialized()
{ {
base.OnInitialized(); base.OnInitialized();
@ -32,16 +41,18 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
{ {
RelativePlacement placementHeight = new RelativePlacement(HorizontalAlignment.Right, VerticalAlignment.Stretch); RelativePlacement placementHeight = new RelativePlacement(HorizontalAlignment.Right, VerticalAlignment.Stretch);
placementHeight.XOffset = 10; placementHeight.XOffset = 10;
heightDisplay = new HeightDisplay(); _heightDisplay = new HeightDisplay();
heightDisplay.DataContext = this.ExtendedItem.Component; _heightDisplay.DataContext = this.ExtendedItem.Component;
RelativePlacement placementWidth = new RelativePlacement(HorizontalAlignment.Stretch, VerticalAlignment.Bottom); RelativePlacement placementWidth = new RelativePlacement(HorizontalAlignment.Stretch, VerticalAlignment.Bottom);
placementWidth.YOffset = 10; placementWidth.YOffset = 10;
widthDisplay = new WidthDisplay(); _widthDisplay = new WidthDisplay();
widthDisplay.DataContext = this.ExtendedItem.Component; _widthDisplay.DataContext = this.ExtendedItem.Component;
this.AddAdorners(placementHeight, heightDisplay); this.AddAdorners(placementHeight, _heightDisplay);
this.AddAdorners(placementWidth, widthDisplay); this.AddAdorners(placementWidth, _widthDisplay);
_heightDisplay.Visibility=Visibility.Hidden;
_widthDisplay.Visibility=Visibility.Hidden;
} }
} }
} }

Loading…
Cancel
Save