Exemplo n.º 1
0
        internal static void Load(TextRange thisRange, Stream stream, string dataFormat) 
        {
            if (stream == null) 
            {
                throw new ArgumentNullException("stream");
            }
            if (dataFormat == null) 
            {
                throw new ArgumentNullException("dataFormat"); 
            } 

            NormalizeRange(thisRange); 

            // Reset the stream position to the beginning
            if (stream.CanSeek)
            { 
                stream.Seek(0, SeekOrigin.Begin);
            } 
 
            if (dataFormat == DataFormats.Text)
            { 
                StreamReader textStreamReader = new StreamReader(stream);
                string text = textStreamReader.ReadToEnd();
                thisRange.Text = text;
            } 
            else if (dataFormat == DataFormats.Xaml)
            { 
                StreamReader xamlStreamReader = new StreamReader(stream); 
                string xamlText = xamlStreamReader.ReadToEnd();
                thisRange.Xml = xamlText; 
            }
            else if (dataFormat == DataFormats.XamlPackage && SecurityHelper.CheckUnmanagedCodePermission())
            {
                object element = WpfPayload.LoadElement(stream); 
                if (!(element is Section) && !(element is Span))
                { 
                    throw new ArgumentException(SR.Get(SRID.TextRange_UnrecognizedStructureInDataFormat, dataFormat), "stream"); 
                }
                thisRange.SetXmlVirtual((TextElement)element); 
            }
            else if (dataFormat == DataFormats.Rtf && SecurityHelper.CheckUnmanagedCodePermission())
            {
                // 
                StreamReader rtfStreamReader = new StreamReader(stream);
                string rtfText = rtfStreamReader.ReadToEnd(); 
                MemoryStream memoryStream = TextEditorCopyPaste.ConvertRtfToXaml(rtfText); 
                if (memoryStream == null)
                { 
                    throw new ArgumentException(SR.Get(SRID.TextRange_UnrecognizedStructureInDataFormat, dataFormat), "stream");
                }
                TextElement textElement = WpfPayload.LoadElement(memoryStream) as TextElement;
                if (!(textElement is Section) && !(textElement is Span)) 
                {
                    throw new ArgumentException(SR.Get(SRID.TextRange_UnrecognizedStructureInDataFormat, dataFormat), "stream"); 
                } 
                thisRange.SetXmlVirtual(textElement);
            } 
            else
            {
                // Unsupported format - thows exception
                throw new ArgumentException(SR.Get(SRID.TextRange_UnsupportedDataFormat, dataFormat), "dataFormat"); 
            }
        }