コード例 #1
0
        public override void Execute(object parameter)
        {
            var vm = parameter as ExtensionRowViewModel;

            var window = new BackgroundWorkerWaitWindow("Update Extension", $"Updating the '{vm.PackageMetadata.Title}' extension...");

            window.DoWork += delegate
            {
                PackageManager.UpdatePackage(vm.Package.Id, false, true);
                vm.UpdateAvailable = false;
            };
            window.RunWorkerCompleted += delegate(object sender, RunWorkerCompletedEventArgs args)
            {
                if (args.Error == null)
                {
                    ViewModel.RestartApplicationWithConfirm();
                }
                else
                {
                    Debug.WriteLine(args.Error.ToString());
                    MessageBox.Show(args.Error.ToString());
                    throw args.Error;
                }
            };
            window.ShowDialog();
        }
コード例 #2
0
        private void UpdateRules(object obj)
        {
            var sendToAmazon = false;
            var viewModel    = new AwsSettingsViewModel(RuleApplicationService.RuleApplicationDef);

            var window = WindowFactory.CreateWindow("Service Settings", new AwsSettingsView(viewModel), false, Strings.OK, Strings.Cancel);

            window.ButtonClicked += delegate(object sender, WindowButtonClickedEventArgs <AwsSettingsView> args)
            {
                if (args.ClickedButtonText == Strings.OK)
                {
                    _awsServiceInfo.TopEntityName    = viewModel.EntityName;
                    _awsServiceInfo.AwsFunctionName  = viewModel.AwsFunctionName;
                    _awsServiceInfo.ReturnDefinition = viewModel.ReturnDefinition;

                    sendToAmazon = true;
                }

                window.Close();
            };
            window.Show();

            if (sendToAmazon)
            {
                var waitWindow = new BackgroundWorkerWaitWindow("Beaming rules...", "Creating temporary rule application file...", true, false, true);
                waitWindow.DoWork += delegate
                {
                    InRuleJavaScriptDistributionService.GenerateIndexFile(_awsServiceInfo);

                    var javaScript = InRuleJavaScriptDistributionService.GetJavaScriptRules(RuleApplicationService.RuleApplicationDef);

                    AwsConnection.UpdateLambdaFunction(_awsServiceInfo.AwsFunctionName, javaScript);
                };

                waitWindow.RunWorkerCompleted += delegate(object sender, RunWorkerCompletedEventArgs e)
                {
                    var error = e.Error;

                    if (error != null)
                    {
                        var text = $"The following error occurred:\n\n{error.Message}";
                        MessageBoxFactory.Show(text, "Error getting JavaScript", MessageBoxFactoryImage.Warning);
                    }
                    else if (e.Result != null)
                    {
                        var lines = ((string)e.Result).Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
                        WindowFactory.ShowLabeledListWindow("Output", "The following information was returned:", lines);
                    }
                };

                waitWindow.ShowDialog();
            }
        }
コード例 #3
0
        public void RefreshPackageList(bool showInstalledOnly = false)
        {
            var window = new BackgroundWorkerWaitWindow("Loading Extensions", $"Loading extensions from the InRule Extension Exchange service...");

            window.DoWork += delegate(object sender, DoWorkEventArgs args)
            {
                Debug.WriteLine("In refresh packages Task");

                var packages = repository.Repositories.First(x => x.Source == Settings.FeedUrl).GetPackages()
                               .Where(x => x.Tags.Contains("extension"))
                               .ToList()
                               .GroupBy(x => x.Id, (id, packs) =>
                {
                    SemanticVersion latestVersion;
                    latestVersion           = packs.Max(v => v.Version);
                    IPackage currentPackage = PackageManager.LocalRepository.FindPackage(id);
                    return(new ExtensionRowViewModel
                    {
                        UpdateAvailable = currentPackage != null && !currentPackage.IsLatestVersion,
                        IsInstalled = currentPackage != null,
                        LatestVersion = latestVersion.ToNormalizedString(),
                        InstalledVersion = currentPackage == null ? "--" : currentPackage.Version.ToNormalizedString(),
                        Package = packs.First(p => p.Id == id)
                    });
                })
                               .ToList()
                               .Where(x => !showInstalledOnly || x.IsInstalled);

                args.Result = packages;
            };
            window.RunWorkerCompleted += delegate(object sender, RunWorkerCompletedEventArgs args)
            {
                Debug.WriteLine("Got packages.");
                if (args.Error == null)
                {
                    Extensions.Clear();
                    Extensions.AddRange((IEnumerable <ExtensionRowViewModel>)args.Result);
                }
                else
                {
                    Debug.WriteLine(args.Error.ToString());
                    MessageBox.Show(args.Error.ToString());
                    throw args.Error;
                }
            };
            window.ShowDialog();
        }
コード例 #4
0
        public override void Execute(object parameter)
        {
            var vm = parameter as ExtensionRowViewModel;

            if (vm == null)
            {
                return;
            }

            var window = new BackgroundWorkerWaitWindow("Install Extension", $"Installing the '{vm.PackageMetadata.Title}' extension...");

            window.DoWork += delegate
            {
                PackageManager.InstallPackage(vm.Package, false, true);
            };
            window.RunWorkerCompleted += delegate(object sender, RunWorkerCompletedEventArgs args)
            {
                if (args.Error == null)
                {
                    vm.IsInstalled = true;

                    if (!ViewModel.Settings.EnabledExtensions.Contains(vm.ExtensionId.ToString()))
                    {
                        ViewModel.Settings.EnabledExtensions.Add(vm.ExtensionId.ToString());
                    }

                    ViewModel.InvokeSettingsChanged();
                    ViewModel.RestartApplicationWithConfirm();
                }
                else
                {
                    Debug.WriteLine(args.Error.ToString());
                    MessageBox.Show(args.Error.ToString());
                    throw args.Error;
                }
            };
            window.ShowDialog();
        }
コード例 #5
0
        public void Execute()
        {
            try
            {
                _ruleAppDef    = RuleApplicationService.RuleApplicationDef;
                _excelFilePath = Utility.BrowseForPath();
                _sheetName     = Utility.GetSheetName();

                if (_excelFilePath.Length == 0)
                {
                    return;
                }

                var spreadsheet = new Spreadsheet();
                var rows        = spreadsheet.ExtractExcelValues(_excelFilePath, _sheetName);

                var decisionTableDef = new DecisionTableDef();
                decisionTableDef.Name = GetDTName(_excelFilePath);
                RuleApplicationService.Controller.AddDef(decisionTableDef, SelectedItem);


                // create a wait window that will run on background thread
                var window = new BackgroundWorkerWaitWindow("Decision Table Import", "Importing...");

                // use delegate to load decision table with data
                window.DoWork += delegate(object sender, DoWorkEventArgs e)
                {
                    ExecuteImport(decisionTableDef, rows, spreadsheet);
                };

                // use delegate to report errors and close window
                window.RunWorkerCompleted += delegate(object sender, RunWorkerCompletedEventArgs e)
                {
                    if (e.Error != null)
                    {
                        MessageBoxFactory.Show("The following error occurred while attempting to import the spreadsheet:\n\n" + e.Error.ToString(),
                                               "Import",
                                               MessageBoxFactoryImage.Error);
                    }
                    window.Close();

                    var validations = _ruleAppDef.Validate();
                    var s           = new StringBuilder();
                    foreach (var validation in validations)
                    {
                        s.AppendLine(validation.ToString());
                    }
                    if (s.Length > 0)
                    {
                        MessageBoxFactory.Show(s.ToString(), "");
                    }
                };

                // show the window
                window.ShowDialog();
            }
            catch (Exception e)
            {
                MessageBoxFactory.Show("The following error occurred while attempting to import the spreadsheet:\n\n" + e,
                                       "Regimen Import",
                                       MessageBoxFactoryImage.Error);
            }
        }