ConfigErrorGlyph.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 / ConfigErrorGlyph.cs / 1305376 / ConfigErrorGlyph.cs

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

    #region Class ConfigErrorGlyph 
    //Class is internal but not sealed as we dont expect the ActivityDesigner writers to supply their own
    //Glyph instead based on designer actions the smart tag will be shown
    //Exception: StripItemConfigErrorGlyph
    public class ConfigErrorGlyph : DesignerGlyph 
    {
        private static ConfigErrorGlyph defaultConfigErrorGlyph = null; 
 
        internal static ConfigErrorGlyph Default
        { 
            get
            {
                if (defaultConfigErrorGlyph == null)
                    defaultConfigErrorGlyph = new ConfigErrorGlyph(); 
                return defaultConfigErrorGlyph;
            } 
        } 

        public override bool CanBeActivated 
        {
            get
            {
                return true; 
            }
        } 
 
        public override int Priority
        { 
            get
            {
                return DesignerGlyph.ConfigErrorPriority;
            } 
        }
 
        public override Rectangle GetBounds(ActivityDesigner designer, bool activated) 
        {
            if (designer == null) 
                throw new ArgumentNullException("designer");

            Size configErrorSize = WorkflowTheme.CurrentTheme.AmbientTheme.GlyphSize;
            Size margin = WorkflowTheme.CurrentTheme.AmbientTheme.Margin; 
            Point configErrorLocation = new Point(designer.Bounds.Right - configErrorSize.Width - margin.Width / 2, designer.Bounds.Top - configErrorSize.Height + margin.Height);
            Rectangle bounds = new Rectangle(configErrorLocation, configErrorSize); 
 
            if (activated)
            { 
                bounds.Width *= 2;
                AmbientTheme ambientTheme = WorkflowTheme.CurrentTheme.AmbientTheme;
                bounds.Inflate(ambientTheme.Margin.Width / 2, ambientTheme.Margin.Height / 2);
            } 

            return bounds; 
        } 

        protected override void OnPaint(Graphics graphics, bool activated, AmbientTheme ambientTheme, ActivityDesigner designer) 
        {
            Rectangle bounds = GetBounds(designer, false);
            Rectangle activatedBounds = GetBounds(designer, activated);
            Region clipRegion = null; 
            Region oldClipRegion = graphics.Clip;
            try 
            { 
                if (oldClipRegion != null)
                { 
                    clipRegion = oldClipRegion.Clone();
                    if (activated)
                        clipRegion.Union(activatedBounds);
                    graphics.Clip = clipRegion; 
                }
 
                if (activated) 
                {
                    graphics.FillRectangle(SystemBrushes.ButtonFace, activatedBounds); 
                    graphics.DrawRectangle(SystemPens.ControlDarkDark, activatedBounds.Left, activatedBounds.Top, activatedBounds.Width - 1, activatedBounds.Height - 1);

                    activatedBounds.X += bounds.Width + ambientTheme.Margin.Width;
                    activatedBounds.Width -= (bounds.Width + 2 * ambientTheme.Margin.Width); 

                    using (GraphicsPath dropDownIndicator = ActivityDesignerPaint.GetScrollIndicatorPath(activatedBounds, ScrollButton.Down)) 
                    { 
                        graphics.FillPath(SystemBrushes.ControlText, dropDownIndicator);
                        graphics.DrawPath(SystemPens.ControlText, dropDownIndicator); 
                    }
                }

                ActivityDesignerPaint.DrawImage(graphics, AmbientTheme.ConfigErrorImage, bounds, DesignerContentAlignment.Fill); 
            }
            finally 
            { 
                if (clipRegion != null)
                { 
                    graphics.Clip = oldClipRegion;
                    clipRegion.Dispose();
                }
            } 
        }
 
        protected override void OnActivate(ActivityDesigner designer) 
        {
            if (designer != null) 
            {
                if (designer.DesignerActions.Count > 0)
                {
                    Rectangle bounds = GetBounds(designer, false); 
                    Point location = designer.ParentView.LogicalPointToScreen(new Point(bounds.Left, bounds.Bottom));
                    DesignerHelpers.ShowDesignerVerbs(designer, location, DesignerHelpers.GetDesignerActionVerbs(designer, designer.DesignerActions)); 
                } 
            }
        } 
    }
    #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