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();
        }
Esempio n. 2
0
        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();
        }
Esempio n. 3
0
        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);
        }