/// <summary>
        /// Installs the scroll director and adds the appropriate handlers.
        /// </summary>
        /// <param name="scrollableControl">
        /// The scrollable control on which this director directs.
        /// </param>
        /// <param name="view">The PCanvas that the scrollable control scrolls.</param>
        public virtual void Install(PScrollableControl scrollableControl, PCanvas view)
        {
            this.scrollableControl = scrollableControl;
            this.view = view;

            if (view != null)
            {
                this.camera = view.Camera;
                this.root   = view.Root;
            }

            if (camera != null)
            {
                camera.ViewTransformChanged += new PPropertyEventHandler(camera_ViewTransformChanged);
                camera.BoundsChanged        += new PPropertyEventHandler(camera_BoundsChanged);
                camera.FullBoundsChanged    += new PPropertyEventHandler(camera_FullBoundsChanged);
            }
            if (root != null)
            {
                root.BoundsChanged     += new PPropertyEventHandler(root_BoundsChanged);
                root.FullBoundsChanged += new PPropertyEventHandler(root_FullBoundsChanged);
            }

            if (scrollableControl != null)
            {
                scrollableControl.UpdateScrollbars();
            }
        }
 /// <summary>
 /// Invoked when the camera's view changes.
 /// </summary>
 /// <param name="sender">The source of the property changed event.</param>
 /// <param name="e">A PPropertyEventArgs that contains the event data.</param>
 protected virtual void camera_ViewTransformChanged(object sender, PPropertyEventArgs e)
 {
     scrollableControl.UpdateScrollbars();
 }
		/// <summary>
		/// Installs the scroll director and adds the appropriate handlers.
		/// </summary>
		/// <param name="scrollableControl">
		/// The scrollable control on which this director directs.
		/// </param>
		/// <param name="view">The PCanvas that the scrollable control scrolls.</param>
		public virtual void Install(PScrollableControl scrollableControl, PCanvas view) {
			this.scrollableControl = scrollableControl;
			this.view = view;

			if (view != null) {
				this.camera = view.Camera;
				this.root = view.Root;
			}

			if (camera != null) {
				camera.ViewTransformChanged += new PPropertyEventHandler(camera_ViewTransformChanged);
				camera.BoundsChanged += new PPropertyEventHandler(camera_BoundsChanged);
				camera.FullBoundsChanged += new PPropertyEventHandler(camera_FullBoundsChanged);
			}
			if (root != null) {
				root.BoundsChanged += new PPropertyEventHandler(root_BoundsChanged);
				root.FullBoundsChanged += new PPropertyEventHandler(root_FullBoundsChanged);
			}

			if (scrollableControl != null) {
				scrollableControl.UpdateScrollbars();
			}
		}