public override void Layout(PDE.ToolFramework.Modeling.Diagrams.FixedGeometryPoints fixedPoints) { RectangleD sourceBounds = this.SourceAnchor.FromShape.AbsoluteBounds; this.SetStartPoint(new PointD(sourceBounds.Center.X, sourceBounds.Bottom + 10)); RectangleD targetBounds = this.TargetAnchor.ToShape.AbsoluteBounds; this.SetEndPoint(new PointD(targetBounds.Center.X, targetBounds.Top - 10)); this.UpdateLinkPlacement(); base.Layout(FixedGeometryPoints.SourceAndTarget); }
/* protected override void Initialize() { base.Initialize(); } protected override void OnUndoCommandExecuted() { base.OnUndoCommandExecuted(); //this.Layout(); } protected override void OnRedoCommandExecuted() { base.OnRedoCommandExecuted(); //this.Layout(); } private void Layout() { if (this.Store.InUndoRedoOrRollback) { return; } // disable undo manager this.Store.UndoManager.UndoState = UndoState.DisabledNoFlush; // create transation to apply layout information using (Transaction t = this.Store.TransactionManager.BeginTransaction("Layout")) { // layout diagram DiagramLayouter.Layout(this.Diagram); t.Commit(); } // enable undo manager this.Store.UndoManager.UndoState = UndoState.Enabled; } public override void OnChildShapeElementAdded(Microsoft.VisualStudio.Modeling.ElementAddedEventArgs args) { base.OnChildShapeElementAdded(args); this.Layout(); } public override void OnChildShapeElementRemoved(ElementDeletedEventArgs args) { base.OnChildShapeElementRemoved(args); this.Layout(); } public override void OnLinkShapeElementAdded(ElementAddedEventArgs args) { base.OnLinkShapeElementAdded(args); this.Layout(); } public override void OnLinkShapeElementRemoved(ElementDeletedEventArgs args) { base.OnLinkShapeElementRemoved(args); this.Layout(); } */ protected override bool CanCreateRelationshipShapeMarriedToShape(PDE.ToolFramework.Modeling.Visualization.ViewModel.DiagramSurface.ViewModelRelationshipCreationInfo info) { FamilyTreePerson source = info.Source.Element as global::Tum.FamilyTreeDSL.FamilyTreePerson; FamilyTreePerson target = info.Target.Element as global::Tum.FamilyTreeDSL.FamilyTreePerson; if (source == null || target == null) return false; if (source.Husband != null || source.Wife != null) return false; if (target.Husband != null || target.Wife != null) return false; if (source == target) return false; return base.CanCreateRelationshipShapeMarriedToShape(info); }