/// <summary>
 /// Forward container events
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void item_ContainerEvent(object sender, ContainerEventArgs e)
 {
     if (ContainerEvent != null)
     {
         ContainerEvent(sender, e);
     }
 }
Exemplo n.º 2
0
        /// <summary>
        /// Gets a transformation used to convert from local space to control space.
        /// </summary>
        public Matrix GetLocal2ControlTransform()
        {
            var args = new ContainerEventArgs(ContainerMessage.Local2ControlMatrix, this, new Matrix());

            RaiseContainerEvent(args);
            return(args.Transform);
        }
Exemplo n.º 3
0
 /// <summary>
 /// Fire the ContainerEvent with given argument.
 /// </summary>
 /// <param name="e"></param>
 protected void RaiseContainerEvent(ContainerEventArgs e)
 {
     if (ContainerEvent != null)
     {
         ContainerEvent(this, e);
     }
 }
Exemplo n.º 4
0
        /// <summary>
        /// Notify the canvas to block update request till EndUpdate.
        /// </summary>
        protected IDisposable BeginUpdate()
        {
            var update = new Update(this);

            updateDepth++;
            if ((updateDepth == 1) && (ContainerEvent != null))
            {
                var args = new ContainerEventArgs(ContainerMessage.BeginUpdate, this)
                {
                    Update = update
                };
                ContainerEvent(this, args);
            }
            return(update);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Handle events from the root container
        /// </summary>
        private void OnRootContainerEvent(object sender, ContainerEventArgs e)
        {
            if (InvokeRequired)
            {
                Invoke(new EventHandler <ContainerEventArgs>(OnRootContainerEvent), sender, e);
            }
            else
            {
                switch (e.Message)
                {
                case ContainerMessage.SizeChanged:
                    UpdateScrollbars();
                    Invalidate();
                    break;

                case ContainerMessage.Redraw:
                    Invalidate();
                    break;

                case ContainerMessage.ZoomToRectangle:
                    rootContainer.ZoomToRectangle(e.Rectangle);
                    break;

                case ContainerMessage.BeginUpdate:
                    e.Update.Add(BeginUpdate());
                    break;

                case ContainerMessage.EnsureVisible:
                    if (!rootContainer.IsVisible(e.Point))
                    {
                        rootContainer.ZoomTo(ZoomFactor, e.Point);
                    }
                    break;

                case ContainerMessage.Local2ControlMatrix:
                    rootContainer.Local2Global(e.Transform);
                    break;

                case ContainerMessage.CustomMessage:
                    if (CustomItemMessage != null)
                    {
                        CustomItemMessage(e.Sender, new ArgumentEventArgs(e.Argument));
                    }
                    break;
                }
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// Default ctor
        /// </summary>
        public VCItemContainer()
        {
            this.KeyboardHandler = new Handlers.ContainerKeyboardHandler(this, null);
            this.MouseHandler    = new Handlers.ContainerMouseHandler(this, null);
            this.DragDropHandler = new Handlers.ContainerDragDropHandler(this, null);

            // Connect to itms
            items.Added += delegate(object sender, VCItemPlacementEventArgs e)
            {
                LayoutItems();
                //RaiseSizeChanged();
            };
            items.Removed += delegate(object sender, VCItemPlacementEventArgs e)
            {
                if (selection != null)
                {
                    selection.Remove(e.Placement);
                }
                LayoutItems();
                //RaiseSizeChanged();
            };
            items.ContainerEvent += delegate(object sender, ContainerEventArgs e)
            {
                switch (e.Message)
                {
                case ContainerMessage.SizeChanged:
                    LayoutItems();
                    //RaiseSizeChanged();
                    break;

                case ContainerMessage.ZoomToRectangle:
                {
                    var placement = items.Find((VCItem)sender);
                    if (placement != null)
                    {
                        var rect = e.Rectangle;
                        rect.Location = placement.FromLocal(rect.Location);
                        ZoomToRectangle(rect);
                    }
                }
                break;

                case ContainerMessage.EnsureVisible:
                {
                    var placement = items.Find((VCItem)sender);
                    if (placement != null)
                    {
                        var pt = placement.FromLocal(e.Point);
                        EnsureVisible(pt);
                    }
                }
                break;

                case ContainerMessage.Redraw:
                    if (!IsUpdating)
                    {
                        RaiseContainerEvent(e);
                    }
                    break;

                case ContainerMessage.Local2ControlMatrix:
                {
                    var placement = items.Find((VCItem)sender);
                    if (placement != null)
                    {
                        e.Transform.Multiply(placement.Transform, MatrixOrder.Append);
                        var args = new ContainerEventArgs(e.Message, this, e.Transform);
                        RaiseContainerEvent(args);
                    }
                }
                break;

                default:
                    // Forward all other events
                    RaiseContainerEvent(e);
                    break;
                }
            };
        }