private void DeleteCurrentSelection() { foreach (Connection connection in SelectionService.CurrentSelection.OfType <Connection>()) { this.Children.Remove(connection); } foreach (DesignerItem item in SelectionService.CurrentSelection.OfType <DesignerItem>()) { Control cd = item.Template.FindName("PART_ConnectorDecorator", item) as Control; List <Connector> connectors = new List <Connector>(); GetConnectors(cd, connectors); foreach (Connector connector in connectors) { foreach (Connection con in connector.Connections) { this.Children.Remove(con); } } this.Children.Remove(item); } SelectionService.ClearSelection(); UpdateZIndex(); }
public void ExecuteFlow(FlowManager flowManager) { SelectionService.ClearSelection(); flowManager.DesignerItemStart += flowManager_DesignerItemStart; flowManager.DesignerItemStop += flowManager_DesignerItemStop; flowManager.ProgressReport += flowManager_ProgressReport; }
private void Paste_Executed(object sender, ExecutedRoutedEventArgs e) { XElement root = LoadSerializedDataFromClipBoard(); if (root == null) { return; } // create DesignerItems Dictionary <Guid, Guid> mappingOldToNewIDs = new Dictionary <Guid, Guid>(); List <ISelectable> newItems = new List <ISelectable>(); IEnumerable <XElement> itemsXML = root.Elements("DesignerItems").Elements("DesignerItem"); double offsetX = Double.Parse(root.Attribute("OffsetX").Value, CultureInfo.InvariantCulture); double offsetY = Double.Parse(root.Attribute("OffsetY").Value, CultureInfo.InvariantCulture); Style itemStyle = (Style)FindResource("Process"); Style itemControlTemplateStyle = (Style)FindResource("Process_DragThumb"); foreach (XElement itemXML in itemsXML) { Guid oldID = new Guid(itemXML.Element("ID").Value); Guid newID = Guid.NewGuid(); mappingOldToNewIDs.Add(oldID, newID); DesignerItem item = DeserializeDesignerItem(this.ModuleDescriptions, itemXML, newID, offsetX, offsetY); item.Content = GetContentItem(itemStyle, itemControlTemplateStyle, item.ModuleDescription); this.Children.Add(item); SetDesignerItemConnectorDecoratorTemplate(item); newItems.Add(item); } // update group hierarchy SelectionService.ClearSelection(); foreach (DesignerItem el in newItems) { if (el.ParentID != Guid.Empty) { el.ParentID = mappingOldToNewIDs[el.ParentID]; } } foreach (DesignerItem item in newItems) { if (item.ParentID == Guid.Empty) { SelectionService.AddToSelection(item); } } // create Connections IEnumerable <XElement> connectionsXML = root.Elements("Connections").Elements("Connection"); foreach (XElement connectionXML in connectionsXML) { Guid oldSourceID = new Guid(connectionXML.Element("SourceID").Value); Guid oldSinkID = new Guid(connectionXML.Element("SinkID").Value); if (mappingOldToNewIDs.ContainsKey(oldSourceID) && mappingOldToNewIDs.ContainsKey(oldSinkID)) { Guid newSourceID = mappingOldToNewIDs[oldSourceID]; Guid newSinkID = mappingOldToNewIDs[oldSinkID]; String sourceConnectorName = connectionXML.Element("SourceConnectorName").Value; String sinkConnectorName = connectionXML.Element("SinkConnectorName").Value; Connector sourceConnector = GetConnector(newSourceID, sourceConnectorName); Connector sinkConnector = GetConnector(newSinkID, sinkConnectorName); Connection connection = new Connection(sourceConnector, sinkConnector); Canvas.SetZIndex(connection, Int32.Parse(connectionXML.Element("zIndex").Value)); this.Children.Add(connection); SelectionService.AddToSelection(connection); } } DesignerCanvas.BringToFront.Execute(null, this); // update paste offset root.Attribute("OffsetX").Value = (offsetX + 10).ToString(); root.Attribute("OffsetY").Value = (offsetY + 10).ToString(); Clipboard.Clear(); Clipboard.SetData(DataFormats.Xaml, root); if (OnPastedCurrentSelection != null) { OnPastedCurrentSelection(sender, new ItemsPastedEventArgs() { MappingOldToNewIDs = mappingOldToNewIDs }); } }