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 void AddEurekaService() { EurekaSettingsViewModel settings = new EurekaSettingsViewModel(); settings.ServiceName = "Eureka"; settings.Url = "http://<host>:<port>/eureka/apps"; if (!appBrowserViewModel.ViewContext.ShowDialog(settings)) { return; } EurekaService service = new EurekaService(); service.Name = settings.ServiceName; service.Url = settings.Url; environment.AddService(service); IServiceViewModel serviceViewModel = Services.FirstOrDefault(s => s.Service == service); appBrowserViewModel.MainForm.ModulesTree.SelectedModule = serviceViewModel; }