public void TestGetSnapshotGeneric() { ActiveCollection <object> test = new ActiveCollection <object>(); CollectionAssert.IsEmpty(test.GetSnapshot()); test.Add("a"); test.Add(this); Assert.AreEqual(test.GetSnapshot <object>(), new object[] { "a", this }); Assert.AreEqual(test.GetSnapshot <string>(), new string[] { "a" }); }
public void TestGetSnapshot() { ActiveCollection <object> test = new ActiveCollection <object>(); CollectionAssert.IsEmpty(test.GetSnapshot()); test.Add("a"); object[] snapshot = test.GetSnapshot(); Assert.AreEqual(snapshot, new object[] { "a" }); test.Add("b"); snapshot = test.GetSnapshot(); Assert.AreEqual(snapshot, new object[] { "a", "b" }); }
/// <summary> /// Begins dragging any selected items managed by the adapter. May be called /// by another adapter when it begins dragging.</summary> /// <param name="initiator">Control adapter that is initiating the drag</param> void IItemDragAdapter.BeginDrag(ControlAdapter initiator) { // drag all selected nodes, and any edges impinging on them var draggingNodes = new ActiveCollection <Element>(); foreach (var node in m_selectionContext.GetSelection <Element>()) { draggingNodes.Add(node); } m_draggingNodes.AddRange(draggingNodes.GetSnapshot()); var draggingGrpPins = new ActiveCollection <GroupPin>(); // add the selected floating pins foreach (var grpin in m_selectionContext.GetSelection <GroupPin>()) { draggingGrpPins.Add(grpin); } m_draggingGroupPins.AddRange(draggingGrpPins.GetSnapshot()); if (m_draggingGroupPins.Any()) { m_originalPinY = new int[m_draggingGroupPins.Count]; for (int i = 0; i < m_originalPinY.Length; i++) { m_originalPinY[i] = m_draggingGroupPins[i].Bounds.Location.Y; } } }
void IItemDragAdapter.BeginDrag(ControlAdapter initiator) { m_isDragging = true; // drag all selected nodes, and any edges impinging on them ActiveCollection <TNode> draggingNodes = new ActiveCollection <TNode>(); List <TEdge> draggingEdges = new List <TEdge>(); HashSet <TNode> nodes = new HashSet <TNode>(); foreach (TNode node in m_selectionContext.GetSelection <TNode>()) { AddDragNode(node, draggingNodes, nodes); } // render all edges connected to the dragging nodes foreach (TEdge edge in m_graph.Edges) { if (nodes.Contains(edge.FromNode) || nodes.Contains(edge.ToNode)) { draggingEdges.Add(edge); m_graphAdapter.SetStyle(edge, DiagramDrawingStyle.Ghosted); } } m_draggingNodes = draggingNodes.GetSnapshot <TNode>(); m_newPositions = new Point[m_draggingNodes.Length]; m_oldPositions = new Point[m_draggingNodes.Length]; for (int i = 0; i < m_draggingNodes.Length; i++) { // Initialize m_newPositions in case the mouse up event occurs before // a paint event, which can happen during rapid clicking. Point currentLocation = m_draggingNodes[i].Bounds.Location; m_newPositions[i] = currentLocation; m_oldPositions[i] = currentLocation; } m_draggingEdges = draggingEdges.ToArray(); }
void IItemDragAdapter.BeginDrag(ControlAdapter initiator) { // drag all selected nodes, and any edges impinging on them ActiveCollection <TNode> draggingNodes = new ActiveCollection <TNode>(); HashSet <TNode> nodes = new HashSet <TNode>(); foreach (TNode node in m_selectionContext.GetSelection <TNode>()) { AddDragNode(node, draggingNodes, nodes); } m_draggingNodes = draggingNodes.GetSnapshot <TNode>(); m_newPositions = new Point[m_draggingNodes.Length]; m_oldPositions = new Point[m_draggingNodes.Length]; for (int i = 0; i < m_draggingNodes.Length; i++) { // Initialize m_newPositions in case the mouse up event occurs before // a paint event, which can happen during rapid clicking. Point currentLocation = m_draggingNodes[i].Bounds.Location; m_newPositions[i] = currentLocation; m_oldPositions[i] = currentLocation; } }
/// <summary> /// Begins dragging any selected items managed by the adapter. May be called /// by another adapter when it begins dragging.</summary> /// <param name="initiator">Control adapter that is initiating the drag</param> void IItemDragAdapter.BeginDrag(ControlAdapter initiator) { // drag all selected nodes, and any edges impinging on them var draggingNodes = new ActiveCollection<Element>(); foreach (var node in m_selectionContext.GetSelection<Element>()) draggingNodes.Add(node); m_draggingNodes.AddRange(draggingNodes.GetSnapshot()); var draggingGrpPins= new ActiveCollection<GroupPin>(); // add the selected floating pins foreach (var grpin in m_selectionContext.GetSelection<GroupPin>()) draggingGrpPins.Add(grpin); m_draggingGroupPins.AddRange(draggingGrpPins.GetSnapshot()); if (m_draggingGroupPins.Any()) { m_originalPinY = new int[m_draggingGroupPins.Count]; for (int i = 0; i < m_originalPinY.Length; i++) m_originalPinY[i] = m_draggingGroupPins[i].Bounds.Location.Y; } }
/// <summary> /// Raises the BeginDrag event and performs custom processing</summary> /// <param name="e">A MouseEventArgs that contains the event data</param> protected override void OnBeginDrag(MouseEventArgs e) { base.OnBeginDrag(e); if (m_layoutContext != null && e.Button == MouseButtons.Left && ((Control.ModifierKeys & Keys.Alt) == 0) && !AdaptedControl.Capture) { m_firstPoint = GdiUtil.InverseTransform(m_transformAdapter.Transform, FirstPoint); m_mousePick = m_graphAdapter.Pick(FirstPoint); if (CanDragging()) { foreach (var itemDragAdapter in AdaptedControl.AsAll <IItemDragAdapter>()) { if (itemDragAdapter != this) { itemDragAdapter.BeginDrag(this); } } // drag all selected nodes, and any edges impinging on them ActiveCollection <TNode> draggingNodes = new ActiveCollection <TNode>(); HashSet <TNode> nodes = new HashSet <TNode>(); foreach (var node in m_selectionContext.GetSelection <TNode>()) { if (AllowDragging(node)) { AddDragNode(node, draggingNodes, nodes); } } m_draggingNodes = draggingNodes.GetSnapshot <TNode>(); if ((m_draggingNodes.Length == 1) && m_draggingNodes[0] == m_mousePick.Item) { if (m_mousePick.SubItem != null) { if (m_mousePick.SubItem.Is <TNode>()) // favor dragging sub item { m_draggingNodes[0] = m_mousePick.SubItem.Cast <TNode>(); } if (m_mousePick.SubPart.Is <DiagramBorder>()) // sub-container resizing? { var borderPart = m_mousePick.SubPart.Cast <DiagramBorder>(); if (m_editableGraphContainer != null && m_editableGraphContainer.CanResize(m_mousePick.SubItem, borderPart)) { m_firstBound = m_graphAdapter.GetLocalBound(m_mousePick.SubItem.As <TNode>()); m_resizing = true; m_targetItem = m_mousePick.SubItem; } } } else if (m_mousePick.Part.Is <DiagramBorder>()) // then favor container resizing { var borderPart = m_mousePick.Part.Cast <DiagramBorder>(); if (m_editableGraphContainer != null && m_editableGraphContainer.CanResize(m_mousePick.Item, borderPart)) { m_firstBound = m_graphAdapter.GetLocalBound(m_mousePick.Item.As <TNode>()); m_resizing = true; m_targetItem = m_mousePick.Item; } } } m_newPositions = new Point[m_draggingNodes.Length]; m_oldPositions = new Point[m_draggingNodes.Length]; for (int i = 0; i < m_draggingNodes.Length; i++) { // Initialize m_newPositions in case the mouse up event occurs before // a paint event, which can happen during rapid clicking. Point currentLocation = m_draggingNodes[i].Bounds.Location; m_newPositions[i] = currentLocation; m_oldPositions[i] = currentLocation; } AdaptedControl.Capture = true; if (m_autoTranslateAdapter != null) { m_autoTranslateAdapter.Enabled = true; } } } }
public void TestGetSnapshotGeneric() { ActiveCollection<object> test = new ActiveCollection<object>(); CollectionAssert.IsEmpty(test.GetSnapshot()); test.Add("a"); test.Add(this); Assert.AreEqual(test.GetSnapshot<object>(), new object[] { "a", this }); Assert.AreEqual(test.GetSnapshot<string>(), new string[] { "a" }); }
public void TestGetSnapshot() { ActiveCollection<object> test = new ActiveCollection<object>(); CollectionAssert.IsEmpty(test.GetSnapshot()); test.Add("a"); object[] snapshot = test.GetSnapshot(); Assert.AreEqual(snapshot, new object[] { "a" }); test.Add("b"); snapshot = test.GetSnapshot(); Assert.AreEqual(snapshot, new object[] { "a", "b" }); }