protected override void AddProperty(object property)
 {
     if (property == null)
     {
         throw new ArgumentNullException("property");
     }
     classMapping.Items = ArrayHelper.Append(classMapping.Items, property);
 }
 protected void AddProperty(object property)
 {
     if (property == null)
     {
         throw new ArgumentNullException("property");
     }
     component.Items = ArrayHelper.Append(component.Items, property);
 }
Пример #3
0
        public void AddToMapping(HbmMapping hbmMapping)
        {
            var hbmImport =
                new HbmImport
            {
                @class = importType.GetShortClassName(hbmMapping),
                rename = this.rename
            };

            hbmMapping.import = ArrayHelper.Append(hbmMapping.import, hbmImport);
        }
 public JoinedSubclassMapper(System.Type subClass, HbmMapping mapDoc) : base(subClass, mapDoc)
 {
     classMapping.name    = subClass.GetShortClassName(mapDoc);
     classMapping.extends = subClass.BaseType.GetShortClassName(mapDoc);
     if (classMapping.key == null)
     {
         classMapping.key = new HbmKey {
             column1 = subClass.BaseType.Name.ToLowerInvariant() + "_key"
         };
     }
     keyMapper    = new KeyMapper(subClass, classMapping.key);
     mapDoc.Items = ArrayHelper.Append(mapDoc.Items, classMapping);
 }
Пример #5
0
 public UnionSubclassMapper(System.Type subClass, HbmMapping mapDoc)
     : base(subClass, mapDoc)
 {
     classMapping         = new HbmUnionSubclass();
     classMapping.name    = subClass.GetShortClassName(mapDoc);
     classMapping.extends = subClass.BaseType.GetShortClassName(mapDoc);
     if (subClass.IsAbstract)
     {
         classMapping.@abstract         = true;
         classMapping.abstractSpecified = true;
     }
     mapDoc.Items = ArrayHelper.Append(mapDoc.Items, classMapping);
 }
Пример #6
0
        public void Join(string splitGroupId, Action <IJoinMapper> splitMapping)
        {
            IJoinMapper splitGroup;

            if (!JoinMappers.TryGetValue(splitGroupId, out splitGroup))
            {
                var hbmJoin = new HbmJoin();
                splitGroup = new JoinMapper(Container, splitGroupId, hbmJoin, MapDoc);
                JoinMappers.Add(splitGroupId, splitGroup);
                classMapping.join = ArrayHelper.Append(classMapping.join, hbmJoin);
            }

            splitMapping(splitGroup);
        }
Пример #7
0
        /// <summary>
        /// Adds the specified listener for the event being managed.
        /// </summary>
        /// <param name="listener">The listener to add.</param>
        private void AddListener(IEventListener <T> listener)
        {
            lock (this)
            {
                items = ArrayHelper.Append(items, new Subscription(listener));

                if (items.Length == 1)
                {
                    StartListening(source);

                    return;
                }
            }

            ScheduleCleanup(GC.CollectionCount(1));
        }
Пример #8
0
        public ClassMapper(System.Type rootClass, HbmMapping mapDoc, MemberInfo idProperty)
            : base(rootClass, mapDoc)
        {
            classMapping      = new HbmClass();
            classMapping.name = rootClass.GetShortClassName(mapDoc);
            if (rootClass.IsAbstract)
            {
                classMapping.@abstract         = true;
                classMapping.abstractSpecified = true;
            }

            var hbmId = new HbmId();

            classMapping.Item = hbmId;
            idMapper          = new IdMapper(idProperty, hbmId);

            mapDoc.Items = ArrayHelper.Append(mapDoc.Items, classMapping);
        }
Пример #9
0
 public SubclassMapper(System.Type subClass, HbmMapping mapDoc) : base(subClass, mapDoc)
 {
     classMapping.name    = subClass.GetShortClassName(mapDoc);
     classMapping.extends = subClass.BaseType.GetShortClassName(mapDoc);
     mapDoc.Items         = ArrayHelper.Append(mapDoc.Items, classMapping);
 }
Пример #10
0
        public void Start(Point mousePoint, Document document, OnElementMovingDelegate onElementMovingDelegate)
        {
            this.document = document;
            this.onElementMovingDelegate = onElementMovingDelegate;

            // Get Controllers
            moveCtrl = new IMoveController[document.SelectedElements.Count];
            IMoveController[] moveLabelCtrl = new IMoveController[document.SelectedElements.Count];
            for (int i = document.SelectedElements.Count - 1; i >= 0; i--)
            {
                moveCtrl[i] = ControllerHelper.GetMoveController(document.SelectedElements[i]);

                if (moveCtrl[i] != null && moveCtrl[i].CanMove)
                {
                    onElementMovingDelegate(new ElementEventArgs(document.SelectedElements[i]));
                    moveCtrl[i].Start(mousePoint);

                    //ILabelElement - Move Label inside the element
                    if (document.SelectedElements[i] is ILabelElement &&
                        ControllerHelper.GetLabelController(document.SelectedElements[i]) == null)
                    {
                        LabelElement label = ((ILabelElement)document.SelectedElements[i]).Label;
                        moveLabelCtrl[i] = ControllerHelper.GetMoveController(label);
                        if (moveLabelCtrl[i] != null && moveLabelCtrl[i].CanMove)
                        {
                            moveLabelCtrl[i].Start(mousePoint);
                        }
                        else
                        {
                            moveLabelCtrl[i] = null;
                        }
                    }
                }
                else
                {
                    moveCtrl[i] = null;
                }
            }

            moveCtrl = (IMoveController[])ArrayHelper.Append(moveCtrl, moveLabelCtrl);
            moveCtrl = (IMoveController[])ArrayHelper.Shrink(moveCtrl, null);

            // Can't move only links
            bool isOnlyLink = true;

            foreach (IMoveController ctrl in moveCtrl)
            {
                // Verify
                if (ctrl != null)
                {
                    ctrl.OwnerElement.Invalidate();

                    if (!(ctrl.OwnerElement is BaseLinkElement) && !(ctrl.OwnerElement is LabelElement))
                    {
                        isOnlyLink = false;
                        break;
                    }
                }
            }
            if (isOnlyLink)
            {
                //End Move the Links
                foreach (IMoveController ctrl in moveCtrl)
                {
                    if (ctrl != null)
                    {
                        ctrl.End();
                    }
                }
                moveCtrl = new IMoveController[] { null };
            }

            //Upper selecion point controller
            UpdateUpperSelectionPoint();
            upperSelPointDragOffset.X = upperSelPoint.X - mousePoint.X;
            upperSelPointDragOffset.Y = upperSelPoint.Y - mousePoint.Y;

            isMoving = true;
        }
Пример #11
0
        public void Start(Point mousePoint, Document document, OnElementMovingDelegate onElementMovingDelegate)
        {
            _document = document;
            _onElementMovingDelegate = onElementMovingDelegate;

            _moveControllers = new IMoveController[document.SelectedElements.Count];
            var moveLabelCtrl = new IMoveController[document.SelectedElements.Count];

            for (var i = document.SelectedElements.Count - 1; i >= 0; i--)
            {
                _moveControllers[i] = ControllerHelper.GetMoveController(document.SelectedElements[i]);

                if ((_moveControllers[i] != null) && _moveControllers[i].CanMove)
                {
                    onElementMovingDelegate(new ElementEventArgs(document.SelectedElements[i]));
                    _moveControllers[i].Start(mousePoint);

                    //ILabelElement - Move Label inside the element
                    if (document.SelectedElements[i] is ILabelElement &&
                        (ControllerHelper.GetLabelController(document.SelectedElements[i]) == null))
                    {
                        var label = ((ILabelElement)document.SelectedElements[i]).Label;
                        moveLabelCtrl[i] = ControllerHelper.GetMoveController(label);

                        if ((moveLabelCtrl[i] != null) && moveLabelCtrl[i].CanMove)
                        {
                            moveLabelCtrl[i].Start(mousePoint);
                        }
                        else
                        {
                            moveLabelCtrl[i] = null;
                        }
                    }
                }
                else
                {
                    _moveControllers[i] = null;
                }
            }

            _moveControllers = (IMoveController[])ArrayHelper.Append(_moveControllers, moveLabelCtrl);
            _moveControllers = (IMoveController[])ArrayHelper.Shrink(_moveControllers, null);

            // Can't move only links
            var isOnlyLink = true;

            foreach (var ctrl in _moveControllers)
            {
                // Verify
                if (ctrl != null)
                {
                    ctrl.OwnerElement.Invalidate();

                    if (!(ctrl.OwnerElement is BaseLinkElement) && !(ctrl.OwnerElement is LabelElement))
                    {
                        isOnlyLink = false;
                        break;
                    }
                }
            }
            if (isOnlyLink)
            {
                //End Move the Links
                foreach (var ctrl in _moveControllers)
                {
                    ctrl?.End();
                }
                _moveControllers = new IMoveController[]
                {
                    null
                };
            }

            //Upper selecion point controller
            UpdateUpperSelectionPoint();
            _upperSelPointDragOffset.X = _upperSelPoint.X - mousePoint.X;
            _upperSelPointDragOffset.Y = _upperSelPoint.Y - mousePoint.Y;

            IsMoving = true;
        }
Пример #12
0
                /// <summary>
                /// Subscribes the specified delegate for the change notification of any property.
                /// </summary>
                /// <param name="callback">The delegate to subscribe.</param>
                /// <returns>The current subscriber.</returns>
                public ISubscriber <T> Subscribe(Action callback)
                {
                    items = ArrayHelper.Append(items, Subscription.Create <T>(callback));

                    return(this);
                }
Пример #13
0
                /// <summary>
                /// Subscribes the specified delegate for the change notification of the specified property.
                /// </summary>
                /// <param name="propertyName">The name of the property to observe.</param>
                /// <param name="callback">The delegate to subscribe.</param>
                /// <returns>The current subscriber.</returns>
                public ISubscriber <T> Subscribe(string propertyName, Action callback)
                {
                    items = ArrayHelper.Append(items, Subscription.Create <T>(propertyName, callback));

                    return(this);
                }