Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / Tools / System.Activities.Presentation / System / Activities / Presentation / View / ParserContext.cs / 1305376 / ParserContext.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Activities.Presentation.View { using Microsoft.VisualBasic.Activities; using System.Activities.Presentation.Model; using System.Activities.Presentation.Hosting; using System.Activities.Presentation.Xaml; using System.Collections.Generic; using System.ComponentModel; using System.Globalization; using System.Linq; using System.Reflection; using System.Runtime; using System.Windows.Markup; using System.Xaml; class ParserContext : LocationReferenceEnvironment, IValueSerializerContext, IXamlNameResolver, INamespacePrefixLookup, IXamlNamespaceResolver { ModelItem baseModelItem; EditingContext context; IDictionarynamespaceLookup; public ParserContext() { } public ParserContext(ModelItem modelItem) { this.Initialize(modelItem); } public IContainer Container { get { return null; } } public object Instance { get; internal set; } public PropertyDescriptor PropertyDescriptor { get; internal set; } public override Activity Root { get { return null; } } IDictionary NamespaceLookup { get { if (this.namespaceLookup == null) { this.namespaceLookup = new Dictionary (); } return this.namespaceLookup; } } public bool Initialize(ModelItem modelItem) { this.baseModelItem = modelItem; if (null != modelItem) { this.context = modelItem.GetEditingContext(); } return (null != this.baseModelItem); } public override bool IsVisible(LocationReference reference) { object other = this.Resolve(reference.Name); return object.ReferenceEquals(other, reference); } public override bool TryGetLocationReference(string name, out LocationReference result) { result = (LocationReference)this.Resolve(name); return result != null; } public string GetNamespace(string prefix) { var nameSpace = this.NamespaceLookup. Where(p => string.Equals(p.Value, prefix)). Select(p => p.Key). FirstOrDefault(); return nameSpace; } public IEnumerable GetNamespacePrefixes() { List namespacePrefixes = new List (); LoadNameSpace(namespacePrefixes); return namespacePrefixes; } public override IEnumerable GetLocationReferences() { List toReturn = new List (); if (baseModelItem != null) { //store the reference to the root model item ModelItem rootModelItem = baseModelItem.Root; //Get the activityModelItem while (baseModelItem != null && !typeof(Activity).IsAssignableFrom(baseModelItem.ItemType)) { baseModelItem = baseModelItem.Parent; } //try to get activity out of model item Activity activity = (null != baseModelItem ? baseModelItem.GetCurrentValue() : null) as Activity; if (activity != null) { IEnumerable variableCollection = VariableHelper.GetVariableCollection(baseModelItem); if (null != variableCollection) { foreach (ModelItem item in variableCollection) { toReturn.Add((LocationReference)item.GetCurrentValue()); } } // Now, check if activity contains action handlers which defined that variable IEnumerable variablesInActionHandlers = VariableHelper.FindActionHandlerVariables(baseModelItem); if (null != variablesInActionHandlers) { foreach (ModelItem variableModelItem in variablesInActionHandlers) { toReturn.Add((LocationReference)variableModelItem.GetCurrentValue()); } } // Now try all variables in Scope. IEnumerable allVariablesInScope = VariableHelper.FindVariablesInScope(baseModelItem); if (null != allVariablesInScope) { foreach (ModelItem variableModelItem in allVariablesInScope) { toReturn.Add((LocationReference)variableModelItem.GetCurrentValue()); } } } // As a final search , try too see if the user is trying to bind to the Arguments in // the custom type designer. if (ActivityBuilderHelper.IsActivityBuilderType(rootModelItem)) { foreach (Variable variable in ActivityBuilderHelper.GetVariables(rootModelItem)) { toReturn.Add(variable); } } } return toReturn; } public object Resolve(string name) { Object retVal = null; if (baseModelItem != null && retVal == null) { //store the reference to the root model item ModelItem rootModelItem = baseModelItem.Root; //Get the activityModelItem while (baseModelItem != null && !typeof(Activity).IsAssignableFrom(baseModelItem.ItemType)) { baseModelItem = baseModelItem.Parent; } //try to get activity out of model item Activity activity = (null != baseModelItem ? baseModelItem.GetCurrentValue() : null) as Activity; if (activity != null) { IEnumerable variableCollection = VariableHelper.GetVariableCollection(baseModelItem); if (null != variableCollection) { retVal = variableCollection. Where(p => string.Equals(name, p.Properties["Name"].ComputedValue)). Select(p => p.GetCurrentValue()). FirstOrDefault(); } // Now, check if activity contains action handlers which defined that variable if (retVal == null) { IEnumerable variablesInActionHandlers = VariableHelper.FindActionHandlerVariables(baseModelItem); foreach (ModelItem variableModelItem in variablesInActionHandlers) { Variable variable = (Variable)variableModelItem.GetCurrentValue(); if (variable.Name.Equals(name)) { retVal = variable; break; } } } // Now try all variables in Scope. if (retVal == null) { IEnumerable allVariablesInScope = VariableHelper.FindVariablesInScope(baseModelItem); foreach (ModelItem variableModelItem in allVariablesInScope) { Variable variable = (Variable)variableModelItem.GetCurrentValue(); if (variable != null) { if (variable.Name.Equals(name)) { retVal = variable; break; } } } } } // As a final search , try too see if the user is trying to bind to the Arguments in // the custom type designer. if (retVal == null && ActivityBuilderHelper.IsActivityBuilderType(rootModelItem)) { foreach (Variable variable in ActivityBuilderHelper.GetVariables(rootModelItem)) { if (variable.Name.Equals(name)) { retVal = variable; break; } } } } return retVal; } public object Resolve(string name, out bool isFullyInitialized) { object result = Resolve(name); isFullyInitialized = (result != null); return result; } public bool IsFixupTokenAvailable { get { return false; } } internal IEnumerable Namespaces { get { var namespacesToReturn = new HashSet (); //combine default import namespaces foreach (var import in VisualBasicSettings.Default.ImportReferences) { namespacesToReturn.Add(import.Import); } //with custom ones, defined in user provided assemblies if (null != this.namespaceLookup) { foreach (var nameSpace in this.namespaceLookup.Keys) { //out of full namespace declaration (i.e. "clr-namespace: ;assembly= " //get clear namespace name int startIndex = nameSpace.IndexOf(":", StringComparison.Ordinal); int endIndex = nameSpace.IndexOf(";", StringComparison.Ordinal); if (startIndex >= 0 && endIndex >= 0) { string clrNamespace = nameSpace.Substring(startIndex + 1, endIndex - startIndex - 1); namespacesToReturn.Add(clrNamespace); } } } ImportedNamespaceContextItem importedNamespaces = this.context.Items.GetValue (); namespacesToReturn.UnionWith(importedNamespaces.ImportedNamespaces); //return all namespaces return namespacesToReturn; } } public object GetFixupToken(IEnumerable names) { return null; } public object GetFixupToken(IEnumerable names, bool canAssignDirectly) { return null; } public object GetService(Type serviceType) { if (serviceType == typeof(IXamlNameResolver) || serviceType == typeof(INamespacePrefixLookup) || serviceType == typeof(IXamlNamespaceResolver)) { return this; } else { return null; } } public ValueSerializer GetValueSerializerFor(Type type) { return null; } public ValueSerializer GetValueSerializerFor(PropertyDescriptor descriptor) { return null; } public string LookupPrefix(string ns) { //get reference to namespace lookup dictionary (create one if necessary) var lookupTable = this.NamespaceLookup; string prefix; //check if given namespace is already registered if (!lookupTable.TryGetValue(ns, out prefix)) { //no, create a unique prefix prefix = string.Format(CultureInfo.InvariantCulture, "__{0}", Guid.NewGuid().ToString().Replace("-", "").Substring(0, 5)); //and store value in the dictionary lookupTable[ns] = prefix; } //return prefix return prefix; } public void OnComponentChanged() { throw FxTrace.Exception.AsError(new NotSupportedException()); } public bool OnComponentChanging() { throw FxTrace.Exception.AsError(new NotSupportedException()); } void LoadNameSpace(List result) { if (null == this.context) { Fx.Assert("EditingContext is null"); return; } AssemblyContextControlItem assemblyContext = this.context.Items.GetValue (); if (null == assemblyContext) { Fx.Assert("AssemblyContextControlItem not defined in EditingContext.Items"); return; } if (null != assemblyContext.LocalAssemblyName) { result.Add(GetEntry(assemblyContext.LocalAssemblyName)); } if (null != assemblyContext.ReferencedAssemblyNames) { foreach (AssemblyName name in assemblyContext.ReferencedAssemblyNames) { result.Add(GetEntry(name)); } } } NamespaceDeclaration GetEntry(AssemblyName name) { string ns = string.Format(CultureInfo.InvariantCulture, "clr-namespace:{0};assembly={1}", Guid.NewGuid().ToString().Replace('-', '_'), name.Name); return new NamespaceDeclaration(ns, Guid.NewGuid().ToString()); } IEnumerable > IXamlNameResolver.GetAllNamesAndValuesInScope() { return null; } event EventHandler IXamlNameResolver.OnNameScopeInitializationComplete { add { } remove { } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Activities.Presentation.View { using Microsoft.VisualBasic.Activities; using System.Activities.Presentation.Model; using System.Activities.Presentation.Hosting; using System.Activities.Presentation.Xaml; using System.Collections.Generic; using System.ComponentModel; using System.Globalization; using System.Linq; using System.Reflection; using System.Runtime; using System.Windows.Markup; using System.Xaml; class ParserContext : LocationReferenceEnvironment, IValueSerializerContext, IXamlNameResolver, INamespacePrefixLookup, IXamlNamespaceResolver { ModelItem baseModelItem; EditingContext context; IDictionary namespaceLookup; public ParserContext() { } public ParserContext(ModelItem modelItem) { this.Initialize(modelItem); } public IContainer Container { get { return null; } } public object Instance { get; internal set; } public PropertyDescriptor PropertyDescriptor { get; internal set; } public override Activity Root { get { return null; } } IDictionary NamespaceLookup { get { if (this.namespaceLookup == null) { this.namespaceLookup = new Dictionary (); } return this.namespaceLookup; } } public bool Initialize(ModelItem modelItem) { this.baseModelItem = modelItem; if (null != modelItem) { this.context = modelItem.GetEditingContext(); } return (null != this.baseModelItem); } public override bool IsVisible(LocationReference reference) { object other = this.Resolve(reference.Name); return object.ReferenceEquals(other, reference); } public override bool TryGetLocationReference(string name, out LocationReference result) { result = (LocationReference)this.Resolve(name); return result != null; } public string GetNamespace(string prefix) { var nameSpace = this.NamespaceLookup. Where(p => string.Equals(p.Value, prefix)). Select(p => p.Key). FirstOrDefault(); return nameSpace; } public IEnumerable GetNamespacePrefixes() { List namespacePrefixes = new List (); LoadNameSpace(namespacePrefixes); return namespacePrefixes; } public override IEnumerable GetLocationReferences() { List toReturn = new List (); if (baseModelItem != null) { //store the reference to the root model item ModelItem rootModelItem = baseModelItem.Root; //Get the activityModelItem while (baseModelItem != null && !typeof(Activity).IsAssignableFrom(baseModelItem.ItemType)) { baseModelItem = baseModelItem.Parent; } //try to get activity out of model item Activity activity = (null != baseModelItem ? baseModelItem.GetCurrentValue() : null) as Activity; if (activity != null) { IEnumerable variableCollection = VariableHelper.GetVariableCollection(baseModelItem); if (null != variableCollection) { foreach (ModelItem item in variableCollection) { toReturn.Add((LocationReference)item.GetCurrentValue()); } } // Now, check if activity contains action handlers which defined that variable IEnumerable variablesInActionHandlers = VariableHelper.FindActionHandlerVariables(baseModelItem); if (null != variablesInActionHandlers) { foreach (ModelItem variableModelItem in variablesInActionHandlers) { toReturn.Add((LocationReference)variableModelItem.GetCurrentValue()); } } // Now try all variables in Scope. IEnumerable allVariablesInScope = VariableHelper.FindVariablesInScope(baseModelItem); if (null != allVariablesInScope) { foreach (ModelItem variableModelItem in allVariablesInScope) { toReturn.Add((LocationReference)variableModelItem.GetCurrentValue()); } } } // As a final search , try too see if the user is trying to bind to the Arguments in // the custom type designer. if (ActivityBuilderHelper.IsActivityBuilderType(rootModelItem)) { foreach (Variable variable in ActivityBuilderHelper.GetVariables(rootModelItem)) { toReturn.Add(variable); } } } return toReturn; } public object Resolve(string name) { Object retVal = null; if (baseModelItem != null && retVal == null) { //store the reference to the root model item ModelItem rootModelItem = baseModelItem.Root; //Get the activityModelItem while (baseModelItem != null && !typeof(Activity).IsAssignableFrom(baseModelItem.ItemType)) { baseModelItem = baseModelItem.Parent; } //try to get activity out of model item Activity activity = (null != baseModelItem ? baseModelItem.GetCurrentValue() : null) as Activity; if (activity != null) { IEnumerable variableCollection = VariableHelper.GetVariableCollection(baseModelItem); if (null != variableCollection) { retVal = variableCollection. Where(p => string.Equals(name, p.Properties["Name"].ComputedValue)). Select(p => p.GetCurrentValue()). FirstOrDefault(); } // Now, check if activity contains action handlers which defined that variable if (retVal == null) { IEnumerable variablesInActionHandlers = VariableHelper.FindActionHandlerVariables(baseModelItem); foreach (ModelItem variableModelItem in variablesInActionHandlers) { Variable variable = (Variable)variableModelItem.GetCurrentValue(); if (variable.Name.Equals(name)) { retVal = variable; break; } } } // Now try all variables in Scope. if (retVal == null) { IEnumerable allVariablesInScope = VariableHelper.FindVariablesInScope(baseModelItem); foreach (ModelItem variableModelItem in allVariablesInScope) { Variable variable = (Variable)variableModelItem.GetCurrentValue(); if (variable != null) { if (variable.Name.Equals(name)) { retVal = variable; break; } } } } } // As a final search , try too see if the user is trying to bind to the Arguments in // the custom type designer. if (retVal == null && ActivityBuilderHelper.IsActivityBuilderType(rootModelItem)) { foreach (Variable variable in ActivityBuilderHelper.GetVariables(rootModelItem)) { if (variable.Name.Equals(name)) { retVal = variable; break; } } } } return retVal; } public object Resolve(string name, out bool isFullyInitialized) { object result = Resolve(name); isFullyInitialized = (result != null); return result; } public bool IsFixupTokenAvailable { get { return false; } } internal IEnumerable Namespaces { get { var namespacesToReturn = new HashSet (); //combine default import namespaces foreach (var import in VisualBasicSettings.Default.ImportReferences) { namespacesToReturn.Add(import.Import); } //with custom ones, defined in user provided assemblies if (null != this.namespaceLookup) { foreach (var nameSpace in this.namespaceLookup.Keys) { //out of full namespace declaration (i.e. "clr-namespace: ;assembly= " //get clear namespace name int startIndex = nameSpace.IndexOf(":", StringComparison.Ordinal); int endIndex = nameSpace.IndexOf(";", StringComparison.Ordinal); if (startIndex >= 0 && endIndex >= 0) { string clrNamespace = nameSpace.Substring(startIndex + 1, endIndex - startIndex - 1); namespacesToReturn.Add(clrNamespace); } } } ImportedNamespaceContextItem importedNamespaces = this.context.Items.GetValue (); namespacesToReturn.UnionWith(importedNamespaces.ImportedNamespaces); //return all namespaces return namespacesToReturn; } } public object GetFixupToken(IEnumerable names) { return null; } public object GetFixupToken(IEnumerable names, bool canAssignDirectly) { return null; } public object GetService(Type serviceType) { if (serviceType == typeof(IXamlNameResolver) || serviceType == typeof(INamespacePrefixLookup) || serviceType == typeof(IXamlNamespaceResolver)) { return this; } else { return null; } } public ValueSerializer GetValueSerializerFor(Type type) { return null; } public ValueSerializer GetValueSerializerFor(PropertyDescriptor descriptor) { return null; } public string LookupPrefix(string ns) { //get reference to namespace lookup dictionary (create one if necessary) var lookupTable = this.NamespaceLookup; string prefix; //check if given namespace is already registered if (!lookupTable.TryGetValue(ns, out prefix)) { //no, create a unique prefix prefix = string.Format(CultureInfo.InvariantCulture, "__{0}", Guid.NewGuid().ToString().Replace("-", "").Substring(0, 5)); //and store value in the dictionary lookupTable[ns] = prefix; } //return prefix return prefix; } public void OnComponentChanged() { throw FxTrace.Exception.AsError(new NotSupportedException()); } public bool OnComponentChanging() { throw FxTrace.Exception.AsError(new NotSupportedException()); } void LoadNameSpace(List result) { if (null == this.context) { Fx.Assert("EditingContext is null"); return; } AssemblyContextControlItem assemblyContext = this.context.Items.GetValue (); if (null == assemblyContext) { Fx.Assert("AssemblyContextControlItem not defined in EditingContext.Items"); return; } if (null != assemblyContext.LocalAssemblyName) { result.Add(GetEntry(assemblyContext.LocalAssemblyName)); } if (null != assemblyContext.ReferencedAssemblyNames) { foreach (AssemblyName name in assemblyContext.ReferencedAssemblyNames) { result.Add(GetEntry(name)); } } } NamespaceDeclaration GetEntry(AssemblyName name) { string ns = string.Format(CultureInfo.InvariantCulture, "clr-namespace:{0};assembly={1}", Guid.NewGuid().ToString().Replace('-', '_'), name.Name); return new NamespaceDeclaration(ns, Guid.NewGuid().ToString()); } IEnumerable > IXamlNameResolver.GetAllNamesAndValuesInScope() { return null; } event EventHandler IXamlNameResolver.OnNameScopeInitializationComplete { add { } remove { } } } } // 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
- ConcatQueryOperator.cs
- MemoryResponseElement.cs
- SortQuery.cs
- RuleRef.cs
- RouteItem.cs
- TransformGroup.cs
- ObjectDataSourceView.cs
- SqlInternalConnection.cs
- IItemProperties.cs
- ColumnMap.cs
- EmissiveMaterial.cs
- ContentType.cs
- XPathNavigator.cs
- StrokeIntersection.cs
- ModelToObjectValueConverter.cs
- ThreadInterruptedException.cs
- XmlChildNodes.cs
- BrowserCapabilitiesFactoryBase.cs
- User.cs
- HttpCookieCollection.cs
- AnnotationObservableCollection.cs
- CssClassPropertyAttribute.cs
- EmbeddedMailObjectCollectionEditor.cs
- PrintingPermission.cs
- DataListItemCollection.cs
- XmlValidatingReaderImpl.cs
- FeatureSupport.cs
- BasicCellRelation.cs
- WorkflowTransactionOptions.cs
- VisualStyleElement.cs
- AssemblyAttributes.cs
- IndependentAnimationStorage.cs
- keycontainerpermission.cs
- Button.cs
- mda.cs
- BufferedWebEventProvider.cs
- wgx_exports.cs
- DataContext.cs
- ManifestResourceInfo.cs
- WindowsRegion.cs
- EdmMember.cs
- TraceUtility.cs
- PathData.cs
- RangeValidator.cs
- EventQueueState.cs
- XmlnsCompatibleWithAttribute.cs
- ColumnBinding.cs
- HTMLTextWriter.cs
- RoleService.cs
- AvtEvent.cs
- XPathNavigatorKeyComparer.cs
- StructuralObject.cs
- InstanceOwner.cs
- RuntimeCompatibilityAttribute.cs
- Glyph.cs
- MimeBasePart.cs
- InkCanvasInnerCanvas.cs
- EndpointDiscoveryBehavior.cs
- DictationGrammar.cs
- ResourceContainer.cs
- MouseButtonEventArgs.cs
- AxisAngleRotation3D.cs
- RenderOptions.cs
- DictionaryEntry.cs
- CompoundFileReference.cs
- GroupDescription.cs
- AddingNewEventArgs.cs
- PeerNameRecordCollection.cs
- SqlClientWrapperSmiStream.cs
- NamedPipeProcessProtocolHandler.cs
- ReaderWriterLockWrapper.cs
- SecurityCredentialsManager.cs
- BufferedGraphicsManager.cs
- WebScriptServiceHostFactory.cs
- CodeDelegateCreateExpression.cs
- DeploymentSectionCache.cs
- SimpleTypeResolver.cs
- HelpFileFileNameEditor.cs
- GatewayIPAddressInformationCollection.cs
- LogAppendAsyncResult.cs
- BitmapMetadataBlob.cs
- XmlSchemaSet.cs
- Utils.cs
- XmlProcessingInstruction.cs
- SelectionProcessor.cs
- DataIdProcessor.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- FormClosingEvent.cs
- RangeValuePattern.cs
- LicenseManager.cs
- WindowsTokenRoleProvider.cs
- IResourceProvider.cs
- DeadCharTextComposition.cs
- XmlNavigatorFilter.cs
- TemplateLookupAction.cs
- PackageFilter.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- TextServicesDisplayAttribute.cs
- GlyphTypeface.cs
- SystemDiagnosticsSection.cs