Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Print / Reach / Serialization / manager / ReachUIElementCollectionSerializerAsync.cs / 1 / ReachUIElementCollectionSerializerAsync.cs
/*++
Copyright (C) 2004- 2005 Microsoft Corporation
All rights reserved.
Module Name:
ReachUIElementCollectionSerializerAsync.cs
Abstract:
This file contains the definition of a class that defines
the common functionality required to serialize a
UIElementCollection
Author:
[....] ([....]) 20-May-2004
Revision History:
--*/
using System;
using System.Collections;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Diagnostics;
using System.Reflection;
using System.Xml;
using System.IO;
using System.Security;
using System.Security.Permissions;
using System.ComponentModel.Design.Serialization;
using System.Windows.Xps.Packaging;
using System.Windows.Documents;
using System.Windows.Media;
using System.Windows.Markup;
namespace System.Windows.Xps.Serialization
{
///
/// Class defining common functionality required to
/// serialize a UIElementCollection.
///
internal class ReachUIElementCollectionSerializerAsync :
ReachSerializerAsync
{
#region Constructor
///
/// Constructor for class ReachUIElementCollectionSerializer
///
///
/// The serialization manager, the services of which are
/// used later in the serialization process of the type.
///
public
ReachUIElementCollectionSerializerAsync(
PackageSerializationManager manager
):
base(manager)
{
}
#endregion Constructor
#region Public Methods
public
override
void
AsyncOperation(
ReachSerializerContext context
)
{
if(context == null)
{
}
switch (context.Action)
{
case SerializerAction.endPersistObjectData:
{
EndPersistObjectData();
break;
}
case SerializerAction.serializeNextUIElement:
{
UIElementCollectionSerializerContext thisContext = context as UIElementCollectionSerializerContext;
if(thisContext != null)
{
SerializeNextUIElement(thisContext.Enumerator,
thisContext.ObjectContext);
}
break;
}
default:
{
base.AsyncOperation(context);
break;
}
}
}
///
/// The main method that is called to serialize a UIElementCollection.
///
///
/// Instance of object to be serialized.
///
public
override
void
SerializeObject(
Object serializedObject
)
{
base.SerializeObject(serializedObject);
}
#endregion Public Methods
#region Internal Methods
///
/// The method is called once the object data is discovered at that
/// point of the serialization process.
///
///
/// The context of the object to be serialized at this time.
///
internal
override
void
PersistObjectData(
SerializableObjectContext serializableObjectContext
)
{
if (serializableObjectContext == null)
{
throw new ArgumentNullException("serializableObjectContext");
}
IEnumerable enumerableObject = serializableObjectContext.TargetObject as IEnumerable;
if (enumerableObject == null)
{
throw new XpsSerializationException(ReachSR.Get(ReachSRID.MustBeOfType, "serializableObjectContext.TargetObject", typeof(IEnumerable)));
}
//
// Serialize the PageContent Items contained within the collection
//
SerializeUIElements(serializableObjectContext);
}
#endregion Internal Methods
#region Private Methods
///
/// This is being called to serialize the Page Content items
/// contained within the collection
///
private
void
SerializeUIElements(
SerializableObjectContext serializableObjectContext
)
{
//
// Serialize each PageContent in PageContentCollection
//
IEnumerator enumerator = ((IEnumerable)serializableObjectContext.TargetObject).GetEnumerator();
enumerator.Reset();
UIElementCollectionSerializerContext context = new UIElementCollectionSerializerContext(this,
serializableObjectContext,
enumerator,
SerializerAction.serializeNextUIElement);
((XpsSerializationManagerAsync)SerializationManager).OperationStack.Push(context);
}
private
void
SerializeNextUIElement(
IEnumerator enumerator,
SerializableObjectContext serializableObjectContext
)
{
if(enumerator.MoveNext())
{
UIElementCollectionSerializerContext context = new UIElementCollectionSerializerContext(this,
serializableObjectContext,
enumerator,
SerializerAction.serializeNextUIElement);
((XpsSerializationManagerAsync)SerializationManager).OperationStack.Push(context);
object uiElement = enumerator.Current;
SerializeUIElement(uiElement);
}
}
///
/// Called to serialize a single UIElement
///
private
void
SerializeUIElement(
object uiElement
)
{
Visual visual = uiElement as Visual;
if(visual != null)
{
ReachSerializer serializer = SerializationManager.GetSerializer(visual);
if(serializer!=null)
{
serializer.SerializeObject(visual);
}
else
{
throw new XpsSerializationException(ReachSR.Get(ReachSRID.ReachSerialization_NoSerializer));
}
}
}
#endregion Private Methods
};
internal class UIElementCollectionSerializerContext :
ReachSerializerContext
{
public
UIElementCollectionSerializerContext(
ReachSerializerAsync serializer,
SerializableObjectContext objectContext,
IEnumerator enumerator,
SerializerAction action
):
base(serializer,objectContext,action)
{
this._enumerator = enumerator;
}
public
IEnumerator
Enumerator
{
get
{
return _enumerator;
}
}
private
IEnumerator _enumerator;
};
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- KeyFrames.cs
- columnmapkeybuilder.cs
- SourceLocationProvider.cs
- SqlParameterizer.cs
- AsyncResult.cs
- VectorAnimationUsingKeyFrames.cs
- DataGridViewHeaderCell.cs
- ProfileSection.cs
- XmlLoader.cs
- SerializationHelper.cs
- HttpListenerResponse.cs
- shaperfactoryquerycachekey.cs
- TextShapeableCharacters.cs
- HotSpotCollection.cs
- CompleteWizardStep.cs
- TraceContextEventArgs.cs
- BitVector32.cs
- CookieHandler.cs
- StylusPointProperties.cs
- ConnectionPointCookie.cs
- HMACMD5.cs
- CreatingCookieEventArgs.cs
- DataGridViewColumnCollectionEditor.cs
- ToggleProviderWrapper.cs
- DbDataSourceEnumerator.cs
- SafeBitVector32.cs
- ColumnMapCopier.cs
- bindurihelper.cs
- IDReferencePropertyAttribute.cs
- DataControlHelper.cs
- ErrorStyle.cs
- Byte.cs
- ReferenceEqualityComparer.cs
- PolicyManager.cs
- DesignTable.cs
- RectAnimationUsingKeyFrames.cs
- EntityParameter.cs
- CommandID.cs
- NameSpaceEvent.cs
- WebBrowserBase.cs
- ProvidersHelper.cs
- CustomTypeDescriptor.cs
- PopupRoot.cs
- ListViewSelectEventArgs.cs
- SerializationStore.cs
- ContentFilePart.cs
- CompiledQuery.cs
- DataGridColumn.cs
- ResourceSet.cs
- DbMetaDataFactory.cs
- UInt16.cs
- StructuredTypeEmitter.cs
- ClientFormsAuthenticationMembershipProvider.cs
- TerminateDesigner.cs
- MailMessageEventArgs.cs
- TagPrefixInfo.cs
- SafePEFileHandle.cs
- PriorityQueue.cs
- ProfileProvider.cs
- ButtonDesigner.cs
- CompilerLocalReference.cs
- SurrogateEncoder.cs
- CanExecuteRoutedEventArgs.cs
- HttpPostProtocolReflector.cs
- DynamicMethod.cs
- DeviceContext2.cs
- PixelShader.cs
- StateWorkerRequest.cs
- DEREncoding.cs
- AppDomainAttributes.cs
- FileDialogCustomPlace.cs
- UrlMappingsModule.cs
- RequiredArgumentAttribute.cs
- SecurityTokenTypes.cs
- ConstraintCollection.cs
- FormattedText.cs
- DateTimeValueSerializer.cs
- CodeDOMProvider.cs
- ViewGenResults.cs
- X500Name.cs
- BitSet.cs
- DetailsViewModeEventArgs.cs
- EdmEntityTypeAttribute.cs
- ThreadLocal.cs
- CookieProtection.cs
- UnsettableComboBox.cs
- ComponentResourceKey.cs
- HtmlControlAdapter.cs
- CompensatableTransactionScopeActivityDesigner.cs
- Facet.cs
- Rfc2898DeriveBytes.cs
- DataObjectMethodAttribute.cs
- GeneratedCodeAttribute.cs
- DataGridViewTextBoxEditingControl.cs
- MaterialGroup.cs
- Help.cs
- Repeater.cs
- TextBoxBase.cs
- MarkedHighlightComponent.cs
- FixedPageProcessor.cs