public DockerImageListViewModel(AppBrowserViewModel appBrowserViewModel, DockerService service) { this.appBrowserViewModel = appBrowserViewModel; this.service = service; ModuleName = "Images"; imagesMapper = new ObservableCollectionMapper <DockerImage, DockerImageViewModel>( image => new DockerImageViewModel(service, image), viewModel => viewModel.Image, (image, viewModel) => viewModel.Update(), (viewModel1, viewModel2) => { int r = string.CompareOrdinal(viewModel1.RepoTagsAsText, viewModel2.RepoTagsAsText); if (r == 0) { r = string.CompareOrdinal(viewModel1.RepoDigestsAsText, viewModel2.RepoDigestsAsText); } if (r == 0) { r = string.CompareOrdinal(viewModel1.Id, viewModel2.Id); } return(r); } ); RefreshCommand = new BasicCommand(() => service.Connected, o => service.Refresh()); DeleteImagesCommand = new BasicCommand(() => service.Connected && SelectedImages.Count > 0, o => DeleteImages()); SelectedImages.CollectionChanged += (sender, args) => { DeleteImagesCommand.UpdateState(); }; service.StageChanged += () => appBrowserViewModel.ViewContext.Invoke(Update); Update(); }
public DockerServiceViewModel(AppBrowserViewModel appBrowserViewModel, DockerService service) { this.appBrowserViewModel = appBrowserViewModel; this.service = service; ModuleName = service.Name; imageList = new DockerImageListViewModel(appBrowserViewModel, service); containerList = new DockerContainerListViewModel(appBrowserViewModel, service); ConnectCommand = new BasicCommand(() => !service.Connected, o => service.Connect()); DisconnectCommand = new BasicCommand(() => service.Connected, o => service.Disconnect()); RefreshCommand = new BasicCommand(() => service.Connected, o => service.Refresh()); service.StageChanged += () => appBrowserViewModel.ViewContext.Invoke(Update); Update(); }
public DockerContainerListViewModel(AppBrowserViewModel appBrowserViewModel, DockerService service) { this.appBrowserViewModel = appBrowserViewModel; this.service = service; ModuleName = "Containers"; containersMapper = new ObservableCollectionMapper <DockerContainer, DockerContainerViewModel>( container => new DockerContainerViewModel(service, container), viewModel => viewModel.Container, (container, viewModel) => viewModel.Update(), (viewModel1, viewModel2) => { int r = string.CompareOrdinal(viewModel1.Image, viewModel2.Image); if (r == 0) { r = string.CompareOrdinal(viewModel1.Id, viewModel2.Id); } return(r); } ); RefreshCommand = new BasicCommand(() => service.Connected, o => service.Refresh()); StartContainersCommand = new BasicCommand(() => service.Connected && SelectedContainers.Count > 0, o => StartContainers()); StopContainersCommand = new BasicCommand(() => service.Connected && SelectedContainers.Count > 0, o => StopContainers()); SelectedContainers.CollectionChanged += (sender, args) => { StartContainersCommand.UpdateState(); StopContainersCommand.UpdateState(); }; service.StageChanged += () => appBrowserViewModel.ViewContext.Invoke(Update); service.LogChanged += UpdateLog; Update(); timer = new Timer(TimerCallback, null, 0, 500); }