/// <summary> /// The handler for activation for feature values /// </summary> private void HandleActivateFeatureValueRequest(LiteActivateFeatureValueRequestMessage request) { if (request.FieldDescriptor != null) { if (request.FieldDescriptor.IsGeometry) { // Geometry var element = request.Value as IFeatureGeometry; if (element != null && element.World != null) { HandleGeometryActivation(request.Sender, request.Feature, request.FieldDescriptor, element); } } else if (request.FieldDescriptor.IsJoin) { // Joins var element = request.Value as IJoinElement; if (element != null) { HandleJoinActivation(request.Sender, request.Feature, request.FieldDescriptor, element); } } if (request.FieldDescriptor.IsSmartLink) { // Smart Links var smartLinkType = request.FieldDescriptor.FieldType as FeatureSmartLinkType; if (smartLinkType.IsMulti) { // Multi Smart Link var multiSmartLink = request.Value as MultiSmartLink; var numberOfLinks = multiSmartLink.Count; if (numberOfLinks == 1) { // Multi Smart Link with a single linke HandleSingleSmartLinkActivation(request.Sender, request.Feature, request.FieldDescriptor, multiSmartLink.SmartLinks()[0]); } else if (numberOfLinks > 1) { // Multi Smart Link with multiple links HandleMultiSmartLinkActivation(request.Sender, request.Feature, request.FieldDescriptor, multiSmartLink); } } else { // Single Smart Link HandleSingleSmartLinkActivation(request.Sender, request.Feature, request.FieldDescriptor, request.Value as SingleSmartLink); } } } }
/// <summary> /// A feature value has been activated (ie, a hyperlinked value has been pressed). /// This information is sent on the messenger, to be dealt with by a FeatureValueActivation ViewModel /// that has been set up specifically for that purpose. /// </summary> protected override void OnFeatureValueActivated(Feature feature, FeatureFieldDescriptor field, object value) { // The base will raise the property changed notification base.OnFeatureValueActivated(feature, field, value); // Create a value activation request var request = new LiteActivateFeatureValueRequestMessage(this, feature, field, value); // Send the request on the messenger Messenger.Send(request); }