File: cdf\src\NetFx40\Tools\System.Activities.Presentation\System\Activities\Presentation\View\PropertyEntryToEditorOptionConverter.cs
Project: ndp\System.Data.csproj (System.Data)
//----------------------------------------------------------------
// Copyright (c) Microsoft Corporation.  All rights reserved.
//----------------------------------------------------------------
 
namespace System.Activities.Presentation.View
{
    using System;
    using System.Collections.Generic;
    using System.Diagnostics.CodeAnalysis;
    using System.Globalization;
    using System.Reflection;
    using System.Windows.Data;
    using System.Activities.Presentation.Model;
    using System.Activities.Presentation.PropertyEditing;
    using System.Activities.Presentation.Internal.PropertyEditing.Model;
    using System.Runtime;
 
    sealed class PropertyEntryToEditorOptionConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            PropertyEntry propertyEntry = value as PropertyEntry;
            if (null == propertyEntry)
            {
                PropertyValue propertyValue = value as PropertyValue;
                if (null != propertyValue)
                {
                    propertyEntry = propertyValue.ParentProperty;
                }
            }
 
            ModelPropertyEntry modelPropertyEntry = propertyEntry as ModelPropertyEntry;
 
            ModelProperty modelProperty = null;
            if (modelPropertyEntry != null)
            {
                modelProperty = modelPropertyEntry.FirstModelProperty;
            }
 
            if (modelProperty == null)
            {
                return Binding.DoNothing;
            }
 
            string optionName = parameter as string;
            if (optionName == null)
            {
                return Binding.DoNothing;
            }
 
            object optionValue;
            if (EditorOptionAttribute.TryGetOptionValue(modelProperty.Attributes, optionName, out optionValue))
            {
                return optionValue;
            }
 
            return Binding.DoNothing;
        }
 
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            // It is simply impossible to convert back.
            throw FxTrace.Exception.AsError(new NotSupportedException());
        }
    }
}