CaseDesigner.xaml.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 / NetFx40 / Tools / System.Activities.Core.Presentation / System / Activities / Core / Presentation / CaseDesigner.xaml.cs / 1305376 / CaseDesigner.xaml.cs

                            //---------------------------------------------------------------- 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//---------------------------------------------------------------

namespace System.Activities.Core.Presentation 
{
    using System.Activities.Presentation; 
    using System.Activities.Presentation.View; 
    using System.Activities.Presentation.Metadata;
    using System.Activities.Presentation.Model; 
    using System.Collections.ObjectModel;
    using System.ComponentModel;
    using System.Runtime;
    using System.Windows; 
    using System.Windows.Controls;
    using System.Windows.Data; 
    using System.Windows.Input; 
    using System.Windows.Threading;
 
    partial class CaseDesigner
    {
        public CaseDesigner()
        { 
            this.InitializeComponent();
            this.Loaded += (sender, e) => 
            { 
                Selection selection = this.Context.Items.GetValue();
                if (selection != null) 
                {
                    ModelItem primarySelection = selection.PrimarySelection;
                    this.ExpandState = SwitchDesigner.IsDescendantOfCase(this.ModelItem, primarySelection);
 
                    if (this.ExpandState)
                    { 
                        // If current focus is at another part, we need to focus this designer 
                        // to trigger selection changed, then this part will expand and another
                        // expanded part will collapse. Then we focus on the activity it contains 
                        // if there is one.
                        Keyboard.Focus((IInputElement)this.ModelItem.View);
                        if (primarySelection.View != null && this.ModelItem != primarySelection)
                        { 
                            Keyboard.Focus((IInputElement)primarySelection.View);
                        } 
                    } 
                }
            }; 
        }

        // When the CaseDesigner is collapsed, its CaseKeyBox will be disabled. Thus CaseKeyBox.RegainFocus() doesn't
        // work in such situation, we must re-focus the CaseDesigner to expand it first to re-enable the CaseKeyBox. 
        // This situation happens when inputting and invalid case key value and clicking on another Case or Default in
        // the same parent SwitchDesigner. 
        public Action FocusSelf 
        {
            get 
            {
                return (ckb) =>
                    {
                        Keyboard.Focus((IInputElement)this); 
                    };
            } 
        } 

        public static void RegisterMetadata(AttributeTableBuilder builder) 
        {
            Type type = typeof(ModelItemKeyValuePair<,>);
            builder.AddCustomAttributes(type, new DesignerAttribute(typeof(CaseDesigner)));
            builder.AddCustomAttributes(type, type.GetProperty("Value"), BrowsableAttribute.No); 
            builder.AddCustomAttributes(type, new ActivityDesignerOptionsAttribute { AllowDrillIn = false });
        } 
 
        void AttachDisplayName()
        { 
            AttachedPropertiesService attachedPropertiesService = this.Context.Services.GetService();
            Fx.Assert(attachedPropertiesService != null, "AttachedPropertiesService is not available.");
            Type modelItemType = this.ModelItem.ItemType;
            foreach (AttachedProperty property in attachedPropertiesService.GetAttachedProperties(modelItemType)) 
            {
                if (property.Name == "DisplayName" && property.OwnerType == modelItemType) 
                { 
                    return;
                } 
            }
            AttachedProperty displayNameProperty = new AttachedProperty
            {
                Name = "DisplayName", 
                OwnerType = modelItemType,
                Getter = (modelItem) => { return "Case"; } 
            }; 
            attachedPropertiesService.AddProperty(displayNameProperty);
        } 

        protected override void OnModelItemChanged(object newItem)
        {
            base.OnModelItemChanged(newItem); 
            this.AttachDisplayName();
        } 
 
        protected override void OnMouseDown(MouseButtonEventArgs e)
        { 
            if (e.LeftButton == MouseButtonState.Pressed && e.ClickCount == 2)
            {
                SwitchTryCatchDesignerHelper.MakeParentRootDesigner(this);
                e.Handled = true; 
            }
            else if (e.LeftButton == MouseButtonState.Pressed) 
            { 
                Keyboard.Focus(this);
                e.Handled = true; 
            }
            else if (e.RightButton == MouseButtonState.Pressed)
            {
                if (this.ShowExpanded) 
                {
                    Keyboard.Focus(this); 
                } 
                e.Handled = true;
            } 
        }

        protected override void OnMouseUp(MouseButtonEventArgs e)
        { 
            // avoid context menu upon right-click when it's collapsed
            if (!this.ShowExpanded && e.RightButton == MouseButtonState.Released) 
            { 
                e.Handled = true;
            } 
        }
    }
}

// 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