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 15 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 @@ -39,8 +39,7 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
readonly Orientation orientation;
readonly GridUnitSelector unitSelector;
static readonly SolidColorBrush bgBrush;
static readonly SolidColorBrush selBrush;
static readonly SolidColorBrush bgBrush;
public const double RailSize = 10;
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 @@ -83,6 +83,11 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
MarginHandle mar=(MarginHandle)d;
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)
{
@ -144,11 +149,13 @@ namespace ICSharpCode.WpfDesign.Designer.Controls @@ -144,11 +149,13 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
/// <param name="handleLength"></param>
public void DecideVisiblity(double handleLength)
{
marginStub.Visibility = handleLength == 0.0 ? Visibility.Visible : Visibility.Hidden;
this.Visibility = handleLength != 0.0 ? Visibility.Visible : Visibility.Hidden;
if (this.lineArrow != null){
lineArrow.Visibility = handleLength < 23 ? Visibility.Hidden : Visibility.Visible;
}
if(ShouldBeVisible){
marginStub.Visibility = handleLength == 0.0 ? Visibility.Visible : Visibility.Hidden;
this.Visibility = handleLength != 0.0 ? Visibility.Visible : Visibility.Hidden;
if (this.lineArrow != null){
lineArrow.Visibility = handleLength < 23 ? Visibility.Hidden : Visibility.Visible;
}
}
}
public override void OnApplyTemplate()

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

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

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

@ -19,7 +19,8 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions @@ -19,7 +19,8 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
[ExtensionServer(typeof(PrimarySelectionExtensionServer))]
public class MarginHandleExtension : AdornerProvider
{
MarginHandle leftHandle, topHandle, rightHandle, bottomHandle;
private MarginHandle _leftHandle, _topHandle, _rightHandle, _bottomHandle;
protected override void OnInitialized()
{
base.OnInitialized();
@ -32,10 +33,10 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions @@ -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 (extendedControl.LayoutTransform.Value == Matrix.Identity && extendedControl.RenderTransform.Value == Matrix.Identity)
{
MarginHandle leftHandle = new MarginHandle(this.ExtendedItem, adornerPanel, HandleOrientation.Left);
MarginHandle topHandle = new MarginHandle(this.ExtendedItem, adornerPanel, HandleOrientation.Top);
MarginHandle rightHandle = new MarginHandle(this.ExtendedItem, adornerPanel, HandleOrientation.Right);
MarginHandle bottomHandle = new MarginHandle(this.ExtendedItem, adornerPanel, HandleOrientation.Bottom);
_leftHandle = new MarginHandle(this.ExtendedItem, adornerPanel, HandleOrientation.Left);
_topHandle = new MarginHandle(this.ExtendedItem, adornerPanel, HandleOrientation.Top);
_rightHandle = new MarginHandle(this.ExtendedItem, adornerPanel, HandleOrientation.Right);
_bottomHandle = new MarginHandle(this.ExtendedItem, adornerPanel, HandleOrientation.Bottom);
}
if (adornerPanel != null)
@ -43,6 +44,35 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions @@ -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 @@ -106,6 +106,7 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
else {
changeGroup = this.ExtendedItem.Context.OpenGroup("Resize", extendedItemArray);
}
ShowSizeAndHideHandles();
}
void drag_Changed(DragListener drag)
@ -153,6 +154,7 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions @@ -153,6 +154,7 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
else changeGroup.Commit();
changeGroup = null;
}
HideSizeAndShowHandles();
}
protected override void OnInitialized()
@ -194,5 +196,44 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions @@ -194,5 +196,44 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
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 @@ -23,8 +23,17 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
[ExtensionFor(typeof(UIElement))]
class SizeDisplayExtension : PrimarySelectionAdornerProvider
{
HeightDisplay heightDisplay;
WidthDisplay widthDisplay;
HeightDisplay _heightDisplay;
WidthDisplay _widthDisplay;
public HeightDisplay HeightDisplay{
get { return _heightDisplay; }
}
public WidthDisplay WidthDisplay{
get { return _widthDisplay; }
}
protected override void OnInitialized()
{
base.OnInitialized();
@ -32,16 +41,18 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions @@ -32,16 +41,18 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
{
RelativePlacement placementHeight = new RelativePlacement(HorizontalAlignment.Right, VerticalAlignment.Stretch);
placementHeight.XOffset = 10;
heightDisplay = new HeightDisplay();
heightDisplay.DataContext = this.ExtendedItem.Component;
_heightDisplay = new HeightDisplay();
_heightDisplay.DataContext = this.ExtendedItem.Component;
RelativePlacement placementWidth = new RelativePlacement(HorizontalAlignment.Stretch, VerticalAlignment.Bottom);
placementWidth.YOffset = 10;
widthDisplay = new WidthDisplay();
widthDisplay.DataContext = this.ExtendedItem.Component;
_widthDisplay = new WidthDisplay();
_widthDisplay.DataContext = this.ExtendedItem.Component;
this.AddAdorners(placementHeight, heightDisplay);
this.AddAdorners(placementWidth, widthDisplay);
this.AddAdorners(placementHeight, _heightDisplay);
this.AddAdorners(placementWidth, _widthDisplay);
_heightDisplay.Visibility=Visibility.Hidden;
_widthDisplay.Visibility=Visibility.Hidden;
}
}
}

Loading…
Cancel
Save