Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / Tools / System.Activities.Presentation / System / Activities / Presentation / View / WorkflowViewStateService.cs / 1305376 / WorkflowViewStateService.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Activities.Presentation.View { using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Xaml; using System.Activities.Presentation.Model; using System.Runtime; //ViewState is stored as a Dictionaryon the CFx object. //ModelItem is passed in StoreViewState to get a handle to the CFx object. [Fx.Tag.XamlVisible(false)] public class WorkflowViewStateService : ViewStateService { EditingContext context; public override event ViewStateChangedEventHandler ViewStateChanged; public override event ViewStateChangedEventHandler UndoableViewStateChanged; [SuppressMessage(FxCop.Category.Security, FxCop.Rule.DoNotDeclareReadOnlyMutableReferenceTypes)] public static readonly AttachableMemberIdentifier ViewStateName = new AttachableMemberIdentifier(typeof(WorkflowViewStateService), "ViewState"); UndoEngine UndoEngine { get { return this.context.Services.GetService (); } } public WorkflowViewStateService(EditingContext context) { this.context = context; } public static Dictionary GetViewState(object instance) { if (instance == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("instance")); } Dictionary viewState; AttachablePropertyServices.TryGetProperty(instance, ViewStateName, out viewState); return viewState; } public static void SetViewState(object instance, Dictionary value) { if (instance == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("instance")); } AttachablePropertyServices.SetProperty(instance, ViewStateName, value); } public override object RetrieveViewState(ModelItem modelItem, string key) { if (modelItem == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("modelItem")); } if (key == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("key")); } object viewStateObj = null; Dictionary viewState = WorkflowViewStateService.GetViewState(modelItem.GetCurrentValue()); if (viewState != null) { viewState.TryGetValue(key, out viewStateObj); } return viewStateObj; } public override void StoreViewState(ModelItem modelItem, string key, object value) { if (modelItem == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("modelItem")); } if (key == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("key")); } object oldValue = null; Dictionary viewState = WorkflowViewStateService.GetViewState(modelItem.GetCurrentValue()); if (viewState == null) { viewState = new Dictionary (); WorkflowViewStateService.SetViewState(modelItem.GetCurrentValue(), viewState); } viewState.TryGetValue(key, out oldValue); if (value != null) { viewState[key] = value; } else { RemoveViewState(modelItem, key); } if (this.ViewStateChanged != null && value != oldValue) { this.ViewStateChanged(this, new ViewStateChangedEventArgs(modelItem, key, value, oldValue)); } } public override bool RemoveViewState(ModelItem modelItem, string key) { if (modelItem == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("modelItem")); } if (key == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("key")); } bool itemRemoved = false; Dictionary viewState = WorkflowViewStateService.GetViewState(modelItem.GetCurrentValue()); if (viewState != null && key != null && viewState.ContainsKey(key)) { itemRemoved = viewState.Remove(key); if (viewState.Keys.Count == 0) { AttachablePropertyServices.RemoveProperty(modelItem.GetCurrentValue(), ViewStateName); } } return itemRemoved; } public override Dictionary RetrieveAllViewState(ModelItem modelItem) { if (modelItem == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("modelItem")); } return WorkflowViewStateService.GetViewState(modelItem.GetCurrentValue()); } public override void StoreViewStateWithUndo(ModelItem modelItem, string key, object value) { object oldValue = RetrieveViewState(modelItem, key); ViewStateChange vsChange = new ViewStateChange(this) { Item = modelItem, Key = key, OldValue = oldValue, NewValue = value, }; ModelTreeManager modelTreeManager = this.context.Services.GetService (); if (modelTreeManager != null) { modelTreeManager.AddToCurrentEditingScope(vsChange); } } void RaiseUndoableViewStateChangedEvent(ModelItem modelItem, string key, object newValue, object oldValue) { if (this.UndoableViewStateChanged != null) { this.UndoableViewStateChanged(this, new ViewStateChangedEventArgs(modelItem, key, newValue, oldValue)); } } internal class ViewStateChange : Change { protected WorkflowViewStateService viewStateService; public ModelItem Item { get; set; } public string Key { get; set; } public object OldValue { get; set; } public object NewValue { get; set; } public ViewStateChange(WorkflowViewStateService viewStateService) { this.viewStateService = viewStateService; } public override string Description { get { return SR.ViewStateUndoUnitDescription; } } public override bool Apply() { viewStateService.StoreViewState(Item, Key, NewValue); this.viewStateService.RaiseUndoableViewStateChangedEvent(Item, Key, NewValue, OldValue); return true; } public override Change GetInverse() { return new ViewStateChange(this.viewStateService) { Item = this.Item, Key = this.Key, OldValue = this.NewValue, NewValue = this.OldValue }; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Activities.Presentation.View { using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Xaml; using System.Activities.Presentation.Model; using System.Runtime; //ViewState is stored as a Dictionary on the CFx object. //ModelItem is passed in StoreViewState to get a handle to the CFx object. [Fx.Tag.XamlVisible(false)] public class WorkflowViewStateService : ViewStateService { EditingContext context; public override event ViewStateChangedEventHandler ViewStateChanged; public override event ViewStateChangedEventHandler UndoableViewStateChanged; [SuppressMessage(FxCop.Category.Security, FxCop.Rule.DoNotDeclareReadOnlyMutableReferenceTypes)] public static readonly AttachableMemberIdentifier ViewStateName = new AttachableMemberIdentifier(typeof(WorkflowViewStateService), "ViewState"); UndoEngine UndoEngine { get { return this.context.Services.GetService (); } } public WorkflowViewStateService(EditingContext context) { this.context = context; } public static Dictionary GetViewState(object instance) { if (instance == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("instance")); } Dictionary viewState; AttachablePropertyServices.TryGetProperty(instance, ViewStateName, out viewState); return viewState; } public static void SetViewState(object instance, Dictionary value) { if (instance == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("instance")); } AttachablePropertyServices.SetProperty(instance, ViewStateName, value); } public override object RetrieveViewState(ModelItem modelItem, string key) { if (modelItem == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("modelItem")); } if (key == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("key")); } object viewStateObj = null; Dictionary viewState = WorkflowViewStateService.GetViewState(modelItem.GetCurrentValue()); if (viewState != null) { viewState.TryGetValue(key, out viewStateObj); } return viewStateObj; } public override void StoreViewState(ModelItem modelItem, string key, object value) { if (modelItem == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("modelItem")); } if (key == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("key")); } object oldValue = null; Dictionary viewState = WorkflowViewStateService.GetViewState(modelItem.GetCurrentValue()); if (viewState == null) { viewState = new Dictionary (); WorkflowViewStateService.SetViewState(modelItem.GetCurrentValue(), viewState); } viewState.TryGetValue(key, out oldValue); if (value != null) { viewState[key] = value; } else { RemoveViewState(modelItem, key); } if (this.ViewStateChanged != null && value != oldValue) { this.ViewStateChanged(this, new ViewStateChangedEventArgs(modelItem, key, value, oldValue)); } } public override bool RemoveViewState(ModelItem modelItem, string key) { if (modelItem == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("modelItem")); } if (key == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("key")); } bool itemRemoved = false; Dictionary viewState = WorkflowViewStateService.GetViewState(modelItem.GetCurrentValue()); if (viewState != null && key != null && viewState.ContainsKey(key)) { itemRemoved = viewState.Remove(key); if (viewState.Keys.Count == 0) { AttachablePropertyServices.RemoveProperty(modelItem.GetCurrentValue(), ViewStateName); } } return itemRemoved; } public override Dictionary RetrieveAllViewState(ModelItem modelItem) { if (modelItem == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("modelItem")); } return WorkflowViewStateService.GetViewState(modelItem.GetCurrentValue()); } public override void StoreViewStateWithUndo(ModelItem modelItem, string key, object value) { object oldValue = RetrieveViewState(modelItem, key); ViewStateChange vsChange = new ViewStateChange(this) { Item = modelItem, Key = key, OldValue = oldValue, NewValue = value, }; ModelTreeManager modelTreeManager = this.context.Services.GetService (); if (modelTreeManager != null) { modelTreeManager.AddToCurrentEditingScope(vsChange); } } void RaiseUndoableViewStateChangedEvent(ModelItem modelItem, string key, object newValue, object oldValue) { if (this.UndoableViewStateChanged != null) { this.UndoableViewStateChanged(this, new ViewStateChangedEventArgs(modelItem, key, newValue, oldValue)); } } internal class ViewStateChange : Change { protected WorkflowViewStateService viewStateService; public ModelItem Item { get; set; } public string Key { get; set; } public object OldValue { get; set; } public object NewValue { get; set; } public ViewStateChange(WorkflowViewStateService viewStateService) { this.viewStateService = viewStateService; } public override string Description { get { return SR.ViewStateUndoUnitDescription; } } public override bool Apply() { viewStateService.StoreViewState(Item, Key, NewValue); this.viewStateService.RaiseUndoableViewStateChangedEvent(Item, Key, NewValue, OldValue); return true; } public override Change GetInverse() { return new ViewStateChange(this.viewStateService) { Item = this.Item, Key = this.Key, OldValue = this.NewValue, NewValue = this.OldValue }; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SingleConverter.cs
- HttpBrowserCapabilitiesWrapper.cs
- OrderedDictionary.cs
- ModelVisual3D.cs
- ReadWriteObjectLock.cs
- GeneralTransform3DTo2DTo3D.cs
- input.cs
- DataGridGeneralPage.cs
- CompoundFileDeflateTransform.cs
- UndirectedGraph.cs
- MsdtcClusterUtils.cs
- Repeater.cs
- GetCardDetailsRequest.cs
- TypeUtil.cs
- OleDbFactory.cs
- GroupBoxAutomationPeer.cs
- QilTargetType.cs
- HTTPNotFoundHandler.cs
- FormsAuthenticationConfiguration.cs
- AuthenticatedStream.cs
- WebEventTraceProvider.cs
- COM2PictureConverter.cs
- PolicyStatement.cs
- StdValidatorsAndConverters.cs
- ValidationSummary.cs
- BindingMemberInfo.cs
- TimeSpanSecondsConverter.cs
- MeasureData.cs
- ExceptionList.cs
- CodeBlockBuilder.cs
- Types.cs
- CFGGrammar.cs
- TaskFactory.cs
- RuleRefElement.cs
- TransformerInfo.cs
- ThemeConfigurationDialog.cs
- RuleProcessor.cs
- ConfigXmlElement.cs
- BinaryMethodMessage.cs
- MaterialGroup.cs
- TextBlock.cs
- SemanticBasicElement.cs
- DecoderBestFitFallback.cs
- WebPartConnectVerb.cs
- bidPrivateBase.cs
- ServiceSecurityAuditElement.cs
- CheckBox.cs
- StagingAreaInputItem.cs
- GlobalItem.cs
- RuleInfoComparer.cs
- HttpGetClientProtocol.cs
- ModelTreeEnumerator.cs
- DataGridHeaderBorder.cs
- DefaultBindingPropertyAttribute.cs
- TextDecorationCollectionConverter.cs
- GeneratedView.cs
- wmiprovider.cs
- LinearGradientBrush.cs
- AppLevelCompilationSectionCache.cs
- MergeFilterQuery.cs
- IntSecurity.cs
- ServiceOperationViewControl.cs
- ByteViewer.cs
- ConfigurationSectionGroupCollection.cs
- ValidationRule.cs
- ColumnMapVisitor.cs
- _ShellExpression.cs
- VisualState.cs
- DbDataSourceEnumerator.cs
- EditorResources.cs
- DbExpressionVisitor_TResultType.cs
- SqlDuplicator.cs
- MemberInfoSerializationHolder.cs
- StatusBarDesigner.cs
- control.ime.cs
- BaseTemplateCodeDomTreeGenerator.cs
- initElementDictionary.cs
- HebrewCalendar.cs
- FormatterServices.cs
- ActionFrame.cs
- SmtpMail.cs
- MarkupWriter.cs
- QuaternionIndependentAnimationStorage.cs
- HttpResponseBase.cs
- ScriptingJsonSerializationSection.cs
- dbenumerator.cs
- XamlBrushSerializer.cs
- KoreanLunisolarCalendar.cs
- ECDiffieHellmanCngPublicKey.cs
- isolationinterop.cs
- __TransparentProxy.cs
- EpmCustomContentSerializer.cs
- XPathBinder.cs
- OrderingQueryOperator.cs
- ParenthesizePropertyNameAttribute.cs
- JsonSerializer.cs
- HashSet.cs
- VirtualPathProvider.cs
- NotificationContext.cs
- TransactionException.cs