// Copyright (C) Stichting Deltares and State of the Netherlands 2025. All rights reserved. // // This file is part of Riskeer. // // Riskeer is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with this program. If not, see . // // All names, logos, and references to "Deltares" are registered trademarks of // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. using System; using System.ComponentModel; using System.Windows.Input; using System.Windows.Media; using Core.Components.GraphSharp.Commands; using GraphSharp.Controls; namespace Core.Components.GraphSharp.Data { /// /// Class describing the vertex to show in the . /// public class PointedTreeElementVertex : INotifyPropertyChanged { private ICommand selectedItemCommand; private bool isSelected; public event PropertyChangedEventHandler PropertyChanged; /// /// Creates a new instance of . /// /// The content of the vertex. /// The fill color of the vertex. /// The line color of the vertex. /// The line width of the vertex. /// The type of the vertex. /// Indicator whether the vertex is selectable. /// Thrown when is null. public PointedTreeElementVertex(string content, Color fillColor, Color lineColor, int lineWidth, PointedTreeVertexType type, bool isSelectable) { if (content == null) { throw new ArgumentNullException(nameof(content)); } Content = content; FillColor = new SolidColorBrush(fillColor); LineColor = new SolidColorBrush(lineColor); LineWidth = lineWidth; Type = type; IsSelectable = isSelectable; } /// /// Gets the content of the vertex. /// public string Content { get; } /// /// Gets the fill color of the vertex. /// public Brush FillColor { get; } /// /// Gets the line color of the vertex. /// public Brush LineColor { get; } /// /// Gets the line width of the vertex. /// public int LineWidth { get; } /// /// Gets the type of the vertex. /// public PointedTreeVertexType Type { get; } /// /// Gets whether the vertex is selectable. /// public bool IsSelectable { get; } /// /// Gets whether the vertex is selected. /// public bool IsSelected { get { return isSelected; } set { isSelected = value; OnPropertyChanged(nameof(IsSelected)); } } /// /// Gets the command for selecting the vertex. /// public ICommand VertexSelectedCommand { get { return selectedItemCommand ?? (selectedItemCommand = new VertexSelectedCommand(this)); } } private void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } }