Example #1
0
        /// <summary>
        ///
        /// </summary>
        private void InitializeDrawable()
        {
            var context = this.DataContext as EditorContext;

            if (context == null)
            {
                return;
            }

            context.Invalidate =
                () =>
            {
                InitializeLayers();
                ResizeDrawable();

                var container = context.Editor.Project.CurrentContainer;
                if (container != null)
                {
                    container.Invalidate();
                }
            };

            _state = new ZoomState(context);

            context.Commands.ZoomResetCommand =
                Command.Create(
                    () =>
            {
                _state.ResetZoom();
                if (context.Invalidate != null)
                {
                    context.Invalidate();
                }
            },
                    () => true);

            context.Commands.ZoomExtentCommand =
                Command.Create(
                    () =>
            {
                _state.AutoFit();
                if (context.Invalidate != null)
                {
                    context.Invalidate();
                }
            },
                    () => true);

            this.PointerPressed +=
                (sender, e) =>
            {
                if (_state == null)
                {
                    return;
                }

                var p = e.GetPosition(this);

                if (e.MouseButton == MouseButton.Middle)
                {
                    _state.MiddleDown(p.X, p.Y);
                    // TODO: this.Cursor = Cursors.Pointer;
                }

                if (e.MouseButton == MouseButton.Left)
                {
                    this.Focus();
                    _state.PrimaryDown(p.X, p.Y);
                }

                if (e.MouseButton == MouseButton.Right)
                {
                    this.Focus();
                    _state.AlternateDown(p.X, p.Y);
                }
            };

            this.PointerReleased +=
                (sender, e) =>
            {
                if (_state == null)
                {
                    return;
                }

                var p = e.GetPosition(this);

                if (e.MouseButton == MouseButton.Middle)
                {
                    this.Focus();
                    _state.MiddleUp(p.X, p.Y);
                    // TODO: this.Cursor = Cursors.Default;
                }

                if (e.MouseButton == MouseButton.Left)
                {
                    this.Focus();
                    _state.PrimaryUp(p.X, p.Y);
                }

                if (e.MouseButton == MouseButton.Right)
                {
                    this.Focus();
                    _state.AlternateUp(p.X, p.Y);
                }
            };

            this.PointerMoved +=
                (sender, e) =>
            {
                if (_state == null)
                {
                    return;
                }

                var p = e.GetPosition(this);
                _state.Move(p.X, p.Y);
            };

            this.PointerWheelChanged +=
                (sender, e) =>
            {
                if (_state == null)
                {
                    return;
                }

                var p = e.GetPosition(this);
                _state.Wheel(p.X, p.Y, e.Delta.Y);
            };
        }