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 EurekaServiceViewModel(AppBrowserViewModel appBrowserViewModel, EurekaService service) { this.appBrowserViewModel = appBrowserViewModel; this.service = service; appMapper = new ObservableCollectionMapper <Tuple <EurekaApplication, EurekaApplicationInstance>, EurekaApplicationViewModel>( tuple => new EurekaApplicationViewModel(tuple.Item1, tuple.Item2), viewModel => Tuple.Create(viewModel.Application, viewModel.Instance), (tuple, viewModel) => viewModel.Update(), (viewModel1, viewModel2) => { int r = string.CompareOrdinal(viewModel1.AppName, viewModel2.AppName); if (r == 0) { r = string.CompareOrdinal(viewModel1.HostName, viewModel2.HostName); } if (r == 0) { r = string.CompareOrdinal(viewModel1.InstanceId, viewModel2.InstanceId); } return(r); } ); ConnectCommand = new BasicCommand(() => !service.Connected, o => service.Connect()); DisconnectCommand = new BasicCommand(() => service.Connected, o => service.Disconnect()); RefreshCommand = new BasicCommand(() => service.Connected, o => service.RefreshApplications()); DeregisterApplicationsCommand = new BasicCommand(() => service.Connected && SelectedApplications.Count > 0, o => DeregisterApplications()); SelectedApplications.CollectionChanged += (sender, args) => { DeregisterApplicationsCommand.UpdateState(); }; service.StateChanged += () => appBrowserViewModel.ViewContext.Invoke(Update); Update(); }
public MainForm(AppBrowserViewModel appBrowserViewModel) { this.appBrowserViewModel = appBrowserViewModel; this.viewModel = appBrowserViewModel.MainForm; DataContext = viewModel; XamlReader.Load(this); ModulesTree.DataContext = viewModel.ModulesTree; viewModel.ModulesTree.PropertyChanged += ModulesTreeOnPropertyChanged; }
public void TestEnvironmentCreation() { AppBrowserViewModel appBrowserViewModel = new AppBrowserViewModel(new AppBrowser(), new MockViewContext()); appBrowserViewModel.MainForm.AddEnvironment(); appBrowserViewModel.Environments[0].AddDockerService(); appBrowserViewModel.Environments[0].AddEurekaService(); Assert.That(appBrowserViewModel.Environments[0].Services.Select(s => s.ModuleName).ToArray(), Is.EqualTo(new string[] { "Docker", "Eureka" })); Assert.That(appBrowserViewModel.MainForm.ModulesTree.Modules.Select(s => s.ModuleName).ToArray(), Is.EqualTo(new string[] { "New Environment" })); Assert.That(appBrowserViewModel.MainForm.ModulesTree.Modules[0].GetSubModules().Select(s => s.ModuleName).ToArray(), Is.EqualTo(new string[] { "Docker", "Eureka" })); Assert.That(appBrowserViewModel.MainForm.ModulesTree.SelectedModule, Is.InstanceOf(typeof(EurekaServiceViewModel))); }
static void Main(string[] args) { Application application = new Application(Platform.Detect); AppBrowser appBrowser = new AppBrowser(); EtoViewContext viewContext = new EtoViewContext(); AppBrowserViewModel appBrowserViewModel = new AppBrowserViewModel(appBrowser, viewContext); MainForm mainForm = new MainForm(appBrowserViewModel); viewContext.MainForm = mainForm; application.Run(mainForm); }
public AppEnvironmentViewModel(AppBrowserViewModel appBrowserViewModel, AppEnvironment environment) { this.appBrowserViewModel = appBrowserViewModel; this.environment = environment; serviceMapper = new ObservableCollectionMapper <IService, IServiceViewModel>( CreateServiceViewModel, viewModel => viewModel.Service, (service, viewModel) => viewModel.Update(), (viewModel1, viewModel2) => string.CompareOrdinal(viewModel1.ModuleName, viewModel2.ModuleName) ); environment.ServiceListChanged += Update; Services.CollectionChanged += (sender, args) => SubModulesChanged?.Invoke(); 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); }
public ModulesTreeViewModel(AppBrowserViewModel appBrowserViewModel) { this.appBrowserViewModel = appBrowserViewModel; appBrowserViewModel.Environments.CollectionChanged += (sender, args) => Update(); Update(); }