mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-18 01:14:42 -04:00
allows the interaction with elements if there are more then one element at the same position.
This commit is contained in:
parent
2c0db22833
commit
76c89e9a82
@ -355,4 +355,11 @@ public class VisualElement implements Drawable, Moveable, AttributeListener {
|
|||||||
elementAttributes.set(Keys.ROTATE, new Rotation(rotate));
|
elementAttributes.set(Keys.ROTATE, new Rotation(rotate));
|
||||||
minMax = null;
|
minMax = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return true if you can interact with this element
|
||||||
|
*/
|
||||||
|
public boolean isIntractable() {
|
||||||
|
return interactor != null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1019,21 +1019,30 @@ public class CircuitComponent extends JComponent {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
void pressed(MouseEvent e) {
|
void pressed(MouseEvent e) {
|
||||||
VisualElement ve = circuit.getElementAt(getPosVector(e));
|
VisualElement ve = getIntractableElementAt(e);
|
||||||
if (ve != null)
|
if (ve != null)
|
||||||
interact(e, ve::elementPressed);
|
interact(e, ve::elementPressed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private VisualElement getIntractableElementAt(MouseEvent e) {
|
||||||
|
List<VisualElement> elementList = circuit.getElementListAt(getPosVector(e));
|
||||||
|
for (VisualElement ve : elementList) {
|
||||||
|
if (ve.isIntractable())
|
||||||
|
return ve;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void released(MouseEvent e) {
|
void released(MouseEvent e) {
|
||||||
VisualElement ve = circuit.getElementAt(getPosVector(e));
|
VisualElement ve = getIntractableElementAt(e);
|
||||||
if (ve != null)
|
if (ve != null)
|
||||||
interact(e, ve::elementReleased);
|
interact(e, ve::elementReleased);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void clicked(MouseEvent e) {
|
void clicked(MouseEvent e) {
|
||||||
VisualElement ve = circuit.getElementAt(getPosVector(e));
|
VisualElement ve = getIntractableElementAt(e);
|
||||||
if (ve != null)
|
if (ve != null)
|
||||||
interact(e, ve::elementClicked);
|
interact(e, ve::elementClicked);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user