|
|
|
@ -20,32 +20,51 @@ namespace ClassDiagram |
|
|
|
{ |
|
|
|
{ |
|
|
|
public class InteractiveItemsStack : DrawableItemsStack<IDrawableRectangle>, IMouseInteractable |
|
|
|
public class InteractiveItemsStack : DrawableItemsStack<IDrawableRectangle>, IMouseInteractable |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
public InteractiveItemsStack() {} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public InteractiveItemsStack(bool recursive) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
this.recursive = recursive; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool recursive = true; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public bool Recursive { |
|
|
|
|
|
|
|
get { return recursive; } |
|
|
|
|
|
|
|
set { recursive = value; } |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public void HandleMouseClick(PointF pos) |
|
|
|
public void HandleMouseClick(PointF pos) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
if (!recursive) return; |
|
|
|
foreach (IMouseInteractable mi in this) |
|
|
|
foreach (IMouseInteractable mi in this) |
|
|
|
mi.HandleMouseClick(pos); |
|
|
|
mi.HandleMouseClick(pos); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public void HandleMouseDown(PointF pos) |
|
|
|
public void HandleMouseDown(PointF pos) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
if (!recursive) return; |
|
|
|
foreach (IMouseInteractable mi in this) |
|
|
|
foreach (IMouseInteractable mi in this) |
|
|
|
mi.HandleMouseDown(pos); |
|
|
|
mi.HandleMouseDown(pos); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public void HandleMouseMove(PointF pos) |
|
|
|
public void HandleMouseMove(PointF pos) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
if (!recursive) return; |
|
|
|
foreach (IMouseInteractable mi in this) |
|
|
|
foreach (IMouseInteractable mi in this) |
|
|
|
mi.HandleMouseMove(pos); |
|
|
|
mi.HandleMouseMove(pos); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public void HandleMouseUp(PointF pos) |
|
|
|
public void HandleMouseUp(PointF pos) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
if (!recursive) return; |
|
|
|
foreach (IMouseInteractable mi in this) |
|
|
|
foreach (IMouseInteractable mi in this) |
|
|
|
mi.HandleMouseUp(pos); |
|
|
|
mi.HandleMouseUp(pos); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public void HandleMouseLeave() |
|
|
|
public void HandleMouseLeave() |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
if (!recursive) return; |
|
|
|
foreach (IMouseInteractable mi in this) |
|
|
|
foreach (IMouseInteractable mi in this) |
|
|
|
mi.HandleMouseLeave(); |
|
|
|
mi.HandleMouseLeave(); |
|
|
|
} |
|
|
|
} |
|
|
|
|