// The Nova Project by Ken Beckett.
// Copyright (C) 2007-2012 Inevitable Software, all rights reserved.
// Released under the Common Development and Distribution License, CDDL-1.0: http://opensource.org/licenses/cddl1.php
using System.Collections.Generic;
using System.Windows;
using System.Windows.Input;
using System.Windows.Media;
using Nova.CodeDOM;
namespace Nova.UI
{
/// <summary>
/// The view model for a <see cref="CodeDOM.CommentBase"/>.
/// </summary>
public abstract class CommentBaseVM : AnnotationVM
{
#region /* CONSTRUCTORS */
/// <summary>
/// Create a view model instance for the specified <see cref="CodeDOM.CommentBase"/>.
/// </summary>
protected CommentBaseVM(CommentBase commentBase, Dictionary<CodeObject, CodeObjectVM> dictionary)
: base(commentBase, dictionary)
{ }
#endregion
#region /* PROPERTIES */
/// <summary>
/// The underlying <see cref="CodeDOM.CommentBase"/> model.
/// </summary>
public CommentBase CommentBase
{
get { return (CommentBase)CodeObject; }
}
#endregion
#region /* RENDERING */
/// <summary>
/// Determines if all comments should be hidden.
/// </summary>
public static bool HideAll;
/// <summary>
/// Determines if all comment delimiters should be hidden.
/// </summary>
public static bool HideDelimiters;
public override Brush BorderBrush
{
get { return Brushes.LightGray; }
}
public override Brush BackgroundBrush
{
get { return Brushes.White; }
}
public override int BorderHPad
{
get { return 2; }
}
public override int BorderVPad
{
get { return 1; }
}
public override void RenderToolTip(CodeRenderer renderer, RenderFlags flags)
{
TypeRefBaseVM.RenderType(renderer, CodeObject.GetType(), flags, this);
RenderMessagesInToolTip(renderer, flags);
}
#endregion
#region /* COMMANDS */
public static readonly RoutedCommand HideAllCommand = new RoutedCommand("Hide All Comments", typeof(CommentBaseVM));
public static readonly RoutedCommand HideDelimitersCommand = new RoutedCommand("Hide Comment Delimiters", typeof(CommentBaseVM));
public static new void BindCommands(Window window)
{
WPFUtil.AddCommandBinding(window, HideAllCommand, hideAll_Executed);
WPFUtil.AddCommandBinding(window, HideDelimitersCommand, hideDelimiters_Executed);
}
private static void hideAll_Executed(object sender, ExecutedRoutedEventArgs e)
{
HideAll = !HideAll;
CodeRenderer.ReRenderAll();
}
private static void hideDelimiters_Executed(object sender, ExecutedRoutedEventArgs e)
{
HideDelimiters = !HideDelimiters;
CodeRenderer.ReRenderAll();
}
#endregion
}
}