/// <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 });
/// <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); }
/// <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; } }
/// <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; } }
/// <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); }
/// <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); } }
/// <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; } }
/// <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); } }
/// <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));