示例#1
0
        private void CreateNewSectionItem(NodeConfigSectionBase section1, DiagramNodeViewModel vm)
        {
            var item = Activator.CreateInstance(section1.SourceType) as GenericNodeChildItem;

            item.Node = vm.GraphItemObject as GraphNode;
            DiagramViewModel.CurrentRepository.Add(item);
            item.Name = item.Repository.GetUniqueName(section1.Name);

            OnAdd(section1, item);

            if (typeof(ITypedItem).IsAssignableFrom(section1.SourceType))
            {
                InvertApplication.Execute(new SelectTypeCommand()
                {
                    PrimitiveOnly     = false,
                    AllowNone         = false,
                    IncludePrimitives = true,
                    Item = item as ITypedItem,
                    OnSelectionFinished = () =>
                    {
                        item.IsSelected = true;
                        item.IsEditing  = true;
                    }
                });
            }
            else
            {
                item.IsEditing = true;
            }
        }
示例#2
0
 private void SelectReferenceItem(NodeConfigSectionBase section, NodeConfigSectionBase section1)
 {
     if (section.AddCommandType != null)
     {
     }
     if (section1.AllowDuplicates)
     {
         InvertGraphEditor.WindowManager.InitItemWindow(section1.GenericSelector(GraphItem).ToArray(),
                                                        (selected) => { GraphItem.AddReferenceItem(selected, section1); });
     }
     else
     {
         IEnumerable <GenericReferenceItem> ritems = GraphItem.PersistedItems.OfType <GenericReferenceItem>();
         IEnumerable <IGraphItem>           items  = section1.GenericSelector(GraphItem).ToArray().Where(p => !ritems.Select(x => x.SourceIdentifier).Contains(p.Identifier));
         InvertGraphEditor.WindowManager.InitItemWindow(items, (selected) => { GraphItem.AddReferenceItem(selected, section1); });
     }
 }
示例#3
0
 private void OnAdd(NodeConfigSectionBase section, NodeConfigSectionBase section1, DiagramNodeViewModel vm)
 {
     if (section1.AllowAdding && section1.ReferenceType != null && !section1.HasPredefinedOptions)
     {
         SelectReferenceItem(section, section1);
     }
     else
     {
         if (section1.GenericSelector != null && section1.HasPredefinedOptions)
         {
             SelectFromOptions(section1, vm);
         }
         else
         {
             CreateNewSectionItem(section1, vm);
         }
     }
 }
示例#4
0
        private void CreateNewSectionItem(NodeConfigSectionBase section, DiagramNodeViewModel vm)
        {
            var item = Activator.CreateInstance(section.SourceType) as GenericNodeChildItem;

            item.Node = vm.GraphItemObject as GraphNode;
            DiagramViewModel.CurrentRepository.Add(item);
            item.Name = item.Repository.GetUniqueName(section.Name);

            OnAdd(section, item);

            if (typeof(ITypedItem).IsAssignableFrom(section.SourceType))
            {
                InvertApplication.Execute(new SelectTypeCommand()
                {
                    PrimitiveOnly     = false,
                    AllowNoneType     = section.AllowNoneType,
                    IncludePrimitives = true,
                    Item = item as ITypedItem,
                    OnSelectionFinished = () => {
                        // Set the initial item name to the name o the type
                        GenericTypedChildItem typedChildItem = item as GenericTypedChildItem;
                        if (typedChildItem != null)
                        {
                            typedChildItem.Name =
                                typedChildItem.RelatedTypeNode != null ?
                                typedChildItem.RelatedTypeNode.Name :
                                typedChildItem.RelatedTypeName;

                            InvertGraphEditor.DesignerWindow.RefreshContent();
                            //InvertGraphEditor.DesignerWindow.DiagramDrawer.CachedChildren.First(drawer => drawer.ViewModelObject.DataObject == item).Refresh(InvertApplication.Container.Resolve<IPlatformDrawer>());
                        }

                        item.IsSelected = true;
                        item.IsEditing  = true;
                    }
                });
            }
            else
            {
                item.IsEditing = true;
            }
        }
示例#5
0
        private void SelectFromOptions(NodeConfigSectionBase section1, DiagramNodeViewModel vm)
        {
            InvertGraphEditor.WindowManager.InitItemWindow(section1.GenericSelector(GraphItem).ToArray(),
                                                           (selected) =>
            {
                var item = selected as GenericNodeChildItem;

                item.Node = vm.GraphItemObject as GraphNode;
                DiagramViewModel.CurrentRepository.Add(item);
                if (section1.OnAdd != null)
                {
                    section1.OnAdd(item);
                }
                else
                {
                    item.Name = item.Repository.GetUniqueName(section1.Name);
                }

                item.IsEditing = true;
                OnAdd(section1, item);
            });
        }
示例#6
0
        internal void AddReferenceItem(GenericReferenceItem[] mirrorItems, IGraphItem item, NodeConfigSectionBase mirrorSection)
        {
            var current = mirrorItems.FirstOrDefault(p => p.SourceIdentifier == item.Identifier);

            if (current != null && !mirrorSection.AllowDuplicates)
            {
                return;
            }

            if (Node.Repository.GetById <IDiagramNodeItem>(item.Identifier) == null)
            {
                var refItem = item as GenericReferenceItem;
                refItem.Node = this;
                Node.Repository.Add(item);
            }
            else
            {
                var newMirror = Activator.CreateInstance(mirrorSection.SourceType) as GenericReferenceItem;
                newMirror.Node             = this;
                newMirror.SourceIdentifier = item.Identifier;
                Node.Repository.Add(newMirror);
            }
            Node.Repository.Commit();
            //Node.Project.AddItem(newMirror);
        }
示例#7
0
 public void AddReferenceItem(IGraphItem item, NodeConfigSectionBase mirrorSection)
 {
     AddReferenceItem(PersistedItems.Where(p => p.GetType() == mirrorSection.ReferenceType).Cast <GenericReferenceItem>().ToArray(), item, mirrorSection);
 }
 protected override void OnAdd(NodeConfigSectionBase configSection, GenericNodeChildItem item)
 {
     base.OnAdd(configSection, item);
 }
示例#9
0
 protected virtual void OnAdd(NodeConfigSectionBase configSection, GenericNodeChildItem item)
 {
 }
示例#10
0
        private void AddSection(NodeConfigSectionBase section)
        {
            //if (DiagramViewModel != null && DiagramViewModel.CurrentRepository.CurrentFilter.IsAllowed(null, section.SourceType)) return;
            var section1 = section as NodeConfigSectionBase;

            if (!IsVisible(section.Visibility))
            {
                return;
            }

            if (!string.IsNullOrEmpty(section.Name))
            {
                var header = new GenericItemHeaderViewModel()
                {
                    Name          = section.Name,
                    NodeViewModel = this,
                    NodeConfig    = NodeConfig,
                    SectionConfig = section1,
                };
                //if (section.AttributeInfo != null)
                //{
                //    header.IsNewLine = inputConfig.AttributeInfo.IsNewRow;
                //}
                //else
                //{
                //    header.IsNewLine = true;
                //}

                header.AddCommand = section1.AllowAdding ? new LambdaCommand("Add Item", () =>
                {
                    OnAdd(section, section1, this);
                }) : null;


                ContentItems.Add(header);
            }

            if (section1.GenericSelector != null && section1.ReferenceType == null)
            {
                foreach (var item in section1.GenericSelector(GraphItem).OfType <IDiagramNodeItem>().OrderBy(p => p.Order))
                {
                    if (section.SourceType.IsAssignableFrom(item.GetType()))
                    {
                        var vm            = GetDataViewModel(item) as GraphItemViewModel;
                        var itemViewModel = vm as ItemViewModel;
                        if (itemViewModel != null)
                        {
                            itemViewModel.IsEditable = section1.IsEditable;
                            ApplyInputConfiguration(section, item, vm.InputConnector, section.AllowMultipleInputs);
                            ApplyOutputConfiguration(section, item, vm.OutputConnector, section.AllowMutlipleOutputs);
                        }

                        if (vm == null)
                        {
                            InvertApplication.LogError(
                                string.Format(
                                    "Couldn't find view-model for {0} in section {1} with child type {2}",
                                    item.GetType(), section1.Name, section1.SourceType.Name));
                            continue;
                        }

                        vm.DiagramViewModel = DiagramViewModel;
                        ContentItems.Add(vm);
                    }
                    else
                    {
                        InvertApplication.LogError(string.Format("Types do not match {0} and {1}", section.SourceType,
                                                                 item.GetType()));
                    }
                }
            }
            else
            {
                foreach (var item in GraphItem.PersistedItems)
                {
                    if (section.SourceType.IsAssignableFrom(item.GetType()))
                    {
                        var vm = GetDataViewModel(item) as ItemViewModel;


                        if (vm == null)
                        {
                            InvertApplication.LogError(string.Format("Couldn't find view-model for {0}", item.GetType()));
                            continue;
                        }
                        vm.IsEditable       = section1.IsEditable;
                        vm.DiagramViewModel = DiagramViewModel;
                        if (section1.HasPredefinedOptions)
                        {
                            vm.IsEditable = false;
                        }
                        ApplyInputConfiguration(section, item, vm.InputConnector, section.AllowMultipleInputs);
                        ApplyOutputConfiguration(section, item, vm.OutputConnector, section.AllowMutlipleOutputs);
                        ContentItems.Add(vm);
                    }
                }
            }
        }