public void OnMouseUp(object sender, MouseEventArgs e) { if (Dragged != null) { Dragged = null; DraggingVector = Vector.Zero; } }
//Sketchy but needed public Relationship(ClassDiagramNode origin, ClassDiagramNode target) : base(new BasicNodeStructure(Vector.Zero, 0, 0), RectangleRenderElementStyle.Default) { OriginNode = origin; TargetNode = target; List <Vector> vectors = GetLineVectors(); Origin = new RelationshipSegment(vectors[0], vectors[3], vectors[2]); Target = new RelationshipSegment(vectors[1], vectors[4], vectors[2]); OriginNode.OnPositionChanged += OnPositionChanged; TargetNode.OnPositionChanged += OnPositionChanged; OnOptionsHide += HideOptions; OnOptionsShow += ShowOptions; GeneratePrefab(); StealHitboxes(); }
public void AddDiagram(ClassStructure structure) { ClassDiagramNode node = new ClassDiagramNode(structure, new BasicNodeStructure(structure.Position, 0, Renderer.SingleTextHeight), RectangleRenderElementStyle.Classes); node.AddNode(new PropertyNode(new PropertyStructure(Vector.Zero, "Prop", "Type", AccessModifiers.Public, Modifiers.None), new BasicNodeStructure(Vector.Zero, 0, Renderer.SingleTextHeight), RectangleRenderElementStyle.Textbox)); node.AddNode(new MethodNode(new MethodStructure(Vector.Zero, "Method", "Type", "Name : Type", AccessModifiers.Public, Modifiers.None), new BasicNodeStructure(Vector.Zero, 0, Renderer.SingleTextHeight), RectangleRenderElementStyle.Textbox)); if (!Project.Classes.Contains(structure)) { Project.AddClass(structure); } Children.Add(node); node.OnRemoval += (sender, args) => RemoveDiagram((ClassDiagramNode)args.Node); node.OnFocused += OnNodeFocus; node.OnUnfocused += OnNodeUnfocus; node.Position = new Vector(node.Position.X - (node.Width / 2), node.Position.Y - (node.Height / 2)); }
// TODO: Drag only if nothing is clicked on public void OnMouseDown(object sender, MouseEventArgs e) { Vector mouse_position = (Vector)e.Location / Renderer.Scale - Renderer.Origin; LastMousePos = mouse_position; if (e.Button == MouseButtons.Left) { Dragged = ((ClassDiagramNode)Children.FirstOrDefault(x => CheckIfClicked(mouse_position, x))); if (Dragged != null) { DraggingVector = Dragged.Position - mouse_position; } else { mouse_position = e.Location - Vector.Zero; DraggingVector = Renderer.Origin - mouse_position; } } }
public void RemoveDiagram(ClassDiagramNode diagram) { Children.Remove(diagram); }