Ejemplo n.º 1
0
 public void AssignPropertyChangedEventsOnInstanceViewModels()
 {
     foreach (var instanceViewModel in Instances)
     {
         instanceViewModel.PropertyChanged += (sender, args) => AnyValueChanged?.Invoke(args.PropertyName);
     }
 }
Ejemplo n.º 2
0
        private void HandlePropertyChecked(object sender, PropertyChangedEventArgs e)
        {
            var    senderAsViewModel = (VelocityPropertyViewModel)sender;
            string changedVariable   = null;

            switch (e.PropertyName)
            {
            case nameof(VelocityPropertyViewModel.IsChecked):
                changedVariable = senderAsViewModel.Name;
                break;
            }

            bool shouldRaiseValueChanged = false;

            if (changedVariable != null)
            {
                if (IsRootSelected)
                {
                    var isAlreadyInList = this.EntityManagedProperties.Contains(senderAsViewModel.Name);

                    if (senderAsViewModel.IsChecked && isAlreadyInList == false)
                    {
                        this.EntityManagedProperties.Add(senderAsViewModel.Name);
                        shouldRaiseValueChanged = true;
                    }
                    else if (senderAsViewModel.IsChecked == false && isAlreadyInList)
                    {
                        this.EntityManagedProperties.Remove(senderAsViewModel.Name);
                        shouldRaiseValueChanged = true;
                    }
                }
                else
                {
                    var instanceList = this.Instances.FirstOrDefault(item => item.Name == SelectedInstance?.Name)?.SelectedProperties;

                    if (instanceList != null)
                    {
                        var isAlreadyInList = instanceList.Contains(senderAsViewModel.Name);
                        if (senderAsViewModel.IsChecked && isAlreadyInList == false)
                        {
                            instanceList.Add(senderAsViewModel.Name);
                            shouldRaiseValueChanged = true;
                        }
                        else if (senderAsViewModel.IsChecked == false && isAlreadyInList)
                        {
                            instanceList.Remove(senderAsViewModel.Name);
                            shouldRaiseValueChanged = true;
                        }
                    }
                }

                if (shouldRaiseValueChanged)
                {
                    AnyValueChanged?.Invoke(e.PropertyName);
                }
            }
        }
Ejemplo n.º 3
0
        public NodeField(Instance instance, IObservableValue <string> name, IFlow flowInput, IFlow flowOutput, IOpacity opacity, ILaminarValueStore valueStore, IUserInterfaceManager userInterfaces)
            : base(name, flowInput, flowOutput, opacity)
        {
            _valueStore    = valueStore;
            UserInterfaces = userInterfaces;

            UserInterfaces.Displays = instance.RegisteredDisplays;
            UserInterfaces.Editors  = instance.RegisteredEditors;
            _factory = instance.Factory;

            _valueStore.ChildValueChanged += ValueStore_ChildValueChanged;
            _valueStore.ChangedAtKey      += (o, e) => AnyValueChanged?.Invoke(this, e);
            Name.OnChange += _valueStore.SetValueName;
        }
Ejemplo n.º 4
0
        private void HandlePropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            var changedSelection = false;
            var isPropertyBroadcastedExternally = false;

            if (e.PropertyName == nameof(SelectedInstance))
            {
                var blocker = new object();
                objectsBlockingChanges.Add(blocker);
                changedSelection = true;
                if (SelectedInstance != null)
                {
                    selectedItemProperties.Clear();
                    AddPropertiesForType(selectedItemProperties, SelectedInstance.Type);

                    // Check any properties that are checked by the instance
                    foreach (var selectedProperty in SelectedInstance.SelectedProperties)
                    {
                        var propertyViewModel = SelectedItemProperties.FirstOrDefault(item => item.Name == selectedProperty);
                        if (propertyViewModel != null)
                        {
                            propertyViewModel.IsChecked = true;
                        }
                    }

                    SelectedPropertyManagementMode = SelectedInstance.PropertyManagementMode;
                }
                else
                {
                    // If we notify this, then the json gets saved. We don't want that
                    SelectedPropertyManagementMode = EntityManagementMode;
                }

                objectsBlockingChanges.Remove(blocker);
            }
            else if (e.PropertyName == nameof(IsRootSelected))
            {
                // If it's set to true, make sure no instance is selected
                SelectedInstance = null;

                var blocker = new object();
                objectsBlockingChanges.Add(blocker);
                changedSelection = true;
                if (IsRootSelected)
                {
                    selectedItemProperties.Clear();

                    string type = GetFrbTypeForEntity(Entity);

                    AddPropertiesForType(selectedItemProperties, type);

                    foreach (var selectedProperty in this.EntityManagedProperties)
                    {
                        var propertyViewModel = SelectedItemProperties.FirstOrDefault(item => item.Name == selectedProperty);
                        if (propertyViewModel != null)
                        {
                            propertyViewModel.IsChecked = true;
                        }
                    }

                    SelectedPropertyManagementMode = EntityManagementMode;
                }
                objectsBlockingChanges.Remove(blocker);
            }
            else if (e.PropertyName == nameof(SelectedPropertyManagementMode))
            {
                isPropertyBroadcastedExternally = true;
                if (SelectedInstance != null)
                {
                    SelectedInstance.PropertyManagementMode = SelectedPropertyManagementMode;
                }
                else
                {
                    EntityManagementMode = SelectedPropertyManagementMode;
                }
            }

            if (changedSelection && IsRootSelected == false && SelectedInstance == null)
            {
                selectedItemProperties.Clear();
            }

            if (!changedSelection && RaiseChangeEvents && isPropertyBroadcastedExternally)
            {
                AnyValueChanged?.Invoke(e.PropertyName);
            }
        }
Ejemplo n.º 5
0
 private void Item_ValueChanged(object sender, TArgs e)
 {
     AnyValueChanged?.Invoke(sender, e);
 }