public ProjectTemplateListPageNavigationViewModel(
            IObservableContext observableContext)
        {
            _observableContext = observableContext;
            _pageSize          = 20;
            _pagesOnScreen     = 5;
            _currentPage       = 0;
            _observableContext.Paging.OnNext(new ProjectElementPageFilter(1, _pageSize));

            NextPageCommand = new RelayCommand(
                () => SelectNextPage(), () => Pages != null && _currentPage < _pageCount - _pagesOnScreen);

            PrevPageCommand = new RelayCommand(
                () => SelectPreviousPage(), () => Pages != null && _currentPage > 1);

            observableContext.TemplatesProvider
            .ObserveOnCurrentSyncronizationContext()
            .Subscribe(TemplateProviderChanged);

            observableContext.TemplateProviderLoaded
            .OfType <IPagingProjectElementDataProvider>()
            .ObserveOnCurrentSyncronizationContext()
            .Subscribe(
                TemplateProviderDataLoaded
                );
        }
Esempio n. 2
0
        public ProjectTemplateGroupViewModel(
            IProjectGroupElement groupElement,
            IObservableContext observableContext
            )
        {
            _groupDataProviderSubject =
                SimpleIoc.Default.GetInstanceWithoutCaching <ISubject <IProjectElementDataProvider> >();
            _groupElement      = groupElement;
            _observableContext = observableContext;


            if (_groupElement.HasChildGroups)
            {
                // Emulate items exists to display expand button
                _children = new ProjectTemplateGroupViewModel[] { null };
                // Subscribe on event when template group expanded to  start loading
                // Subscribe on event when template group expanded to load
                _groupDataProviderSubject
                .LoadSubscribe(
                    ProjectGroupChildBeginLoading,
                    ProjectGroupLoadObservable,
                    ProjectGroupChildLoaded,
                    ProjectGroupChildLoadedError
                    );
            }
        }
 public NewProjectDialogViewModel(IObservableContext observableContext)
 {
     _observableContext     = observableContext;
     ProjectTemplateSources = new[]
     {
         new ProjectTemplateGroupViewModel(new RecentProjectTemplateSource(), _observableContext),
         new ProjectTemplateGroupViewModel(new LoadedProjectTemplateSource(), _observableContext),
         new ProjectTemplateGroupViewModel(new OnlineProjectTemplateSource(), _observableContext)
     };
 }
Esempio n. 4
0
        private void repository_DocumentRemoved(object sender, ItemRemovedEventArgs <IDocument> e)
        {
            IObservableContext observable = e.Item.As <IObservableContext>();

            if (observable != null)
            {
                observable.ItemChanged  -= observable_ItemChanged;
                observable.ItemInserted -= observable_ItemInserted;
                observable.ItemRemoved  -= observable_ItemRemoved;
                observable.Reloaded     -= observable_Reloaded;
            }

            if (m_fileWatcherService != null && !m_reloading)
            {
                m_fileWatcherService.Unregister(e.Item.Uri.LocalPath);
            }
        }
Esempio n. 5
0
        public NewProjectParamsModelView(IObservableContext observableContext, ISelectFolderDialog selectFolderDialog)
        {
            _observableContext  = observableContext;
            _selectFolderDialog = selectFolderDialog;
            MessengerInstance.Register <ICreateProjectProperties>(this, CreateProjectPropertiesChanged);
            ProjectPath = _selectFolderDialog.SelectedFolder;
            _observableContext.ItemsLoading.ObserveOnCurrentSyncronizationContext()
            .Subscribe(loading =>
            {
                _loading = loading;
                RaisePropertyChanged(() => IsEditEnabled);
            }
                       );

            _createProjectProperties = null;

            BrowseProjectPathCommand = new RelayCommand(() =>
            {
                if (_selectFolderDialog.ShowDialog())
                {
                    ProjectPath = _selectFolderDialog.SelectedFolder;
                }
            });
        }
        public NewProjectGlobalFilterViewModel(IObservableContext observableContext
                                               )
        {
            _observableContext = observableContext;

            _filterHistory        = new ObservableCollection <string>();
            FilterHistory         = CollectionViewSource.GetDefaultView(_filterHistory);
            FilterHistory.Filter += item =>
            {
                var i = item as string;
                return(!string.IsNullOrEmpty(i) && i.Contains(FilterValue));
            };


            _observableContext.TemplatesProvider
            .ObserveOnCurrentSyncronizationContext()
            .Subscribe(provider =>
            {
                var sortableProvider = provider as ISortableSource;
                if (sortableProvider != null)
                {
                    SortDecorators = sortableProvider.AvailableSorts.ToArray();
                    if (SortDecorators.Any())
                    {
                        SortDecorator = SortDecorators[0];
                    }
                    else
                    {
                        SortDecorator = EmptySortDecorator.Value;
                    }
                }
            });

            FrameworkVersions = new
                                object[]
            {
                new FrameworkItemVersionViewModel(".NET Framework 2.0", new Version(2, 0, 0, 0)),
                new FrameworkItemVersionViewModel(".NET Framework 3.0", new Version(3, 0, 0, 0)),
                new FrameworkItemVersionViewModel(".NET Framework 3.5", new Version(3, 5, 0, 0)),
                new FrameworkItemVersionViewModel(".NET Framework 4", new Version(4, 0, 0, 0)),
                new FrameworkItemVersionViewModel(".NET Framework 4.5", new Version(4, 5, 0, 0)),
                new FrameworkItemVersionViewModel(".NET Framework 4.5.1", new Version(4, 5, 1, 0)),
                new FrameworkItemVersionViewModel(".NET Framework 4.5.2", new Version(4, 5, 2, 0)),
                new FrameworkItemVersionViewModel(".NET Framework 4.6", new Version(4, 6, 0, 0)),
                new FrameworkItemVersionViewModel(".NET Framework 4.6.1", new Version(4, 6, 1, 0)),
                new FrameworkItemLinkViewModel("Get more frameworks", "http://getdotnet.azurewebsites.net/target-dotnet-platforms.html")
            };

            FrameworkVersion =
                FrameworkVersions.OfType <FrameworkItemVersionViewModel>().FirstOrDefault(c => c.FrameworkVersion > new Version(4, 5, 0));

            FilterValue = "";


            SearchCommand         = new RelayCommand(Search, () => !IsSearching);
            ResetSearchCommand    = new RelayCommand(ResetSearch, () => IsSearching);
            SetFocusSearchCommand = new RelayCommand(
                () =>
            {
                IsFilterFocused = true;
                IsFilterFocused = false;
            }
                );
        }
        public ProjectTemplateListViewModel(
            IObservableContext observableContext
            )
        {
            _observableContext = observableContext;


            _observableContext.ItemsLoading
            .ObserveOnCurrentSyncronizationContext()
            .Subscribe(loading =>
            {
                Debug.WriteLine("IsItemsLoading : {0}", loading);
                IsItemsLoading = loading;
            });

            _observableContext.GroupsLoading
            .ObserveOnCurrentSyncronizationContext()
            .Subscribe(loading =>
            {
                Debug.WriteLine("IsGroupsLoading : {0}", loading);
                IsGroupsLoading = loading;
            });


            _subscription =
                Observable.CombineLatest(
                    _observableContext.TemplatesProvider,
                    _observableContext.NameContains,
                    _observableContext.FrameworkFilter,
                    _observableContext.Paging,
                    _observableContext.Sorting,
                    (provider, filter, framework, paging, sort) =>
                    new Func <IEnumerable <IProjectElement> >(
                        () =>
            {
                Debug.WriteLine("--- Begin Loading ---");
                try
                {
                    var filterableProvider = provider as IFilterableSource;
                    if (filterableProvider != null)
                    {
                        filterableProvider.Apply(new[] { filter, paging, framework });
                    }

                    var sortableProvider = provider as ISortableSource;
                    if (sortableProvider != null && sort != null)
                    {
                        sortableProvider.Apply(new[] { sort });
                    }


                    var load = provider.Load().ToArray();
                    _observableContext.TemplateProviderLoaded.OnNext(provider);
                    return(load);
                }
                catch (Exception e)
                {
                    Debug.WriteLine(e);
                }
                return(new IProjectElement[] {});
            }
                        ))
                .LoadSubscribe(
                    ProjectTemplatesBeginLoad,
                    ProjectTemplatedLoadObservable,
                    ProjectTemplatesLoaded,
                    ProjectTemplatesLoadError
                    );

            _observableContext.FrameworkFilter.OnNext(new ProjectElementFrameworkVersionFilter(new Version(4, 5, 0)));

            SwitchViewCommand = new RelayCommand <string>(p => ProjectListView = p);
            SwitchViewCommand.Execute("LargeIcons");
        }
        /// <summary>
        ///     Initializes a new instance of the ViewModelLocator class.
        /// </summary>
        public ViewModelLocator()
        {
            ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);

            if (ViewModelBase.IsInDesignModeStatic)
            {
                // Create design time view services and models
            }

            if (!SimpleIoc.Default.IsRegistered <IMessenger>())
            {
                SimpleIoc.Default.Register(() => Messenger.Default);
            }


            if (!SimpleIoc.Default.IsRegistered <ISubject <IProjectElementDataProvider> >())
            {
                SimpleIoc.Default.Register <ISubject <IProjectElementDataProvider> >(
                    () => new Subject <IProjectElementDataProvider>()
                    );
            }

            _observableContext =
                new NewProjectDialogObservableContext(
                    new Subject <IProjectElementFilter>(),
                    new Subject <IProjectElementFilter>(),
                    new Subject <IProjectElementDataProvider>(),
                    new Subject <IProjectElementFilter>(),
                    new Subject <ISortDecorator>(),
                    new Subject <bool>(),
                    new Subject <bool>(),
                    new Subject <IProjectElementDataProvider>(),
                    new Subject <IProjectElement>()
                    );


            _observableContext.TemplatesProvider.Subscribe((a) =>
            {
                Debug.WriteLine("=== Templates Provider Event ===");
            });


            _observableContext.FrameworkFilter.Subscribe((a) =>
            {
                Debug.WriteLine("=== FrameworkFilter Event ===");
            });

            _observableContext.ItemsLoading.Subscribe((a) =>
            {
                Debug.WriteLine("=== ItemsLoading Event ===");
            });

            _observableContext.NameContains.Subscribe((a) =>
            {
                Debug.WriteLine("=== NameContrains Event ===");
            });

            _observableContext.Paging.Subscribe((a) =>
            {
                Debug.WriteLine("=== Paging Event ===");
            });


            _observableContext.Sorting.Subscribe((a) =>
            {
                Debug.WriteLine("=== Sorting Event ===");
            });

            _observableContext.TemplateProviderLoaded.Subscribe((a) =>
            {
                Debug.WriteLine("=== TemplateProviderLoaded Event ===");
            });

            _observableContext.TemplateSelected.Subscribe((a) =>
            {
                Debug.WriteLine("=== TemplateSelected Event ===");
            });

            if (!SimpleIoc.Default.IsRegistered <IObservableContext>())
            {
                SimpleIoc.Default.Register(() => _observableContext);
            }

            if (!SimpleIoc.Default.IsRegistered <ISelectFolderDialog>())
            {
                SimpleIoc.Default.Register <ISelectFolderDialog>(
                    () => new SelectFolderDialogWinApi("Select project folder",
                                                       Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Projects")));
            }

            SimpleIoc.Default.Register <MainViewModel>();
            SimpleIoc.Default.Register <NewProjectDialogViewModel>();
            SimpleIoc.Default.Register <ProjectTemplateListViewModel>();
            SimpleIoc.Default.Register <NewProjectGlobalFilterViewModel>();
            SimpleIoc.Default.Register <ProjectTemplateListPageNavigationViewModel>();
            SimpleIoc.Default.Register <NewProjectParamsModelView>();
        }