namespace System.Workflow.Activities { #region Imports using System; using System.IO; using System.Xml; using System.Text; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms; using System.Reflection; using System.Collections; using System.CodeDom; using System.CodeDom.Compiler; using System.ComponentModel; using System.ComponentModel.Design; using System.Drawing.Design; using System.Reflection.Emit; using System.Workflow.ComponentModel; using System.Workflow.ComponentModel.Design; using System.Workflow.ComponentModel.Compiler; using Microsoft.CSharp; using System.Diagnostics; using System.Collections.Generic; #endregion #region Class SequentialWorkflowDesigner [ActivityDesignerTheme(typeof(SequentialWorkflowDesignerTheme))] internal class SequentialWorkflowDesigner : SequentialWorkflowRootDesigner { #region Members, Constructor and Destructor protected override void Initialize(Activity activity) { base.Initialize(activity); HelpText = DR.GetString(DR.SequentialWorkflowHelpText); Header.Text = DR.GetString(DR.StartSequentialWorkflow); } #endregion //TBD: NOTE, there needs to be two way protocol, the roots must indicate //what activities that they support and the activities must indicate //what root they support. The latter, is missing right now. //The following method just checks for the former. protected override bool IsSupportedActivityType(Type activityType) { //we specifically, do not support state machine related activities. if (typeof(SetStateActivity).IsAssignableFrom(activityType) || typeof(StateActivity).IsAssignableFrom(activityType) || typeof(StateInitializationActivity).IsAssignableFrom(activityType) || typeof(StateFinalizationActivity).IsAssignableFrom(activityType)) return false; return base.IsSupportedActivityType(activityType); } #region MultiViewDesigner Support protected override void OnViewChanged(DesignerView view) { base.OnViewChanged(view); ActivityDesigner hostedDesigner = (ActiveView != null) ? ActiveView.AssociatedDesigner : null; if (hostedDesigner.Activity is FaultHandlersActivity) { Header.Text = DR.GetString(DR.WorkflowExceptions); HelpText = String.Empty; } else if (hostedDesigner.Activity is EventHandlersActivity) { Header.Text = DR.GetString(DR.WorkflowEvents); HelpText = String.Empty; } else if (hostedDesigner.Activity is CompensationHandlerActivity) { Header.Text = DR.GetString(DR.WorkflowCompensation); HelpText = String.Empty; } else if (hostedDesigner.Activity is CancellationHandlerActivity) { Header.Text = DR.GetString(DR.WorkflowCancellation); HelpText = String.Empty; } else { Header.Text = DR.GetString(DR.StartSequentialWorkflow); HelpText = DR.GetString(DR.SequentialWorkflowHelpText); } } #endregion } #endregion #region SequentialWorkflowWithDataContextDesignerTheme internal sealed class SequentialWorkflowDesignerTheme : CompositeDesignerTheme { public SequentialWorkflowDesignerTheme(WorkflowTheme theme) : base(theme) { this.WatermarkImagePath = "System.Workflow.Activities.ActivityDesignerResources.SequentialWorkflowDesigner"; this.WatermarkAlignment = DesignerContentAlignment.BottomRight; this.ShowDropShadow = true; this.ConnectorStartCap = LineAnchor.None; this.ConnectorEndCap = LineAnchor.ArrowAnchor; this.ForeColor = Color.FromArgb(0xFF, 0x00, 0x00, 0x00); this.BorderColor = Color.FromArgb(0xFF, 0x49, 0x77, 0xB4); this.BorderStyle = DashStyle.Solid; this.BackColorStart = Color.FromArgb(0x00, 0x00, 0x00, 0x00); this.BackColorEnd = Color.FromArgb(0x00, 0x00, 0x00, 0x00); } } #endregion }