Ejemplo n.º 1
0
        /// <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);
                    }
                }
            }
        }
Ejemplo n.º 2
0
        /// <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);
        }