#region License // Copyright (c) 2010, Jasper Yeh. // All rights reserved. // // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of ClearCanvas Inc. nor the names of its contributors // may be used to endorse or promote products derived from this software without // specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, // OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE // GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY // OF SUCH DAMAGE. #endregion using System.Collections.Generic; using System.Text; using ClearCanvas.Common; using ClearCanvas.Desktop; namespace Nullstack.ClearCanvasEx.ViewerEx.FileOps.Utilities { public class StandardFileExtensionFilter : FileExtensionFilter { public static readonly FileExtensionFilter AllFilesExtensionFilter = new StandardFileExtensionFilter(SR.szAllFilesType, "*"); public static readonly FileExtensionFilter DicomFileExtensionFilter = new StandardFileExtensionFilter(SR.szDicomFileType, "dcm"); public static readonly FileExtensionFilter DicomPresentationStateFileExtensionFilter = new StandardFileExtensionFilter(SR.szPresentationStateFileType, "dcm", "ps.dcm"); public static readonly FileExtensionFilter DicomFileSetExtensionFilter = new FileExtensionFilter("DICOMDIR", SR.szDicomFileSetType); public StandardFileExtensionFilter(params string[] extensions) : base(GetFilterString(extensions), GetDescriptionString(string.Empty, extensions)) { } public StandardFileExtensionFilter(string name, params string[] extensions) : base(GetFilterString(extensions), GetDescriptionString(name, extensions)) { } private static string GetFilterString(ICollection extensions) { Platform.CheckForNullReference(extensions, "extensions"); Platform.CheckTrue(extensions.Count > 0, "At least one extension is required."); var filterBuilder = new StringBuilder(); foreach (var extension in extensions) filterBuilder.AppendFormat("*.{0};", extension); return filterBuilder.ToString(0, filterBuilder.Length - 1); } private static string GetDescriptionString(string name, ICollection extensions) { Platform.CheckForNullReference(extensions, "extensions"); Platform.CheckTrue(extensions.Count > 0, "At least one extension is required."); var separator = SR.szFileTypeExtensionsSeparator; var extensionListBuilder = new StringBuilder(); foreach (var extension in extensions) extensionListBuilder.AppendFormat("*.{0}{1}", extension, separator); var extensionList = extensionListBuilder.ToString(0, extensionListBuilder.Length - separator.Length); if (string.IsNullOrEmpty(name)) return extensionList; return string.Format(SR.fFileTypeDescription, name, extensionList); } } }