Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / Tools / System.Activities.Presentation / System / Activities / Presentation / Model / ModelServiceImpl.cs / 1305376 / ModelServiceImpl.cs
//------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
namespace System.Activities.Presentation.Model
{
using System.Collections.Generic;
using System.Diagnostics;
using System.Activities.Presentation.Services;
using System.Runtime;
// This is the implementaion of the ModelService, this is published by the ModelTreeManager
// on the editingContext. This is just a facade to the modelTreemanager methods.
class ModelServiceImpl : ModelService
{
ModelTreeManager modelTreeManager;
public ModelServiceImpl(ModelTreeManager modelTreeManager)
{
if (modelTreeManager == null)
{
throw FxTrace.Exception.AsError( new ArgumentNullException("modelTreeManager"));
}
this.modelTreeManager = modelTreeManager;
}
public override event EventHandler ModelChanged;
public override ModelItem Root
{
get
{
return modelTreeManager.Root;
}
}
public override IEnumerable Find(ModelItem startingItem, Predicate match)
{
return modelTreeManager.Find(startingItem, match, false);
}
public override IEnumerable Find(ModelItem startingItem, Type type)
{
if (startingItem == null)
{
throw FxTrace.Exception.AsError( new ArgumentNullException("startingItem"));
}
if (type == null)
{
throw FxTrace.Exception.AsError( new ArgumentNullException("type"));
}
Fx.Assert(!type.IsValueType, "hmm why would some one search for modelitems for value types?");
return modelTreeManager.Find(startingItem, delegate(Type modelItemType)
{
return type.IsAssignableFrom(modelItemType);
}, false);
}
public override ModelItem FromName(ModelItem scope, string name, StringComparison comparison)
{
// The workflow component model does not implement a unique named activity object right now
// so we cannot support this feature.
throw FxTrace.Exception.AsError( new NotSupportedException());
}
internal void OnModelItemAdded(ModelItem modelItem)
{
Fx.Assert(modelItem != null, "modelItem should not be null");
if (ModelChanged != null)
{
Fx.Assert(modelItem != null, "trying to add empty model item");
List modelItemsAdded = new List(1);
modelItemsAdded.Add(modelItem);
ModelChanged.Invoke(this, new ModelChangedEventArgsImpl(modelItemsAdded, null, null));
modelTreeManager.SyncModelAndText();
}
}
internal void OnModelItemRemoved(ModelItem modelItem)
{
Fx.Assert(modelItem != null, "modelItem should not be null");
if (ModelChanged != null)
{
List modelItemsRemoved = new List(1);
modelItemsRemoved.Add(modelItem);
ModelChanged.Invoke(this, new ModelChangedEventArgsImpl(null, modelItemsRemoved, null));
modelTreeManager.SyncModelAndText();
}
}
internal void OnModelItemsRemoved(IEnumerable modelItems)
{
Fx.Assert(modelItems != null, "modelItem should not be null");
if (ModelChanged != null)
{
List modelItemsRemoved = new List();
modelItemsRemoved.AddRange(modelItems);
ModelChanged.Invoke(this, new ModelChangedEventArgsImpl(null, modelItemsRemoved, null));
modelTreeManager.SyncModelAndText();
}
}
internal void OnModelPropertyChanged(ModelProperty property)
{
Fx.Assert(property != null,"property cannot be null");
if (ModelChanged != null)
{
List propertiesChanged = new List(1);
propertiesChanged.Add(property);
ModelChanged.Invoke(this, new ModelChangedEventArgsImpl(null, null, propertiesChanged));
modelTreeManager.SyncModelAndText();
}
}
protected override ModelItem CreateItem(object instance)
{
return modelTreeManager.CreateModelItem(null, instance);
}
protected override ModelItem CreateItem(Type itemType, CreateOptions options, params object[] arguments)
{
Object instance = Activator.CreateInstance(itemType, arguments);
return modelTreeManager.CreateModelItem(null, instance);
}
protected override ModelItem CreateStaticMemberItem(Type type, string memberName)
{
throw FxTrace.Exception.AsError( new NotSupportedException());
}
internal ModelItem WrapAsModelItem(object instance)
{
return CreateItem(instance);
}
}
}
// 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
- EventSinkHelperWriter.cs
- ImageAutomationPeer.cs
- UnauthorizedAccessException.cs
- DataViewListener.cs
- SelectionRangeConverter.cs
- CqlQuery.cs
- SynchronizedInputHelper.cs
- ObjectStateEntry.cs
- LabelLiteral.cs
- Pair.cs
- NumericUpDownAccelerationCollection.cs
- XXXOnTypeBuilderInstantiation.cs
- XmlSchemaComplexContentRestriction.cs
- EmptyEnumerator.cs
- XsltArgumentList.cs
- FileEnumerator.cs
- LassoHelper.cs
- UnitySerializationHolder.cs
- StringPropertyBuilder.cs
- Line.cs
- PointHitTestParameters.cs
- UrlAuthorizationModule.cs
- Point3D.cs
- DelegatingHeader.cs
- BrowserDefinition.cs
- HttpServerProtocol.cs
- CanonicalFontFamilyReference.cs
- TransformedBitmap.cs
- ItemsControlAutomationPeer.cs
- HttpRequestTraceRecord.cs
- activationcontext.cs
- DiscreteKeyFrames.cs
- KeyValueConfigurationCollection.cs
- QueryAccessibilityHelpEvent.cs
- ListManagerBindingsCollection.cs
- UriExt.cs
- DataSourceListEditor.cs
- Color.cs
- DetailsViewPageEventArgs.cs
- FormViewDesigner.cs
- Function.cs
- JavascriptCallbackMessageInspector.cs
- Permission.cs
- DependencyObjectPropertyDescriptor.cs
- VirtualizingStackPanel.cs
- TraceEventCache.cs
- DynamicDataRoute.cs
- FontStyleConverter.cs
- COM2Enum.cs
- SecurityManager.cs
- ApplicationHost.cs
- VsPropertyGrid.cs
- ProxyAssemblyNotLoadedException.cs
- ExpressionNormalizer.cs
- ProfilePropertySettingsCollection.cs
- CodeTypeOfExpression.cs
- Recipient.cs
- EDesignUtil.cs
- TableHeaderCell.cs
- DataReceivedEventArgs.cs
- WebPartDisplayMode.cs
- SafeNativeMethods.cs
- OleDbRowUpdatedEvent.cs
- IndentedWriter.cs
- odbcmetadatafactory.cs
- DoubleAnimationClockResource.cs
- BaseCodeDomTreeGenerator.cs
- WebBrowserUriTypeConverter.cs
- AttributeEmitter.cs
- HotCommands.cs
- XamlTypeMapper.cs
- Object.cs
- ReturnEventArgs.cs
- BaseValidator.cs
- ActiveXSite.cs
- ToolStripItemImageRenderEventArgs.cs
- ListenerHandler.cs
- CodeDirectoryCompiler.cs
- PrintControllerWithStatusDialog.cs
- FillErrorEventArgs.cs
- StrongNameHelpers.cs
- InstanceData.cs
- RowToParametersTransformer.cs
- CustomPopupPlacement.cs
- ZoneLinkButton.cs
- AddingNewEventArgs.cs
- TreeNodeBinding.cs
- DataTemplateSelector.cs
- MembershipUser.cs
- HuffModule.cs
- SqlBulkCopyColumnMappingCollection.cs
- EventlogProvider.cs
- Italic.cs
- XPathScanner.cs
- Base64Stream.cs
- SqlNodeAnnotations.cs
- FileStream.cs
- SafeNativeMethods.cs
- PropertyManager.cs
- QilInvokeEarlyBound.cs