private async void SaveButton_Click(object sender, RoutedEventArgs e)
        {
            await this.RunAsyncOperation((System.Func <Task>)(async() =>
            {
                if (await this.viewModel.Validate())
                {
                    OverlayItemPositionModel position = this.ItemPosition.GetPosition();
                    if (position == null)
                    {
                        await DialogHelper.ShowMessage("A valid position for this overlay widget must be selected");
                        return;
                    }

                    OverlayItemModelBase overlayItem = overlayTypeEditor.GetItem();
                    if (overlayItem == null)
                    {
                        await DialogHelper.ShowMessage("There are missing details for the overlay item");
                        return;
                    }

                    overlayItem.Position = position;

                    OverlayWidgetModel widget = new OverlayWidgetModel(this.viewModel.Name, this.viewModel.SelectedOverlayEndpoint, overlayItem, (int)this.viewModel.RefreshTime);
                    if (this.viewModel.OverlayWidget != null)
                    {
                        await this.viewModel.OverlayWidget.Disable();
                        ChannelSession.Settings.OverlayWidgets.Remove(this.viewModel.OverlayWidget);
                        overlayItem.ID = this.viewModel.OverlayWidget.Item.ID;
                    }
                    ChannelSession.Settings.OverlayWidgets.Add(widget);

                    this.Close();
                }
            }));
        }
        private async void SaveButton_Click(object sender, RoutedEventArgs e)
        {
            await this.RunAsyncOperation((System.Func <Task>)(async() =>
            {
                if (await this.viewModel.Validate())
                {
                    OverlayItemPositionModel position = this.position.GetPosition();
                    if (position == null)
                    {
                        await DialogHelper.ShowMessage(MixItUp.Base.Resources.InvalidPosition);
                        return;
                    }

                    OverlayItemModelBase overlayItem = overlayTypeEditor.GetItem();
                    if (overlayItem == null)
                    {
                        await DialogHelper.ShowMessage(MixItUp.Base.Resources.OverlayMissingDetails);
                        return;
                    }

                    overlayItem.Position = position;

                    OverlayWidgetModel widget = new OverlayWidgetModel(this.viewModel.Name, this.viewModel.SelectedOverlayEndpoint, overlayItem, (int)this.viewModel.RefreshTime);
                    if (this.viewModel.OverlayWidget != null)
                    {
                        await this.viewModel.OverlayWidget.Disable();
                        ChannelSession.Settings.OverlayWidgets.Remove(this.viewModel.OverlayWidget);
                        overlayItem.ID = this.viewModel.OverlayWidget.Item.ID;
                    }

                    if (widget.Item is OverlayEndCreditsItemModel)
                    {
                        widget.IsEnabled = false;
                    }

                    ChannelSession.Settings.OverlayWidgets.Add(widget);

                    this.Close();
                }
            }));
        }