//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------- namespace System.Activities.Presentation.Internal.PropertyEditing.Selection { using System; using System.Globalization; using System.Windows; using System.Activities.Presentation; using Blend = System.Activities.Presentation.Internal.PropertyEditing.FromExpression.Framework.PropertyInspector; // <summary> // Helper class used to manage the selection stop behavior of a given CategoryContainer's basic // and advanced sections. It deals with both expanding and collapsing of the specified section // as well as knowing how to get a SelectionPath leading to its heading. // </summary> internal class CategorySelectionStop : ISelectionStop { private CiderCategoryContainer _parent; private DependencyProperty _expansionProperty; private SelectionPath _selectionPath; private string _description; // <summary> // Creates a new selection stop logic for the specified CiderCategoryContainer. // </summary> // <param name="parent">CategoryContainer to wrap around</param> // <param name="isAdvanced">True if this selection stop wraps around the // advanced set of properties, false otherwise.</param> [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2208:InstantiateArgumentExceptionsCorrectly")] public CategorySelectionStop(CiderCategoryContainer parent, bool isAdvanced) { if (parent == null) { throw FxTrace.Exception.ArgumentNull("parent"); } if (parent.Category == null) { throw FxTrace.Exception.ArgumentNull("parent.Category"); } _parent = parent; _expansionProperty = isAdvanced ? Blend.CategoryContainer.AdvancedSectionPinnedProperty : Blend.CategoryContainer.ExpandedProperty; _selectionPath = CategoryContainerSelectionPathInterpreter.Instance.ConstructSelectionPath(parent.Category.CategoryName, isAdvanced); _description = isAdvanced ? string.Format( CultureInfo.CurrentCulture, System.Activities.Presentation.Internal.Properties.Resources.PropertyEditing_SelectionStatus_AdvancedCategory, parent.Category.CategoryName) : string.Format( CultureInfo.CurrentCulture, System.Activities.Presentation.Internal.Properties.Resources.PropertyEditing_SelectionStatus_Category, parent.Category.CategoryName); } // <summary> // Gets or sets a flag indicating whether the basic/advanced section is expanded // </summary> public bool IsExpanded { get { return (bool)_parent.GetValue(_expansionProperty); } set { _parent.SetValue(_expansionProperty, value); } } // <summary> // Returns true // </summary> public bool IsExpandable { get { return true; } } // <summary> // Gets the SelectionPath to the contained CategoryContainer section // </summary> public SelectionPath Path { get { return _selectionPath; } } // <summary> // Gets a description of the contained category container // to expose through automation // </summary> public string Description { get { return _description; } } } } |