public async Task Edit()
        {
            DialogWindow w = new DialogWindow();

            w.Title = "Edit target";
            w.SaveButtonIsDefault = true;

            var m  = JsonConvert.DeserializeObject <SecurityDescriptorTarget>(JsonConvert.SerializeObject(this.SelectedItem.Model));
            var vm = this.factory.CreateViewModel(m);

            w.DataContext = vm;

            await this.GetWindow().ShowChildWindowAsync(w);

            if (w.Result == MessageDialogResult.Affirmative)
            {
                this.Model.Remove(this.SelectedItem.Model);

                int existingPosition = this.ViewModels.IndexOf(this.SelectedItem);

                this.ViewModels.Remove(this.SelectedItem);
                this.Model.Add(m);
                this.ViewModels.Insert(Math.Min(existingPosition, this.ViewModels.Count), vm);
                this.SelectedItem = vm;
            }
        }
예제 #2
0
        public async Task <SecurityDescriptorTargetViewModel> CreateViewModelAsync(SecurityDescriptorTarget model, SecurityDescriptorTargetViewModelDisplaySettings settings)
        {
            var item = new SecurityDescriptorTargetViewModel(model, settings, channelSelectionViewModelFactory, fileSelectionViewModelFactory, appPathProvider, logger, dialogCoordinator, validator.Invoke(), directory, domainTrustProvider, discoveryServices, localSam, objectSelectionProvider, scriptTemplateProvider, licenseManager, shellExecuteProvider);

            await item.Initialization;

            return(item);
        }
        public async Task EditItem(SecurityDescriptorTargetViewModel selectedItem, Window owner)
        {
            try
            {
                if (selectedItem == null)
                {
                    return;
                }

                ExternalDialogWindow w = new ExternalDialogWindow
                {
                    Title = "Edit rule",
                    SaveButtonIsDefault = true,
                    Height = childWindowHeight,
                    Width  = childWindowWidth,
                    Owner  = owner
                };

                var m  = JsonConvert.DeserializeObject <SecurityDescriptorTarget>(JsonConvert.SerializeObject(selectedItem.Model));
                var vm = await this.factory.CreateViewModelAsync(m, this.ChildDisplaySettings);

                vm.IsEditing = true;

                w.DataContext = vm;

                if (w.ShowDialog() == true)
                {
                    this.Model.Remove(selectedItem.Model);

                    int existingPosition = this.ViewModels.IndexOf(selectedItem);

                    this.ViewModels.Remove(selectedItem);
                    this.Model.Add(m);

                    m.LastModifiedBy = WindowsIdentity.GetCurrent().User.ToString();
                    m.LastModified   = DateTime.UtcNow;

                    this.ViewModels.Insert(Math.Min(Math.Max(existingPosition, 0), this.ViewModels.Count), vm);
                    this.SelectedItem = vm;
                }
            }
            catch (Exception ex)
            {
                this.logger.LogError(EventIDs.UIGenericError, ex, "Error editing item");
                await this.dialogCoordinator.ShowMessageAsync(this, "Error", $"Could not edit the selected item. {ex.Message}");
            }
        }
        private bool IsFiltered(object item)
        {
            var trimmedText = this.SearchText?.TrimStart('?');

            if (string.IsNullOrWhiteSpace(trimmedText))
            {
                return(true);
            }

            SecurityDescriptorTargetViewModel vm = (SecurityDescriptorTargetViewModel)item;

            if (this.matchedComputerViewModels != null)
            {
                return(this.matchedComputerViewModels.Contains(vm.Id));
            }
            else
            {
                return((vm.DisplayName != null && vm.DisplayName.Contains(trimmedText, StringComparison.OrdinalIgnoreCase)) || (vm.Description != null && vm.Description.Contains(trimmedText, StringComparison.OrdinalIgnoreCase)));
            }
        }
        public async Task Delete()
        {
            if (this.SelectedItem == null)
            {
                return;
            }

            MetroDialogSettings s = new MetroDialogSettings
            {
                AnimateShow = false,
                AnimateHide = false
            };

            if (await this.DialogCoordinator.ShowMessageAsync(this, "Confirm", "Are you sure you want to delete this target?", MessageDialogStyle.AffirmativeAndNegative, s) == MessageDialogResult.Affirmative)
            {
                var deleting = this.SelectedItem;
                this.Model.Remove(deleting.Model);
                this.ViewModels.Remove(deleting);
                this.SelectedItem = this.ViewModels.FirstOrDefault();
            }
        }
 public MatchedSecurityDescriptorTargetViewModel(SecurityDescriptorTargetViewModel model)
 {
     this.Model = model;
 }