File: System\Activities\Core\Presentation\StartSymbol.xaml.cs
Project: ndp\cdf\src\NetFx40\Tools\System.Activities.Core.Presentation\System.Activities.Core.Presentation.csproj (System.Activities.Core.Presentation)
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation.  All rights reserved.
//------------------------------------------------------------
 
namespace System.Activities.Core.Presentation
{
    using System.Linq;
    using System.Runtime;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Input;
    using System.Activities.Presentation;
    using System.Activities.Presentation.View;
    using System.Activities.Presentation.Model;
 
    partial class StartSymbol
    {
 
        public static readonly DependencyProperty TextProperty =
            DependencyProperty.Register("Text", typeof(string), typeof(StartSymbol));
 
        public string Text
        {
            get { return (string)GetValue(TextProperty); }
            set { SetValue(TextProperty, value); }
        }
 
        public static StartSymbol CreateStartSymbol(EditingContext context)
        {
            StartSymbol start = new StartSymbol();
            FakeRoot fakeRoot = new FakeRoot { StartNode = new StartNode() };
            ModelTreeManager manager = context.Services.GetService<ModelTreeManager>();
            start.ModelItem = new FakeModelItemImpl(manager, typeof(FakeRoot), fakeRoot, null).Properties["StartNode"].Value;
            start.Name = "StartSymbol";
            start.Focusable = true;
            start.Context = context;
            start.DataContext = start;
            return start;
        }
 
        StartSymbol()
        {
            InitializeComponent();
        }
 
        protected override void OnContextMenuOpening(ContextMenuEventArgs e)
        {
            e.Handled = true;
        }
 
        protected override void OnPreviewKeyDown(KeyEventArgs e)
        {
            if (e.Key == Key.Delete)
            {
                Selection selection = this.Context.Items.GetValue<Selection>();
 
                if (selection.SelectionCount == 1)
                {
                    Fx.Assert(selection.PrimarySelection.Parent.ItemType == typeof(FakeRoot), "StartNode should have a fakeroot.");
                    // Avoid calling the delete command, if only the start node is selected.
                    e.Handled = true;
                }
            }
 
            base.OnPreviewKeyDown(e);
        }
    }
 
 
}