Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Vector3dCollection.cs
- MemberBinding.cs
- MetafileHeaderWmf.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- DesignerSerializerAttribute.cs
- TaiwanLunisolarCalendar.cs
- SafeCloseHandleCritical.cs
- XslTransform.cs
- OperationFormatter.cs
- InputScopeNameConverter.cs
- XmlDataSourceNodeDescriptor.cs
- MultiTouchSystemGestureLogic.cs
- EdmComplexTypeAttribute.cs
- WriterOutput.cs
- InheritanceContextChangedEventManager.cs
- PowerModeChangedEventArgs.cs
- ToolStripKeyboardHandlingService.cs
- SimpleFieldTemplateFactory.cs
- HttpServerProtocol.cs
- MetadataItem_Static.cs
- IfJoinedCondition.cs
- ValidationEventArgs.cs
- AttachedPropertyMethodSelector.cs
- XmlNamespaceManager.cs
- XmlSchemaDatatype.cs
- Imaging.cs
- CalendarDateChangedEventArgs.cs
- EntitySetDataBindingList.cs
- TextProperties.cs
- ISAPIApplicationHost.cs
- InitiatorSessionSymmetricMessageSecurityProtocol.cs
- UserPreferenceChangingEventArgs.cs
- EncryptedReference.cs
- InternalConfigConfigurationFactory.cs
- ScriptHandlerFactory.cs
- SafePointer.cs
- BitmapEffectDrawing.cs
- ScriptControlDescriptor.cs
- ControlAdapter.cs
- ClientTargetSection.cs
- _TransmitFileOverlappedAsyncResult.cs
- ToolTipService.cs
- ServiceChannelProxy.cs
- ScriptReferenceEventArgs.cs
- VisualTarget.cs
- ResourceReferenceExpression.cs
- TextRenderer.cs
- WriterOutput.cs
- serverconfig.cs
- XhtmlBasicTextViewAdapter.cs
- ListComponentEditorPage.cs
- ExpressionNode.cs
- BitmapDownload.cs
- ScalarType.cs
- ObjectContextServiceProvider.cs
- DoubleLinkListEnumerator.cs
- FixedPageAutomationPeer.cs
- X509ChainPolicy.cs
- Sql8ExpressionRewriter.cs
- WebPartCloseVerb.cs
- MSAAWinEventWrap.cs
- Utils.cs
- XPathPatternBuilder.cs
- BaseHashHelper.cs
- DataSourceExpressionCollection.cs
- CodeMemberEvent.cs
- HandoffBehavior.cs
- unsafenativemethodstextservices.cs
- WmlObjectListAdapter.cs
- Int16Storage.cs
- InheritedPropertyDescriptor.cs
- ModelItemKeyValuePair.cs
- DateTimeValueSerializer.cs
- XmlSchemaInclude.cs
- WebPartVerbCollection.cs
- StringReader.cs
- WebPartCancelEventArgs.cs
- DataSysAttribute.cs
- PasswordRecovery.cs
- LayoutManager.cs
- DeclaredTypeValidator.cs
- AssociatedControlConverter.cs
- TypeRestriction.cs
- AssemblyNameProxy.cs
- Win32SafeHandles.cs
- QilTypeChecker.cs
- ShutDownListener.cs
- pingexception.cs
- Reference.cs
- Utils.cs
- PackagePartCollection.cs
- HMAC.cs
- SiteMapHierarchicalDataSourceView.cs
- HtmlInputRadioButton.cs
- ObjectSecurity.cs
- MLangCodePageEncoding.cs
- EntityContainer.cs
- XmlProcessingInstruction.cs
- HMAC.cs
- ControlUtil.cs