Browse Source

Replace spaces with tabs.

4.2
Daniel Grunwald 14 years ago
parent
commit
415f4ae274
  1. 20
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/SelectedElementRectangleExtension.cs
  2. 68
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/SizeDisplayExtension.cs
  3. 282
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/StackPanelPlacementSupport.cs

20
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/SelectedElementRectangleExtension.cs

@ -23,18 +23,18 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
public SelectedElementRectangleExtension() public SelectedElementRectangleExtension()
{ {
Rectangle selectionRect = new Rectangle(); Rectangle selectionRect = new Rectangle();
selectionRect.SnapsToDevicePixels = true; selectionRect.SnapsToDevicePixels = true;
selectionRect.Stroke = new SolidColorBrush(Color.FromRgb(0x47, 0x47, 0x47)); selectionRect.Stroke = new SolidColorBrush(Color.FromRgb(0x47, 0x47, 0x47));
selectionRect.StrokeThickness = 1.5; selectionRect.StrokeThickness = 1.5;
selectionRect.IsHitTestVisible = false; selectionRect.IsHitTestVisible = false;
RelativePlacement placement = new RelativePlacement(HorizontalAlignment.Stretch, VerticalAlignment.Stretch); RelativePlacement placement = new RelativePlacement(HorizontalAlignment.Stretch, VerticalAlignment.Stretch);
placement.XOffset = -1; placement.XOffset = -1;
placement.YOffset = -1; placement.YOffset = -1;
placement.WidthOffset = 2; placement.WidthOffset = 2;
placement.HeightOffset = 2; placement.HeightOffset = 2;
this.AddAdorners(placement, selectionRect); this.AddAdorners(placement, selectionRect);
} }
} }
} }

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

@ -17,40 +17,40 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
/// <summary> /// <summary>
/// Display Height/Width on the primary selection /// Display Height/Width on the primary selection
/// </summary> /// </summary>
[ExtensionFor(typeof(UIElement))] [ExtensionFor(typeof(UIElement))]
class SizeDisplayExtension : PrimarySelectionAdornerProvider class SizeDisplayExtension : PrimarySelectionAdornerProvider
{ {
HeightDisplay _heightDisplay; HeightDisplay _heightDisplay;
WidthDisplay _widthDisplay; WidthDisplay _widthDisplay;
public HeightDisplay HeightDisplay{ public HeightDisplay HeightDisplay{
get { return _heightDisplay; } get { return _heightDisplay; }
} }
public WidthDisplay WidthDisplay{ public WidthDisplay WidthDisplay{
get { return _widthDisplay; } get { return _widthDisplay; }
} }
protected override void OnInitialized() protected override void OnInitialized()
{ {
base.OnInitialized(); base.OnInitialized();
if (this.ExtendedItem != null) if (this.ExtendedItem != null)
{ {
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; _heightDisplay.Visibility=Visibility.Hidden;
_widthDisplay.Visibility=Visibility.Hidden; _widthDisplay.Visibility=Visibility.Hidden;
} }
} }
} }
} }

282
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/StackPanelPlacementSupport.cs

@ -18,156 +18,156 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
/// Provides <see cref="IPlacementBehavior"/> for <see cref="StackPanel"/>. /// Provides <see cref="IPlacementBehavior"/> for <see cref="StackPanel"/>.
/// </summary> /// </summary>
[ExtensionFor(typeof (StackPanel), OverrideExtension = typeof (DefaultPlacementBehavior))] [ExtensionFor(typeof (StackPanel), OverrideExtension = typeof (DefaultPlacementBehavior))]
public class StackPanelPlacementSupport : DefaultPlacementBehavior public class StackPanelPlacementSupport : DefaultPlacementBehavior
{ {
private StackPanel _stackPanel; private StackPanel _stackPanel;
private AdornerPanel _adornerPanel; private AdornerPanel _adornerPanel;
private Rectangle _rectangle = new Rectangle(); // Draws a rectangle to indicate the position of insertion. private Rectangle _rectangle = new Rectangle(); // Draws a rectangle to indicate the position of insertion.
private readonly List<Rect> _rects = new List<Rect>(); // Contains the Rect of all the children of StackPanel. private readonly List<Rect> _rects = new List<Rect>(); // Contains the Rect of all the children of StackPanel.
private bool _isItemGettingResized; // Indicates whether any children is getting resized. private bool _isItemGettingResized; // Indicates whether any children is getting resized.
private int _indexToInsert; // Postion where to insert the element. private int _indexToInsert; // Postion where to insert the element.
protected override void OnInitialized() protected override void OnInitialized()
{ {
base.OnInitialized(); base.OnInitialized();
_stackPanel = this.ExtendedItem.View as StackPanel; _stackPanel = this.ExtendedItem.View as StackPanel;
var children = this.ExtendedItem.ContentProperty.CollectionElements; var children = this.ExtendedItem.ContentProperty.CollectionElements;
foreach (var child in children) { foreach (var child in children) {
Point p = child.View.TranslatePoint(new Point(0, 0), this.ExtendedItem.View); Point p = child.View.TranslatePoint(new Point(0, 0), this.ExtendedItem.View);
_rects.Add(new Rect(p, child.View.RenderSize)); _rects.Add(new Rect(p, child.View.RenderSize));
} }
} }
public override void BeginPlacement(PlacementOperation operation) public override void BeginPlacement(PlacementOperation operation)
{ {
base.BeginPlacement(operation); base.BeginPlacement(operation);
if (_rects.Count > 0) if (_rects.Count > 0)
_rects.Clear(); _rects.Clear();
/* Add Rect of all children to _rects */ /* Add Rect of all children to _rects */
var children = this.ExtendedItem.ContentProperty.CollectionElements; var children = this.ExtendedItem.ContentProperty.CollectionElements;
foreach (var child in children) { foreach (var child in children) {
Point p = child.View.TranslatePoint(new Point(0, 0), this.ExtendedItem.View); Point p = child.View.TranslatePoint(new Point(0, 0), this.ExtendedItem.View);
_rects.Add(new Rect(p, child.View.RenderSize)); _rects.Add(new Rect(p, child.View.RenderSize));
} }
if (_adornerPanel != null && this.ExtendedItem.Services.DesignPanel.Adorners.Contains(_adornerPanel)) if (_adornerPanel != null && this.ExtendedItem.Services.DesignPanel.Adorners.Contains(_adornerPanel))
this.ExtendedItem.Services.DesignPanel.Adorners.Remove(_adornerPanel); this.ExtendedItem.Services.DesignPanel.Adorners.Remove(_adornerPanel);
/* Place the Rectangle */ /* Place the Rectangle */
_adornerPanel = new AdornerPanel(); _adornerPanel = new AdornerPanel();
_rectangle = new Rectangle(); _rectangle = new Rectangle();
_adornerPanel.SetAdornedElement(this.ExtendedItem.View, this.ExtendedItem); _adornerPanel.SetAdornedElement(this.ExtendedItem.View, this.ExtendedItem);
_adornerPanel.Children.Add(_rectangle); _adornerPanel.Children.Add(_rectangle);
this.ExtendedItem.Services.DesignPanel.Adorners.Add(_adornerPanel); this.ExtendedItem.Services.DesignPanel.Adorners.Add(_adornerPanel);
} }
public override void EndPlacement(PlacementOperation operation) public override void EndPlacement(PlacementOperation operation)
{ {
base.EndPlacement(operation); base.EndPlacement(operation);
if (_adornerPanel != null && this.ExtendedItem.Services.DesignPanel.Adorners.Contains(_adornerPanel)) if (_adornerPanel != null && this.ExtendedItem.Services.DesignPanel.Adorners.Contains(_adornerPanel))
this.ExtendedItem.Services.DesignPanel.Adorners.Remove(_adornerPanel); this.ExtendedItem.Services.DesignPanel.Adorners.Remove(_adornerPanel);
} }
public override void EnterContainer(PlacementOperation operation) public override void EnterContainer(PlacementOperation operation)
{ {
base.EnterContainer(operation); base.EnterContainer(operation);
foreach (var info in operation.PlacedItems) { foreach (var info in operation.PlacedItems) {
info.Item.Properties[FrameworkElement.MarginProperty].Reset(); info.Item.Properties[FrameworkElement.MarginProperty].Reset();
info.Item.Properties[FrameworkElement.HorizontalAlignmentProperty].Reset(); info.Item.Properties[FrameworkElement.HorizontalAlignmentProperty].Reset();
info.Item.Properties[FrameworkElement.VerticalAlignmentProperty].Reset(); info.Item.Properties[FrameworkElement.VerticalAlignmentProperty].Reset();
} }
_rectangle.Visibility = Visibility.Visible; _rectangle.Visibility = Visibility.Visible;
} }
public override void LeaveContainer(PlacementOperation operation) public override void LeaveContainer(PlacementOperation operation)
{ {
base.LeaveContainer(operation); base.LeaveContainer(operation);
/* Hide the rectangle in case switching to the other container /* Hide the rectangle in case switching to the other container
* otherwise it will show up intersecting with the container */ * otherwise it will show up intersecting with the container */
_rectangle.Visibility = Visibility.Hidden; _rectangle.Visibility = Visibility.Hidden;
} }
public override void SetPosition(PlacementInformation info) public override void SetPosition(PlacementInformation info)
{ {
base.SetPosition(info); base.SetPosition(info);
var resizeExtensions = info.Item.Extensions.OfType<ResizeThumbExtension>(); var resizeExtensions = info.Item.Extensions.OfType<ResizeThumbExtension>();
if (resizeExtensions != null && resizeExtensions.Count() != 0) { if (resizeExtensions != null && resizeExtensions.Count() != 0) {
var resizeExtension = resizeExtensions.First(); var resizeExtension = resizeExtensions.First();
_isItemGettingResized = resizeExtension.IsResizing; _isItemGettingResized = resizeExtension.IsResizing;
} }
if (_stackPanel != null && !_isItemGettingResized) { if (_stackPanel != null && !_isItemGettingResized) {
if (_stackPanel.Orientation == Orientation.Vertical) { if (_stackPanel.Orientation == Orientation.Vertical) {
var offset = FindHorizontalRectanglePlacementOffset(info.Bounds); var offset = FindHorizontalRectanglePlacementOffset(info.Bounds);
DrawHorizontalRectangle(offset); DrawHorizontalRectangle(offset);
} else { } else {
var offset = FindVerticalRectanglePlacementOffset(info.Bounds); var offset = FindVerticalRectanglePlacementOffset(info.Bounds);
DrawVerticalRectangle(offset); DrawVerticalRectangle(offset);
} }
ChangePostionTo(info.Item.View, _indexToInsert); ChangePostionTo(info.Item.View, _indexToInsert);
} }
} }
private void ChangePostionTo(UIElement element, int index) private void ChangePostionTo(UIElement element, int index)
{ {
int elementIndex = 0; int elementIndex = 0;
if (_stackPanel.Children.Contains(element)) if (_stackPanel.Children.Contains(element))
elementIndex = _stackPanel.Children.IndexOf(element); elementIndex = _stackPanel.Children.IndexOf(element);
if (index > elementIndex) if (index > elementIndex)
index--; index--;
_stackPanel.Children.Remove(element); _stackPanel.Children.Remove(element);
_stackPanel.Children.Insert(index, element); _stackPanel.Children.Insert(index, element);
} }
private double FindHorizontalRectanglePlacementOffset(Rect rect) private double FindHorizontalRectanglePlacementOffset(Rect rect)
{ {
_rects.Sort((r1, r2) => r1.Top.CompareTo(r2.Top)); _rects.Sort((r1, r2) => r1.Top.CompareTo(r2.Top));
var itemCenter = (rect.Top + rect.Bottom)/2; var itemCenter = (rect.Top + rect.Bottom)/2;
for (int i = 0; i < _rects.Count; i++) { for (int i = 0; i < _rects.Count; i++) {
var rectCenter = (_rects[i].Top + _rects[i].Bottom)/2; var rectCenter = (_rects[i].Top + _rects[i].Bottom)/2;
if (rectCenter >= itemCenter) { if (rectCenter >= itemCenter) {
_indexToInsert = i; _indexToInsert = i;
return _rects[i].Top; return _rects[i].Top;
} }
} }
_indexToInsert = _rects.Count; _indexToInsert = _rects.Count;
return _rects.Count > 0 ? _rects.Last().Bottom : 0; return _rects.Count > 0 ? _rects.Last().Bottom : 0;
} }
private double FindVerticalRectanglePlacementOffset(Rect rect) private double FindVerticalRectanglePlacementOffset(Rect rect)
{ {
_rects.Sort((r1, r2) => r1.Left.CompareTo(r2.Left)); _rects.Sort((r1, r2) => r1.Left.CompareTo(r2.Left));
var itemCenter = (rect.Left + rect.Right)/2; var itemCenter = (rect.Left + rect.Right)/2;
for (int i = 0; i < _rects.Count; i++) { for (int i = 0; i < _rects.Count; i++) {
var rectCenter = (_rects[i].Left + _rects[i].Top)/2; var rectCenter = (_rects[i].Left + _rects[i].Top)/2;
if (rectCenter >= itemCenter) { if (rectCenter >= itemCenter) {
_indexToInsert = i; _indexToInsert = i;
return _rects[i].Left; return _rects[i].Left;
} }
} }
_indexToInsert = _rects.Count; _indexToInsert = _rects.Count;
return _rects.Count > 0 ? _rects.Last().Right : 0; return _rects.Count > 0 ? _rects.Last().Right : 0;
} }
private void DrawHorizontalRectangle(double offset) private void DrawHorizontalRectangle(double offset)
{ {
_rectangle.Height = 2; _rectangle.Height = 2;
_rectangle.Fill = Brushes.Black; _rectangle.Fill = Brushes.Black;
var placement = new RelativePlacement(HorizontalAlignment.Stretch, VerticalAlignment.Top) {YOffset = offset}; var placement = new RelativePlacement(HorizontalAlignment.Stretch, VerticalAlignment.Top) {YOffset = offset};
AdornerPanel.SetPlacement(_rectangle, placement); AdornerPanel.SetPlacement(_rectangle, placement);
} }
private void DrawVerticalRectangle(double offset) private void DrawVerticalRectangle(double offset)
{ {
_rectangle.Width = 2; _rectangle.Width = 2;
_rectangle.Fill = Brushes.Black; _rectangle.Fill = Brushes.Black;
var placement = new RelativePlacement(HorizontalAlignment.Left, VerticalAlignment.Stretch) {XOffset = offset}; var placement = new RelativePlacement(HorizontalAlignment.Left, VerticalAlignment.Stretch) {XOffset = offset};
AdornerPanel.SetPlacement(_rectangle, placement); AdornerPanel.SetPlacement(_rectangle, placement);
} }
} }
} }

Loading…
Cancel
Save