예제 #1
0
        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;
        }