private void DeleteSelectedProperties()
 {
     foreach (var uiProperty in propertiesListView.SelectedItems.OfType <UIProperty>().ToList())
     {
         var uiRelatedProperty = uiProperty as UIRelatedProperty;
         if (uiRelatedProperty != null && RelationsContenerByRelatedProperty.ContainsKey(uiRelatedProperty))
         {
             var relationContener = RelationsContenerByRelatedProperty[uiRelatedProperty];
             Designer.Children.Remove(relationContener);
             relationContener.OnRemove();
         }
         UIType.DeleteProperty(uiProperty);
     }
 }
Esempio n. 2
0
        protected TypeBaseDesigner(IUIType uiType)
        {
            InitializeComponent();
            UIType      = uiType;
            DataContext = UIType;
            InitContextMenuCommandBindings();
            entityTypeExpander.PreviewMouseDown +=
                (sender, e) =>
            {
                if (e.LeftButton == MouseButtonState.Pressed && (MoreThanOneTypeSelected || !(VisualTreeHelperUtil.GetControlAscendant <ListView>(e.OriginalSource) == propertiesListView)))
                {
                    SelectOrUnselect();
                }
                else if (!IsSelected)
                {
                    IsSelected = true;
                }
            };
            if (!Init)
            {
                SizeChangedEventHandler sizeChangedHandler = null;
                sizeChangedHandler = delegate
                {
                    DrawRelations();
                    SizeChanged -= sizeChangedHandler;
                };
                SizeChanged += sizeChangedHandler;
            }
            SizeChanged += delegate { OnMove(); };
            uiType.RelatedPropertyDeleted += uiRelatedProperty =>
            {
                if (RelationsContenerByRelatedProperty.ContainsKey(uiRelatedProperty))
                {
                    Designer.Children.Remove(RelationsContenerByRelatedProperty[uiRelatedProperty]);
                    RelationsContenerByRelatedProperty.Remove(uiRelatedProperty);
                }
            };
            var uiEntityType = uiType as UIEntityType;

            if (uiEntityType != null)
            {
                uiEntityType.AbstractChanged += delegate { entityTypeExpander.GetBindingExpression(TypeBaseExpander.BorderBrushProperty).UpdateTarget(); }
            }
            ;
        }
Esempio n. 3
0
        internal void DrawComplexPropertyRelation(TypeBaseDesigner otherTypeDesigner, UIRelatedProperty relatedProperty)
        {
            if (RelationsContenerByRelatedProperty.ContainsKey(relatedProperty) || otherTypeDesigner.RelationsContenerByRelatedProperty.ContainsKey(relatedProperty))
            {
                return;
            }
            var complexProperty = (ComplexProperty)relatedProperty.BusinessInstance;
            int typeDesignerItemIndex;
            var complexPropertyRelation = new ComplexPropertyRelation(Designer, this, otherTypeDesigner, GetListViewItem(complexProperty, out typeDesignerItemIndex), typeDesignerItemIndex);
            var relationContener        = new RelationContener(complexPropertyRelation);

            Designer.Children.Add(relationContener);
            relationContener.SetBinding(Canvas.LeftProperty, new Binding {
                Source = complexPropertyRelation, Path = new PropertyPath("CanvasLeft")
            });
            relationContener.SetBinding(Canvas.TopProperty, new Binding {
                Source = complexPropertyRelation, Path = new PropertyPath("CanvasTop")
            });
            AddRelationContenerByRelatedProperty(UIType.Properties[complexProperty], relationContener);
            otherTypeDesigner.AddRelationContenerWithoutRelatedProperty(relationContener);
        }
Esempio n. 4
0
 protected internal virtual void DrawRelations()
 {
     if (UIType is UIEntityType)
     {
         foreach (var relatedProperty in UIType.Properties.OfType <UIRelatedProperty>().Where(uirp => !RelationsContenerByRelatedProperty.ContainsKey(uirp) && Designer.DesignerView.ContainsEntityType(uirp.RelatedType)))
         {
             DrawRelation(relatedProperty);
         }
     }
     else if (UIType is UIComplexType)
     {
         foreach (var relatedProperty in Designer.DesignerView.SelectMany(dv => dv.UIType.Properties).OfType <UIRelatedProperty>().Where(uirp => uirp.RelatedType == UIType && !RelationsContenerByRelatedProperty.ContainsKey(uirp)))
         {
             var otherType = Designer.Children.OfType <TypeBaseDesigner>().FirstOrDefault(td => td.UIType.Properties.Contains(relatedProperty));
             if (otherType != null)
             {
                 otherType.DrawRelation(relatedProperty);
             }
         }
     }
 }