protected virtual void UpdateEdgePoints() { if (EdgePoints == null) this.edgePointsVM = new ObservableCollection<EdgePointViewModel>(); EdgePoints.Clear(); for (int i = 0; i < this.ShapeElement.EdgePoints.Count; i++) { EdgePointVMType t = EdgePointVMType.Normal; if (i == 0) t = EdgePointVMType.Start; else if (i == this.ShapeElement.EdgePoints.Count - 1) t = EdgePointVMType.End; else continue; // TODO EdgePointViewModel vm = new EdgePointViewModel(this.ViewModelStore, this.ShapeElement.EdgePoints[i], t); if (i > 0 && i < this.ShapeElement.EdgePoints.Count - 1) { //vm.EdgePointOperation = EdgePointVMOperation.m } else { RectangleD bounds; if (t == EdgePointVMType.Start) bounds = this.ShapeElement.FromShape.AbsoluteBounds; else bounds = this.ShapeElement.ToShape.AbsoluteBounds; EdgePoint p = this.ShapeElement.EdgePoints[i]; LinkPlacement placement = LinkShape.GetLinkPlacement(bounds, new PointD(p.X, p.Y)); switch (placement) { case LinkPlacement.Bottom: vm.EdgePointSide = EdgePointVMSide.Bottom; break; case LinkPlacement.Left: vm.EdgePointSide = EdgePointVMSide.Left; break; case LinkPlacement.Right: vm.EdgePointSide = EdgePointVMSide.Right; break; case LinkPlacement.Top: vm.EdgePointSide = EdgePointVMSide.Top; break; } } EdgePoints.Add(vm); } OnPropertyChanged("EdgePoints"); OnPropertyChanged("StartEdgePoint"); OnPropertyChanged("EndEdgePoint"); OnPropertyChanged("MiddleEdgePoint"); }
protected virtual void UpdateEdgePoints() { if (EdgePoints == null) { this.edgePointsVM = new ObservableCollection <EdgePointViewModel>(); } EdgePoints.Clear(); for (int i = 0; i < this.ShapeElement.EdgePoints.Count; i++) { EdgePointVMType t = EdgePointVMType.Normal; if (i == 0) { t = EdgePointVMType.Start; } else if (i == this.ShapeElement.EdgePoints.Count - 1) { t = EdgePointVMType.End; } else { continue; // TODO } EdgePointViewModel vm = new EdgePointViewModel(this.ViewModelStore, this.ShapeElement.EdgePoints[i], t); if (i > 0 && i < this.ShapeElement.EdgePoints.Count - 1) { //vm.EdgePointOperation = EdgePointVMOperation.m } else { RectangleD bounds; if (t == EdgePointVMType.Start) { bounds = this.ShapeElement.FromShape.AbsoluteBounds; } else { bounds = this.ShapeElement.ToShape.AbsoluteBounds; } EdgePoint p = this.ShapeElement.EdgePoints[i]; LinkPlacement placement = LinkShape.GetLinkPlacement(bounds, new PointD(p.X, p.Y)); switch (placement) { case LinkPlacement.Bottom: vm.EdgePointSide = EdgePointVMSide.Bottom; break; case LinkPlacement.Left: vm.EdgePointSide = EdgePointVMSide.Left; break; case LinkPlacement.Right: vm.EdgePointSide = EdgePointVMSide.Right; break; case LinkPlacement.Top: vm.EdgePointSide = EdgePointVMSide.Top; break; } } EdgePoints.Add(vm); } OnPropertyChanged("EdgePoints"); OnPropertyChanged("StartEdgePoint"); OnPropertyChanged("EndEdgePoint"); OnPropertyChanged("MiddleEdgePoint"); }