Beispiel #1
0
        /// <summary>表示するコモンダイアログを生成します。</summary>
        /// <param name="settings">設定情報を表すIDialogSettings。</param>
        /// <returns>生成したコモンダイアログを表すFileDialog。</returns>
        private FileDialog createDialogService(ICommonDialogSettings settings)
        {
            if (settings == null)
            {
                return(null);
            }

            FileDialog dialog = null;

            if (settings is OpenFileDialogSettings)
            {
                dialog = new OpenFileDialog();
            }
            else if (settings is SaveFileDialogSettings)
            {
                dialog = new SaveFileDialog();
            }
            else
            {
                return(null);
            }

            var saveSettings = settings as SaveFileDialogSettings;

            dialog.Filter           = saveSettings.Filter;
            dialog.FilterIndex      = saveSettings.FilterIndex;
            dialog.InitialDirectory = saveSettings.InitialDirectory;
            dialog.Title            = saveSettings.Title;

            return(dialog);
        }
        /// <inheritdoc />
        public bool ShowDialog(ICommonDialogSettings settings)
        {
            var service = this.CreateInnerService(settings);

            if (service == null)
            {
                return(false);
            }

            return(service.ShowDialog(settings));
        }
        /// <summary>
        /// Create inner service.
        /// </summary>
        /// <param name="settings">Dialog settings</param>
        /// <returns>Dialog service</returns>
        private ICommonDialogService?CreateInnerService(ICommonDialogSettings settings)
        {
            if (settings == null)
            {
                return(null);
            }

            return(settings switch
            {
                OpenFileDialogSettings _ => new FileDialogService(),
                _ => null
            });
Beispiel #4
0
        /// <summary>表示するコモンダイアログを生成します。</summary>
        /// <param name="settings">設定情報を表すIDialogSettings。</param>
        /// <returns>生成したコモンダイアログを表すCommonFileDialog。</returns>
        private CommonFileDialog createDialog(ICommonDialogSettings settings)
        {
            if (settings == null)
            {
                return(null);
            }

            CommonFileDialog dialog = null;

            switch (settings)
            {
            case ApiPackFolderBrowsDialogSettings f:
                dialog = new CommonOpenFileDialog()
                {
                    IsFolderPicker = true
                };
                break;

            case ApiPackOpenFileDialogSettings o:
                dialog = new CommonOpenFileDialog();
                break;

            case ApiPackSaveFileDialogSettings s:
                dialog = new CommonSaveFileDialog();
                break;

            default:
                return(null);
            }

            dialog.InitialDirectory = settings.InitialDirectory;
            dialog.Title            = settings.Title;

            var filters = new List <CommonFileDialogFilter>();

            switch (settings)
            {
            case ApiPackOpenFileDialogSettings f:
                filters = ApiPackDialogFilterCreator.Create(f.Filter);
                break;

            case ApiPackSaveFileDialogSettings s:
                filters = ApiPackDialogFilterCreator.Create(s.Filter);
                break;

            default:
                return(dialog);
            }

            filters.ForEach(f => dialog.Filters.Add(f));

            return(dialog);
        }
Beispiel #5
0
        /// <summary>
        /// Set the return value.
        /// </summary>
        /// <param name="fileDialog">File dialog</param>
        /// <param name="settings">Dialog settings</param>
        private void SetReturnValue(FileDialog fileDialog, ICommonDialogSettings settings)
        {
            switch (settings)
            {
            case OpenFileDialogSettings openFileDialogSettings:
                var openFileDialog = (OpenFileDialog)fileDialog;

                openFileDialogSettings.FileName = openFileDialog.FileName;

                foreach (var fileName in openFileDialog.FileNames)
                {
                    openFileDialogSettings.FileNames.Add(fileName);
                }

                break;
            }
        }
Beispiel #6
0
        /// <summary>戻り値を設定します。</summary>
        /// <param name="dialog">表示したダイアログを表すFileDialog。</param>
        /// <param name="settings">設定情報を表すIDialogSettings。</param>
        private void setReturnValues(FileDialog dialog, ICommonDialogSettings settings)
        {
            switch (settings)
            {
            case OpenFileDialogSettings o:
                var openDialog = dialog as OpenFileDialog;
                o.FileName  = openDialog.FileName;
                o.FileNames = openDialog.FileNames.ToList();
                break;

            case SaveFileDialogSettings s:
                var saveDialog = dialog as SaveFileDialog;
                s.FileName = saveDialog.FileName;
                break;

            default:
                break;
            }
        }
Beispiel #7
0
        /// <inheritdoc />
        public bool ShowDialog(ICommonDialogSettings settings)
        {
            var dialog = this.CreateDialogService(settings);

            if (dialog == null)
            {
                return(false);
            }

            var returnValue = dialog.ShowDialog();

            if (returnValue.HasValue)
            {
                this.SetReturnValue(dialog, settings);

                return(returnValue.Value);
            }

            return(false);
        }
Beispiel #8
0
        /// <summary>コモンダイアログを表示します。</summary>
        /// <param name="settings">設定情報を表すIDialogSettings。</param>
        /// <returns>trueが返ると選択したファイル名、ユーザがキャンセルするとfalseが返ります。</returns>
        public bool ShowDialog(ICommonDialogSettings settings)
        {
            var dialog = this.createDialogService(settings);

            if (dialog == null)
            {
                return(false);
            }

            var ret = dialog.ShowDialog();

            if (ret.HasValue)
            {
                this.setReturnValues(dialog, settings);
                return(ret.Value);
            }
            else
            {
                return(false);
            }
        }
Beispiel #9
0
        /// <summary>戻り値を設定します。</summary>
        /// <param name="dialog">表示したダイアログを表すFileDialog。</param>
        /// <param name="settings">設定情報を表すIDialogSettings。</param>
        private void setReturnValues(CommonFileDialog dialog, ICommonDialogSettings settings)
        {
            switch (settings)
            {
            case ApiPackOpenFileDialogSettings o:
                o.FileName  = dialog.FileName;
                o.FileNames = (dialog as CommonOpenFileDialog)?.FileNames.ToList();
                break;

            case ApiPackSaveFileDialogSettings s:
                s.FileName = dialog.FileName;
                break;

            case ApiPackFolderBrowsDialogSettings f:
                f.SelectedFolderPath = dialog.FileName;
                break;

            default:
                break;
            }
        }
Beispiel #10
0
        /// <summary>
        /// Create a dialog service.
        /// </summary>
        /// <param name="settings">Dialog settings</param>
        /// <returns>File dialog</returns>
        private FileDialog?CreateDialogService(ICommonDialogSettings settings)
        {
            if (settings == null)
            {
                return(null);
            }

            if (!(settings is OpenFileDialogSettings openFileDialogSettings))
            {
                return(null);
            }

            FileDialog?fileDialog = new OpenFileDialog
            {
                Filter           = openFileDialogSettings.Filter,
                FilterIndex      = openFileDialogSettings.FilterIndex,
                InitialDirectory = openFileDialogSettings.InitialDirectory,
                Title            = openFileDialogSettings.Title,
            };

            return(fileDialog);
        }
        /// <summary>表示するコモンダイアログサービスを生成します。</summary>
        /// <param name="settings">ダイアログと値を受け渡しするためのICommonDialogSettings。</param>
        /// <returns>表示するコモンダイアログサービスを表すICommonDialogService。</returns>
        private ICommonDialogService createInnerService(ICommonDialogSettings settings)
        {
            if (settings == null)
            {
                return(null);
            }

            switch (settings)
            {
            case ApiPackFolderBrowsDialogSettings f:
            case ApiPackOpenFileDialogSettings o:
            case ApiPackSaveFileDialogSettings s:
                return(new CommonFileDialogService());

            case OpenFileDialogSettings o:
            case SaveFileDialogSettings s:
                return(new FileDialogService());

            default:
                return(null);
            }
        }
Beispiel #12
0
        /// <summary>コモンダイアログを表示します。</summary>
        /// <param name="settings">設定情報を表すIDialogSettings。</param>
        /// <returns>trueが返ると選択したファイル名、ユーザがキャンセルするとfalseが返ります。</returns>
        public bool ShowDialog(ICommonDialogSettings settings)
        {
            var dialog = this.createDialog(settings);

            if (dialog == null)
            {
                return(false);
            }

            var ret = dialog.ShowDialog();

            switch (ret)
            {
            case CommonFileDialogResult.None:
            case CommonFileDialogResult.Cancel:
                break;

            case CommonFileDialogResult.Ok:
                this.setReturnValues(dialog, settings);
                return(true);
            }

            return(false);
        }
 public static bool IsPrecedence(this ICommonDialogExecuter Executer, ICommonDialogSettings Settings)
 => Executer is ICommonDialogPrecedence Precedence && Precedence.IsPrecedence(Settings);
 public static IEnumerable <ICommonDialogExecuter> UseDialog(this IEnumerable <ICommonDialogExecuter> Executers, ICommonDialogSettings Settings)
 => Executers.Where(Executer => Executer.UseDialog(Settings));