ExtensionWindowResizeGrip.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / Tools / System.Activities.Presentation / System / Activities / Presentation / View / ExtensionWindowResizeGrip.cs / 1305376 / ExtensionWindowResizeGrip.cs

                            //---------------------------------------------------------------- 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//---------------------------------------------------------------
namespace System.Activities.Presentation.View
{ 
    using System.ComponentModel;
    using System.Diagnostics.CodeAnalysis; 
    using System.Runtime; 
    using System.Windows;
    using System.Windows.Controls; 
    using System.Windows.Input;
    using System.Windows.Media;

    //This class is visual representation of ResizeGrip like control, which is used with ExtenstionWindows to allow 
    //resizing. Actual resize logic is handled by ExtensionSurface class
    [TemplatePart(Name = "PART_ResizeGrip")] 
    class ExtensionWindowResizeGrip : Control 
    {
        public static readonly DependencyProperty IconProperty = 
            DependencyProperty.Register("Icon", typeof(DrawingBrush), typeof(ExtensionWindowResizeGrip));

        ExtensionWindow parent;
        ExtensionSurface surface; 
        Point offset;
 
        [SuppressMessage(FxCop.Category.Performance, FxCop.Rule.InitializeReferenceTypeStaticFieldsInline, 
            Justification = "Overriding metadata for dependency properties in static constructor is the way suggested by WPF")]
        static ExtensionWindowResizeGrip() 
        {
            DefaultStyleKeyProperty.OverrideMetadata(
                typeof(ExtensionWindowResizeGrip),
                new FrameworkPropertyMetadata(typeof(ExtensionWindowResizeGrip))); 
        }
 
        public DrawingBrush Icon 
        {
            get { return (DrawingBrush)GetValue(IconProperty); } 
            set { SetValue(IconProperty, value); }
        }

        protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) 
        {
            base.OnMouseLeftButtonDown(e); 
            if (this.parent.IsResizable) 
            {
                this.Cursor = Cursors.SizeNWSE; 
                this.offset = e.GetPosition(this);
                CaptureMouse();
            }
        } 

        protected override void OnMouseMove(MouseEventArgs args) 
        { 
            base.OnMouseMove(args);
            if (args.LeftButton == MouseButtonState.Pressed && this.IsMouseCaptured) 
            {
                Point currentPosition = Mouse.GetPosition(this.parent);
                currentPosition.Offset(this.offset.X, this.offset.Y);
                Size newSize = new Size(); 
                newSize.Width = Math.Min(Math.Max(this.parent.MinWidth, currentPosition.X), this.parent.MaxWidth);
                newSize.Height = Math.Min(Math.Max(this.parent.MinHeight, currentPosition.Y), this.parent.MaxHeight); 
                System.Diagnostics.Debug.WriteLine("NewSize = (" + newSize.Width + "," + newSize.Height + ")"); 
                this.surface.SetSize(this.parent, newSize);
            } 
        }

        protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
        { 
            base.OnMouseLeftButtonUp(e);
            Mouse.OverrideCursor = null; 
            Mouse.Capture(null); 
        }
 
        protected override void OnVisualParentChanged(DependencyObject oldParent)
        {
            base.OnVisualParentChanged(oldParent);
            if (!DesignerProperties.GetIsInDesignMode(this) && 
                !ExtensionWindow.TryGetParentExtensionWindow(this, out this.parent, out this.surface))
            { 
                Fx.Assert("ExtensionWindowHeader cannot be used outside ExtensionWindow"); 
            }
        } 

    }
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//---------------------------------------------------------------- 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//---------------------------------------------------------------
namespace System.Activities.Presentation.View
{ 
    using System.ComponentModel;
    using System.Diagnostics.CodeAnalysis; 
    using System.Runtime; 
    using System.Windows;
    using System.Windows.Controls; 
    using System.Windows.Input;
    using System.Windows.Media;

    //This class is visual representation of ResizeGrip like control, which is used with ExtenstionWindows to allow 
    //resizing. Actual resize logic is handled by ExtensionSurface class
    [TemplatePart(Name = "PART_ResizeGrip")] 
    class ExtensionWindowResizeGrip : Control 
    {
        public static readonly DependencyProperty IconProperty = 
            DependencyProperty.Register("Icon", typeof(DrawingBrush), typeof(ExtensionWindowResizeGrip));

        ExtensionWindow parent;
        ExtensionSurface surface; 
        Point offset;
 
        [SuppressMessage(FxCop.Category.Performance, FxCop.Rule.InitializeReferenceTypeStaticFieldsInline, 
            Justification = "Overriding metadata for dependency properties in static constructor is the way suggested by WPF")]
        static ExtensionWindowResizeGrip() 
        {
            DefaultStyleKeyProperty.OverrideMetadata(
                typeof(ExtensionWindowResizeGrip),
                new FrameworkPropertyMetadata(typeof(ExtensionWindowResizeGrip))); 
        }
 
        public DrawingBrush Icon 
        {
            get { return (DrawingBrush)GetValue(IconProperty); } 
            set { SetValue(IconProperty, value); }
        }

        protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) 
        {
            base.OnMouseLeftButtonDown(e); 
            if (this.parent.IsResizable) 
            {
                this.Cursor = Cursors.SizeNWSE; 
                this.offset = e.GetPosition(this);
                CaptureMouse();
            }
        } 

        protected override void OnMouseMove(MouseEventArgs args) 
        { 
            base.OnMouseMove(args);
            if (args.LeftButton == MouseButtonState.Pressed && this.IsMouseCaptured) 
            {
                Point currentPosition = Mouse.GetPosition(this.parent);
                currentPosition.Offset(this.offset.X, this.offset.Y);
                Size newSize = new Size(); 
                newSize.Width = Math.Min(Math.Max(this.parent.MinWidth, currentPosition.X), this.parent.MaxWidth);
                newSize.Height = Math.Min(Math.Max(this.parent.MinHeight, currentPosition.Y), this.parent.MaxHeight); 
                System.Diagnostics.Debug.WriteLine("NewSize = (" + newSize.Width + "," + newSize.Height + ")"); 
                this.surface.SetSize(this.parent, newSize);
            } 
        }

        protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
        { 
            base.OnMouseLeftButtonUp(e);
            Mouse.OverrideCursor = null; 
            Mouse.Capture(null); 
        }
 
        protected override void OnVisualParentChanged(DependencyObject oldParent)
        {
            base.OnVisualParentChanged(oldParent);
            if (!DesignerProperties.GetIsInDesignMode(this) && 
                !ExtensionWindow.TryGetParentExtensionWindow(this, out this.parent, out this.surface))
            { 
                Fx.Assert("ExtensionWindowHeader cannot be used outside ExtensionWindow"); 
            }
        } 

    }
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK