public void TemporarilyHideAssociation(Association association) { DiagramElement diagramElement = DiagramElements.FirstOrDefault(x => x.DiagramContent.Equals(association)); if (diagramElement != null) { diagramElement.Show = false; } }
private void PositionTheAssociateControl(FrameworkElement control, Association associate) { Area proposedArea = associate.ProposePosition(control.ActualWidth, control.ActualHeight, this.subjectMetadata.Area, IsOverlappingWithOtherControls); Canvas.SetLeft(control, proposedArea.TopLeft.X); Canvas.SetTop(control, proposedArea.TopLeft.Y); }
public void AddToTrivialList(Association association) { if (association == null) { throw new ArgumentNullResourceException("association", Resources.General_Given_Parameter_Cannot_Be_Null); } this.Factory.GetInstance<ITrivialFilter>().AddToTrivialTypeList(association.AssociatedTo); this.filter.ApplyTypeFilter(this.currentSubject); }
private void CreateAssociate(Association associate) { //var control = new ContentPresenter // { // DataContext = associate.AssociatedTo, // Content = associate.AssociatedTo, // Tag = VisualisedTypeViewMetadata.AssociateIdentifier + Guid.NewGuid() // // To distinguish this content presenter from other usages // }; //this.DiagramSpace.Children.Add(control); //var metadata = new VisualisedTypeViewMetadata(control, associate); //this.allVisualisedTypes.Add(control.Tag.ToString(), metadata); //control.Loaded += (s, e) => OnAssociateControlLoaded(metadata); }
private DiagramElement GetSourceOfLine(Association association) { var parentAssociation = association as ParentAssociation; if (parentAssociation == null) { return MainDrawingSubject; } DiagramElement search = this.allElements.FirstOrDefault(e => e.DiagramContent.Id == parentAssociation.AssociatedFrom.Id); if (search == null) { return MainDrawingSubject; } return search; }
private IEnumerable<DiagramElement> DrawLineForSecondaryParent(DiagramElement fromDiagramElement, Association parentAssociation) { var fullyExpandedModelType = parentAssociation.AssociatedTo as IVisualisableTypeWithAssociations; if (fullyExpandedModelType == null || fullyExpandedModelType.Parent == null) { return new List<DiagramElement>(); } DiagramElement destinationElement = FindDiagramElementFromContentId(fullyExpandedModelType.Parent.Id); if (destinationElement == null) { return new List<DiagramElement>(); } var destinationAssociation = destinationElement.DiagramContent as Association; return DrawLine(fromDiagramElement, destinationElement, destinationAssociation); }
private IEnumerable<DiagramElement> DrawLineForSecondaryImplements(DiagramElement fromDiagramElement, Association association) { var fullyExpandedModelType = association.AssociatedTo as IVisualisableTypeWithAssociations; if (fullyExpandedModelType == null || !fullyExpandedModelType.ThisTypeImplements.Any()) { return new List<DiagramElement>(); } var addedElements = new List<DiagramElement>(); foreach (ParentAssociation implement in fullyExpandedModelType.ThisTypeImplements) { DiagramElement destinationElement = FindDiagramElementFromContentId(implement.Id); if (destinationElement == null) { continue; } var destinationAssociation = destinationElement.DiagramContent as Association; addedElements.AddRange(DrawLine(fromDiagramElement, destinationElement, destinationAssociation)); } return addedElements; }
private IEnumerable<DiagramElement> DrawLine(DiagramElement fromElement, DiagramElement destinationElement, Association destinationAssociation) { Logger.Instance.WriteEntry("DrawLine for {0}", destinationAssociation.AssociatedTo.Name); Logger.Instance.WriteEntry(" From Area: {0}", fromElement.Area); Logger.Instance.WriteEntry(" To Area : {0}", destinationElement.Area); ConnectionLine route = ConnectionLine.FindBestConnectionRoute(fromElement.Area, destinationElement.Area, IsOverlappingWithOtherControls); destinationAssociation.StyleLine(route); var addedElements = new List<DiagramElement>(); Logger.Instance.WriteEntry(" Route calculated from {0:F1}, {1:F1} to {2:F1}, {3:F1}", route.From.X, route.From.Y, route.To.X, route.To.Y); Logger.Instance.WriteEntry(" From angle {0:F1} to angle {1:F1}", route.FromAngle, route.ToAngle); // Create the line diagram element and add to the diagram collection. // The line is linked to the arrow head position. var lineDiagramElement = new DiagramElement(DiagramId, route) { TopLeft = route.From }; lineDiagramElement.RegisterPositionDependency(new[] { fromElement, destinationElement }, IsOverlappingWithOtherControls); addedElements.Add(lineDiagramElement); // Create an arrow head based on the best route and add to the diagram collection. // The arrow head is linked to the associate diagram element. ArrowHead arrowHead = destinationAssociation.CreateLineHead(); var headDiagramElement = new DiagramElement(DiagramId, arrowHead) { TopLeft = route.To }; headDiagramElement.RegisterPositionDependency(new[] { lineDiagramElement }, IsOverlappingWithOtherControls); addedElements.Add(headDiagramElement); return new[] { lineDiagramElement, headDiagramElement }; }