public override bool AddVariable(LooseDragDropLink link) { if (link.GetElement() is NumberTextbox) { this.varLink = link; return true; } if(link.GetElement() is SingleReturnMethodElement && ((SingleReturnMethodElement)link.GetElement()).GetReturnType() == "Number") { this.varLink = link; return true; } return false; }
public override bool AddVariable(LooseDragDropLink link) { if (varLink != null) return false; if(link.GetElement() is BooleanDragDrop) { this.varLink = link; return true; } if(link.GetElement() is SingleReturnMethodElement) { if (((SingleReturnMethodElement)link.GetElement()).GetReturnType().Equals("Boolean")) { this.varLink = link; return true; } } return false; }
public override void SetLooseLink(LooseDragDropLink link) { this.link = link; }
public abstract void SetLooseLink(LooseDragDropLink link);
public override void SetLooseLink(LooseDragDropLink link) { return; }
public abstract Boolean AddVariable(LooseDragDropLink link);
internal LooseDragDropLink PopVariable() { LooseDragDropLink temp = varLink; varLink = null; return temp; }
private void UpdateSuggestions(InputHandler handler) { if (draggedElement != null) return; if(handler.CheckLeftMouseJustPressed()) foreach(LooseDragDropLink link in suggestions) { if(handler.CheckMouseIn(link)) { suggestedElement = link; break; } } if (handler.CheckLeftMouseJustReleased()) { suggestedElement = null; } if(suggestedElement != null) if (!(handler.LeftMouseDraggedBy().X == 0 && handler.LeftMouseDraggedBy().Y == 0)) { elements.Add(new LooseDragDropLink(suggestedElement.GetElement().Clone())); draggedElement = elements[elements.Count - 1]; Point XY = handler.GetMouseXY(); originalPoint = XY; elements[elements.Count - 1].SetPoint(ref XY); } }
private void UpdateInteraction(InputHandler handler) { #region Check if released element is in the same area as another element foreach (LooseDragDropLink element in elements) { if (element == draggedElement) continue; if (handler.CheckMouseIn(element)) { #region If the Current Element Dropped in is a Variable Placeholder if (element.GetElement() is DragDropVariablePlaceholder) { bool rep = ((DragDropVariablePlaceholder)element.GetElement()).AddVariable(draggedElement); if (rep) { elements.Remove(draggedElement); draggedElement = null; } } #endregion else #region If the Current Element being Interacted with is a Variable Placeholder if (element.GetElement().GetInteracting(handler) is DragDropVariablePlaceholder) { bool rep = ((DragDropVariablePlaceholder)element.GetElement().GetInteracting(handler)).AddVariable(draggedElement); if (rep) { elements.Remove(draggedElement); draggedElement = null; } } #endregion break; } } #endregion }
private void UpdateElements(InputHandler handler) { if (draggedElement == null) { #region If Mouse Pressed if (handler.CheckLeftMouseJustPressed()) { #region Check if an Element was Clicked for (int i = 0;i < elements.Count; i++) { var element = elements[elements.Count - i - 1]; if (handler.CheckMouseIn(element)) { #region Set as Dragged Object draggedElement = element; originalPoint = element.GetPoint(); elements.Remove(element); elements.Add(element); #endregion break; } } #endregion } #endregion } else { if (dragging) { if (handler.CheckLeftMouseJustReleased()) { //Just in case stuff needs to be done. #region Release Dragged Object UpdateInteraction(handler); if (draggedElement != null && draggedElement.GetX() < widthOfMenu) { RemoveElement(draggedElement); } draggedElement = null; dragging = false; #endregion } else { #region Set the X and Y of the Dragged Object draggedElement.SetX(originalPoint.X + handler.LeftMouseDraggedBy().X); draggedElement.SetY(originalPoint.Y + handler.LeftMouseDraggedBy().Y); #endregion } } else { #region Detect if Dragged Piece was actually moved. if (!(handler.LeftMouseDraggedBy().X == 0 && handler.LeftMouseDraggedBy().Y == 0)) { dragging = true; #region Removes the element from a slot. if (draggedElement.GetElement() is DragDropVariablePlaceholder) { if (((DragDropVariablePlaceholder)draggedElement.GetElement()).HasVariable()) { elements.Add(((DragDropVariablePlaceholder)draggedElement.GetElement()).PopVariable()); draggedElement = elements[elements.Count - 1]; originalPoint = handler.GetMouseXY(); } } #endregion else #region Removes the element from a slot that is contained in another piece if (draggedElement.GetElement().GetTopInteracting(handler) is DragDropVariablePlaceholder) { DragDropVariablePlaceholder slot = (DragDropVariablePlaceholder)((DragDropVariablePlaceholder)draggedElement.GetElement().GetTopInteracting(handler)).GetInnerMostDragDrop(handler); if ((slot).HasVariable()) { elements.Add((slot).PopVariable()); draggedElement = elements[elements.Count - 1]; originalPoint = handler.GetMouseXY(); } } #endregion } #endregion else #region If the piece is released, select it. if (handler.CheckLeftMouseJustReleased()) { if (selectedElement != null && selectedElement != draggedElement) selectedElement.GetElement().TellSelected(false); draggedElement.GetElement().GetInteracting(handler).TellSelected(true); selectedElement = draggedElement; draggedElement = null; } #endregion } } }
/// <summary> /// Removes the link from the interface /// </summary> /// <param name="link"></param> public void RemoveElement(LooseDragDropLink link) { elements.Remove(link); }
public override void SetLooseLink(LooseDragDropLink link) { Logger.WriteLine("Someone set a loose link to a toggle button. I hope that was for debugging purposes"); }