SelectionGlyph.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Common / AuthoringOM / Design / Glyphs / SelectionGlyph.cs / 1305376 / SelectionGlyph.cs

                            namespace System.Workflow.ComponentModel.Design 
{
    using System;
    using System.Drawing;
    using System.Drawing.Drawing2D; 
    using System.Windows.Forms;
 
    #region Glyphs 

 
    #region Class SelectionGlyph
    public abstract class SelectionGlyph : DesignerGlyph
    {
        public override Rectangle GetBounds(ActivityDesigner designer, bool activated) 
        {
            if (designer == null) 
                throw new ArgumentNullException("designer"); 

            Rectangle rectangle = designer.Bounds; 
            rectangle.Inflate(WorkflowTheme.CurrentTheme.AmbientTheme.SelectionSize.Width / 2, WorkflowTheme.CurrentTheme.AmbientTheme.SelectionSize.Height / 2);
            return rectangle;
        }
 
        protected override void OnPaint(Graphics graphics, bool activated, AmbientTheme ambientTheme, ActivityDesigner designer)
        { 
            ActivityDesignerPaint.DrawSelection(graphics, GetBounds(designer, activated), IsPrimarySelection, WorkflowTheme.CurrentTheme.AmbientTheme.SelectionSize, GetGrabHandles(designer)); 
        }
 
        public override int Priority
        {
            get
            { 
                return DesignerGlyph.SelectionPriority;
            } 
        } 

        public abstract bool IsPrimarySelection { get;} 

        public virtual Rectangle[] GetGrabHandles(ActivityDesigner designer)
        {
            Size selectionSize = WorkflowTheme.CurrentTheme.AmbientTheme.SelectionSize; 
            Size grabHandleSize = new Size(selectionSize.Width, selectionSize.Height);
            Rectangle selectionRect = GetBounds(designer, false); 
            selectionRect.Inflate(selectionSize.Width, selectionSize.Height); 

            //we need grab handles only in case this activity is an immediate child of a free-form activity 
            //otherwise, no grab handles

            ActivityDesigner parentDesigner = designer.ParentDesigner;
            Rectangle[] grabHandles = null; 
            if (parentDesigner != null && parentDesigner is FreeformActivityDesigner)
            { 
                grabHandles = new Rectangle[8]; 
                grabHandles[0] = new Rectangle(selectionRect.Location, grabHandleSize);
                grabHandles[1] = new Rectangle(new Point(selectionRect.Left + (selectionRect.Width - grabHandleSize.Width) / 2, selectionRect.Top), grabHandleSize); 
                grabHandles[2] = new Rectangle(selectionRect.Right - grabHandleSize.Width, selectionRect.Top, grabHandleSize.Width, grabHandleSize.Height);
                grabHandles[3] = new Rectangle(new Point(selectionRect.Right - grabHandleSize.Width, selectionRect.Top + (selectionRect.Height - grabHandleSize.Height) / 2), grabHandleSize);
                grabHandles[4] = new Rectangle(selectionRect.Right - grabHandleSize.Width, selectionRect.Bottom - grabHandleSize.Height, grabHandleSize.Width, grabHandleSize.Height);
                grabHandles[5] = new Rectangle(new Point(selectionRect.Left + (selectionRect.Width - grabHandleSize.Width) / 2, selectionRect.Bottom - grabHandleSize.Height), grabHandleSize); 
                grabHandles[6] = new Rectangle(selectionRect.Left, selectionRect.Bottom - grabHandleSize.Height, grabHandleSize.Width, grabHandleSize.Height);
                grabHandles[7] = new Rectangle(new Point(selectionRect.Left, selectionRect.Top + (selectionRect.Height - grabHandleSize.Height) / 2), grabHandleSize); 
                return grabHandles; 
            }
            else 
            {
                grabHandles = new Rectangle[1];
                grabHandles[0] = new Rectangle(selectionRect.Location, grabHandleSize);
            } 

            return grabHandles; 
        } 
    }
    #endregion 


    #endregion
} 


// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.


                        

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