diff Chronosv2/source/Presentation/ViewModel/ShortcutViewModel.cs @ 10:443821e55f06

Initial cleaned up add from Codeplex files
author stevenh7776 stevenhollidge@hotmail.com
date Tue, 21 Feb 2012 17:25:44 +0700
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Chronosv2/source/Presentation/ViewModel/ShortcutViewModel.cs	Tue Feb 21 17:25:44 2012 +0700
@@ -0,0 +1,208 @@
+/*
+The MIT License
+
+Copyright (c) 2009-2010. Carlos Guzmán Álvarez. http://chronoswpf.codeplex.com/
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+
+using System;
+using System.ComponentModel;
+using Chronos.Presentation.Core.Services;
+using Chronos.Presentation.Core.ViewModel;
+using Chronos.Presentation.Core.Windows;
+using NLog;
+using nRoute.Components;
+
+namespace Chronos.Presentation.ViewModel
+{
+    /// <summary>
+    /// Base class for shortcut viewmodel implementations
+    /// </summary>
+    public abstract class ShortcutViewModel 
+        : ClosableViewModel, IShortcutViewModel
+    {
+        #region · NotifyPropertyChanged Cached Instances ·
+
+        private static readonly PropertyChangedEventArgs IconStyleChangedArgs   = CreateArgs<ShortcutViewModel>(x => x.IconStyle);
+        private static readonly PropertyChangedEventArgs TargetChangedArgs      = CreateArgs<ShortcutViewModel>(x => x.Target);
+        private static readonly PropertyChangedEventArgs ParametersChangedArgs  = CreateArgs<ShortcutViewModel>(x => x.Parameters);
+
+        #endregion
+
+        #region · Logger ·
+
+        private static Logger Logger = LogManager.GetCurrentClassLogger();
+
+        #endregion
+
+        #region · Fields ·
+
+        private string target;
+        private string parameters;
+        private string iconStyle;
+
+        #region · Commands ·
+
+        private ActionCommand openCommand;
+
+        #endregion
+
+        #endregion
+
+        #region · Commands ·
+
+        /// <summary>
+        /// Gets the open command.
+        /// </summary>
+        /// <value>The open command.</value>
+        public ActionCommand OpenCommand
+        {
+            get
+            {
+                if (this.openCommand == null)
+                {
+                    this.openCommand = new ActionCommand(() => OnOpen());
+                }
+
+                return this.openCommand;
+            }
+        }
+
+        #endregion
+
+        #region · Properties ·
+
+        /// <summary>
+        /// Gets or sets the icon style.
+        /// </summary>
+        /// <value>The icon style.</value>
+        public virtual string IconStyle
+        {
+            get { return this.iconStyle; }
+            set
+            {
+                if (this.iconStyle != value)
+                {
+                    this.iconStyle = value;
+                    this.NotifyPropertyChanged(IconStyleChangedArgs);
+                }
+            }
+        }
+
+        /// <summary>
+        /// Gets or sets the shortcut target.
+        /// </summary>
+        /// <value>The shortcut target.</value>
+        public virtual string Target
+        {
+            get { return this.target; }
+            set
+            {
+                if (this.target != value)
+                {
+                    this.target = value;
+                    this.NotifyPropertyChanged(TargetChangedArgs);
+                }
+            }
+        }
+
+        /// <summary>
+        /// Gets or sets the shortcut navigation parameters
+        /// </summary>
+        public virtual string Parameters
+        {
+            get { return this.parameters; }
+            set
+            {
+                if (this.parameters != value)
+                {
+                    this.parameters = value;
+                    this.NotifyPropertyChanged(ParametersChangedArgs);
+                }
+            }
+        }
+
+        #endregion
+
+        #region · Constructors ·
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="ShortcutViewModel"/> class.
+        /// </summary>
+        protected ShortcutViewModel()
+            : base()
+        {
+        }
+
+        #endregion
+
+        #region · Command Actions ·
+
+        /// <summary>
+        /// Called when the <see cref="OpenCommand"/>  is executed.
+        /// </summary>
+        protected abstract void OnOpen();
+
+        #endregion
+
+        #region · Overriden Methods ·
+
+        /// <summary>
+        /// Determines whether the view related to this view model can be closed.
+        /// </summary>
+        /// <returns>
+        ///   <c>true</c> if the related view can be closed; otherwise, <c>false</c>.
+        /// </returns>
+        public override bool CanClose()
+        {
+            return true;
+        }
+
+        /// <summary>
+        /// Called when the related view is being closed.
+        /// </summary>
+        public override void Close()
+        {            
+            IShowMessageViewService showMessageService = this.GetViewService<IShowMessageViewService>();
+
+            showMessageService.ButtonSetup  = DialogButton.YesNo;
+            showMessageService.Caption      = "Eliminar acceso directo";
+            showMessageService.Text         =
+                String.Format(
+                    "¿Está seguro de que desea eliminar permanentemente este acceso directo? {0}{1}",
+                        Environment.NewLine,
+                            this.Title);
+
+            if (showMessageService.ShowMessage() == DialogResult.Yes)
+            {
+                Logger.Debug("Eliminando acceso directo '{0}'", this.Target);
+
+                base.Close();
+
+                this.target         = null;
+                this.parameters     = null;
+                this.iconStyle      = null;
+                this.openCommand    = null;
+            }
+        }
+
+        #endregion
+    }
+}