protected override object CreateInstance(WorkflowMarkupSerializationManager serializationManager, Type type) { if (serializationManager == null) { throw new ArgumentNullException("serializationManager"); } if (type == null) { throw new ArgumentNullException("type"); } Connector connector = null; IReferenceService service = serializationManager.GetService(typeof(IReferenceService)) as IReferenceService; FreeformActivityDesigner designer = serializationManager.Context[typeof(FreeformActivityDesigner)] as FreeformActivityDesigner; if ((designer != null) && (service != null)) { ConnectionPoint source = null; ConnectionPoint target = null; try { Dictionary <string, string> connectorConstructionArguments = this.GetConnectorConstructionArguments(serializationManager, type); if ((connectorConstructionArguments.ContainsKey("SourceActivity") && connectorConstructionArguments.ContainsKey("SourceConnectionIndex")) && connectorConstructionArguments.ContainsKey("SourceConnectionEdge")) { ActivityDesigner associatedDesigner = ActivityDesigner.GetDesigner(service.GetReference(connectorConstructionArguments["SourceActivity"]) as Activity); DesignerEdges designerEdge = (DesignerEdges)Enum.Parse(typeof(DesignerEdges), connectorConstructionArguments["SourceConnectionEdge"]); int connectionIndex = Convert.ToInt32(connectorConstructionArguments["SourceConnectionIndex"], CultureInfo.InvariantCulture); if (((associatedDesigner != null) && (designerEdge != DesignerEdges.None)) && (connectionIndex >= 0)) { source = new ConnectionPoint(associatedDesigner, designerEdge, connectionIndex); } } if ((connectorConstructionArguments.ContainsKey("TargetActivity") && connectorConstructionArguments.ContainsKey("TargetConnectionIndex")) && connectorConstructionArguments.ContainsKey("TargetConnectionEdge")) { ActivityDesigner designer3 = ActivityDesigner.GetDesigner(service.GetReference(connectorConstructionArguments["TargetActivity"]) as Activity); DesignerEdges edges2 = (DesignerEdges)Enum.Parse(typeof(DesignerEdges), connectorConstructionArguments["TargetConnectionEdge"]); int num2 = Convert.ToInt32(connectorConstructionArguments["TargetConnectionIndex"], CultureInfo.InvariantCulture); if (((designer3 != null) && (edges2 != DesignerEdges.None)) && (num2 >= 0)) { target = new ConnectionPoint(designer3, edges2, num2); } } } catch { } if ((source != null) && (target != null)) { connector = designer.AddConnector(source, target); } } return(connector); }
protected override object CreateInstance(WorkflowMarkupSerializationManager serializationManager, Type type) { if (serializationManager == null) { throw new ArgumentNullException("serializationManager"); } if (type == null) { throw new ArgumentNullException("type"); } Connector connector = null; IReferenceService referenceService = serializationManager.GetService(typeof(IReferenceService)) as IReferenceService; FreeformActivityDesigner freeformDesigner = serializationManager.Context[typeof(FreeformActivityDesigner)] as FreeformActivityDesigner; if (freeformDesigner != null && referenceService != null) { ConnectionPoint sourceConnection = null; ConnectionPoint targetConnection = null; try { Dictionary <string, string> constructionArguments = GetConnectorConstructionArguments(serializationManager, type); if (constructionArguments.ContainsKey("SourceActivity") && constructionArguments.ContainsKey("SourceConnectionIndex") && constructionArguments.ContainsKey("SourceConnectionEdge")) { ActivityDesigner sourceDesigner = ActivityDesigner.GetDesigner(referenceService.GetReference(constructionArguments["SourceActivity"] as string) as Activity); DesignerEdges sourceEdge = (DesignerEdges)Enum.Parse(typeof(DesignerEdges), constructionArguments["SourceConnectionEdge"] as string); int sourceIndex = Convert.ToInt32(constructionArguments["SourceConnectionIndex"] as string, System.Globalization.CultureInfo.InvariantCulture); if (sourceDesigner != null && sourceEdge != DesignerEdges.None && sourceIndex >= 0) { sourceConnection = new ConnectionPoint(sourceDesigner, sourceEdge, sourceIndex); } } if (constructionArguments.ContainsKey("TargetActivity") && constructionArguments.ContainsKey("TargetConnectionIndex") && constructionArguments.ContainsKey("TargetConnectionEdge")) { ActivityDesigner targetDesigner = ActivityDesigner.GetDesigner(referenceService.GetReference(constructionArguments["TargetActivity"] as string) as Activity); DesignerEdges targetEdge = (DesignerEdges)Enum.Parse(typeof(DesignerEdges), constructionArguments["TargetConnectionEdge"] as string); int targetIndex = Convert.ToInt32(constructionArguments["TargetConnectionIndex"] as string, System.Globalization.CultureInfo.InvariantCulture); if (targetDesigner != null && targetEdge != DesignerEdges.None && targetIndex >= 0) { targetConnection = new ConnectionPoint(targetDesigner, targetEdge, targetIndex); } } } catch { } if (sourceConnection != null && targetConnection != null) { connector = freeformDesigner.AddConnector(sourceConnection, targetConnection); } } return(connector); }
public void OnEndEditing(Point point, bool commitChanges) { if (this.activeEditPoint != null) { this.Invalidate(); if (commitChanges) { this.UpdateEditPoints(point); EditPoint activeEditPoint = this.activeEditPoint; this.activeEditPoint = null; this.UpdateEditPoints(point); bool flag = false; if (activeEditPoint.Type == EditPoint.EditPointTypes.ConnectionEditPoint) { ConnectionManager service = this.GetService(typeof(ConnectionManager)) as ConnectionManager; FreeformActivityDesigner connectorContainer = ConnectionManager.GetConnectorContainer(activeEditPoint.EditedConnectionPoint.AssociatedDesigner); if (((service != null) && (service.SnappedConnectionPoint != null)) && (connectorContainer != null)) { ConnectionPoint source = this.editedConnector.Source; ConnectionPoint target = this.editedConnector.Target; if (target.Equals(activeEditPoint.EditedConnectionPoint)) { target = service.SnappedConnectionPoint; } else if (source.Equals(activeEditPoint.EditedConnectionPoint)) { source = service.SnappedConnectionPoint; } if ((connectorContainer == ConnectionManager.GetConnectorContainer(target.AssociatedDesigner)) && connectorContainer.CanConnectContainedDesigners(source, target)) { this.editedConnector.Source = source; this.editedConnector.Target = target; if (this.editedConnector.ParentDesigner == null) { this.editedConnector = connectorContainer.AddConnector(source, target); WorkflowDesignerLoader loader = this.GetService(typeof(WorkflowDesignerLoader)) as WorkflowDesignerLoader; if (loader != null) { loader.SetModified(true); } } connectorContainer.OnContainedDesignersConnected(source, target); } flag = true; } } else { flag = true; } if (flag) { this.editedConnector.SetConnectorSegments(this.GetPointsFromEditPoints(this.editPoints)); if (this.editedConnector.ParentDesigner != null) { this.editedConnector.ParentDesigner.OnConnectorChanged(new ConnectorEventArgs(this.editedConnector)); WorkflowDesignerLoader loader2 = this.GetService(typeof(WorkflowDesignerLoader)) as WorkflowDesignerLoader; if (loader2 != null) { loader2.SetModified(true); } } } this.PerformLayout(); } this.Invalidate(); } }