public DrawingBoard(Engine.Workflow w) : this()
 {
     Workflow = w;
     this.DrawableSurface.SetWorkflow(w);
     Workflow.CoordinatesManager.ZoomFactorChanged    += E_CoordinatesManager_ZoomFactorChanged;
     Workflow.CoordinatesManager.ImagePositionChanged += E_CoordinatesManager_ImagePositionChanged;
     Workflow.DrawingBoardSizeRequested += E_Workflow_DrawingBoardSizeRequested;
     Workflow.SelectionGlassRequested   += E_Workflow_SelectionGlassRequested;
 }
        /// <summary>
        /// Retrieves values passed to tool of effect and put them in controls. This is used when user changes active drawing board
        /// </summary>
        /// <param name="collectedValues">The collected VisualPropertyPage values saved in the tool or effect corresponding to the current drawing board</param>
        public void Fill(Engine.Workflow w)
        {
            Engine.Effects.VisualProperties vp = w.GraphicActivity.GetVisualProperties();

            if (vp == null)
            {
                return;
            }

            //t_properties = collectedValues;

            Dictionary <string, Engine.Effects.VisualPropertyItem> items = vp.GetItems();

            foreach (KeyValuePair <string, Engine.Effects.VisualPropertyItem> key in items)
            {
                FillControl(key);
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="w"></param>
        /// <remarks>Called by the VisualPropertyPageManager</remarks>
        internal void Build(Engine.Workflow w)
        {
            Clear();

            t_workflow = w;

            if (w.GraphicActivity == null)
            {
                return;
            }

            Engine.Tools.IGraphicActivity   activity = w.GraphicActivity;
            Engine.Effects.VisualProperties vp       = activity.GetVisualProperties();


            // this can happen for tools or effects that have no visual properties
            if (vp == null)
            {
                return;
            }

            if (vp.Count == 0)
            {
                // ensure no properties are left from a previous workflow-document
                t_properties   = null;
                t_canAutoApply = false;

                return;
            }

            t_properties = new Engine.Attributes.AttributeCollection();

            Dictionary <string, Engine.Effects.VisualPropertyItem> items = vp.GetItems();

            foreach (KeyValuePair <string, Engine.Effects.VisualPropertyItem> key in items)
            {
                BuildControl(key);
            }

            t_canAutoApply = true;
        }