using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.Composition; using System.Threading.Tasks; using System.Windows; using DTS.Common.Base; using DTS.Common.Events; using DTS.Common.Interface; using Microsoft.Practices.Prism.Events; using Microsoft.Practices.Prism.Interactivity.InteractionRequest; using Microsoft.Practices.Unity; using DTS.Common.Utils; using Microsoft.Practices.Prism.Regions; using Microsoft.Practices.Prism.ViewModel; namespace DTS.Viewer { [Export(typeof(IShellView))] [PartCreationPolicy(CreationPolicy.Shared)] public class ViewerShellViewModel : NotificationObject, IViewerShellViewModel { //BaseViewModel, public IViewerShellView View { get; private set; } private IEventAggregator _eventAggregator { get; set; } private IRegionManager _regionManager; private IUnityContainer _unityContainer { get; set; } public InteractionRequest NotificationRequest { get; private set; } public InteractionRequest ConfirmationRequest { get; private set; } /// /// Creates a new instance of the TechnologyDomainEditViewModel. /// /// The ShellView View. /// The logical placeholder defined within the application's UI (in the shell or within views) into which views are displayed. /// The EventAggregator which allows different components to publish/subscribe to events without being coupled to each other. /// The unityContainer. public ViewerShellViewModel(IViewerShellView view, IRegionManager regionManager, IEventAggregator eventAggregator, IUnityContainer unityContainer) //: base(regionManager, eventAggregator, unityContainer) { View = view; View.DataContext = this; NotificationRequest = new InteractionRequest(); ConfirmationRequest = new InteractionRequest(); _eventAggregator = eventAggregator; _unityContainer = unityContainer; _regionManager = regionManager; _eventAggregator.GetEvent().Subscribe(OnRaiseNotification); _unityContainer .RegisterType(); _unityContainer .RegisterType(new ContainerControlledLifetimeManager()); } #region Methods public void Initialize() { int i = 10; } public void Initialize(object parameter) { int i = 22; } public void Initialize(object parameter, object model) { } bool IBaseViewModel.IsBusy { get; set; } public void Activated() { var s = String.Empty; } /// /// Private Event handler for RaiseNotification event. /// private void OnRaiseNotification(NotificationContentEventArgs eventArgsWithTitle) { // The NotificationRequest.Raise triggers the Invoke() method of the .Infrastructure.PopupWindowAction object to show the .Infrastructure.NotificationWindow window // Notification object expects a NotificationContentEventArgsWithoutTitle object and a Title string. var eventArgsWithoutTitle = new NotificationContentEventArgs(eventArgsWithTitle.Message, eventArgsWithTitle.MessageDetails, eventArgsWithTitle.Image); NotificationRequest.Raise(new Notification { Content = eventArgsWithoutTitle, Title = eventArgsWithTitle.Title }); } #endregion #region ContextRegion /// /// Returns all regions in the main grid /// /// public List GetRegions() { var items = new List(); Utils.GetChildrenByName(((ViewerShellView)View).MainShell, "Region", ref items); return items; } public Object ContextMainRegion { get { return ((ViewerShellView)View).MainRegion.Content; } set { ((ViewerShellView)View).MainRegion.Content = value; OnPropertyChanged("ContextMainRegion"); } } #endregion #region Properties private bool _isMenuIncluded = false; public bool IsMenuIncluded { get { return _isMenuIncluded; } set { _isMenuIncluded = value; OnPropertyChanged("IsMenuIncluded"); } } private bool _isNavigationIncluded = false; public bool IsNavigationIncluded { get { return _isNavigationIncluded; } set { _isNavigationIncluded = value; OnPropertyChanged("IsNavigationIncluded"); } } /// /// Gets the HeaderInfo. /// public string HeaderInfo { get { return "MainRegion"; } } #endregion Properties /// ///Occurs when a property value changes. /// public event PropertyChangedEventHandler PropertyChanged; private void OnPropertyChanged(string propertyName) { PropertyChangedEventHandler eventHandler = this.PropertyChanged; if (eventHandler != null) { eventHandler(this, new PropertyChangedEventArgs(propertyName)); } } public bool IsBusy { get { throw new NotImplementedException(); } } public bool IsDirty { get { throw new NotImplementedException(); } } public void Cleanup() { throw new NotImplementedException(); } public Task CleanupAsync() { throw new NotImplementedException(); } public Task InitializeAsync() { throw new NotImplementedException(); } public Task InitializeAsync(object parameter) { throw new NotImplementedException(); } } }