mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-17 00:44:40 -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));
|
||||
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
|
||||
void pressed(MouseEvent e) {
|
||||
VisualElement ve = circuit.getElementAt(getPosVector(e));
|
||||
VisualElement ve = getIntractableElementAt(e);
|
||||
if (ve != null)
|
||||
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
|
||||
void released(MouseEvent e) {
|
||||
VisualElement ve = circuit.getElementAt(getPosVector(e));
|
||||
VisualElement ve = getIntractableElementAt(e);
|
||||
if (ve != null)
|
||||
interact(e, ve::elementReleased);
|
||||
}
|
||||
|
||||
@Override
|
||||
void clicked(MouseEvent e) {
|
||||
VisualElement ve = circuit.getElementAt(getPosVector(e));
|
||||
VisualElement ve = getIntractableElementAt(e);
|
||||
if (ve != null)
|
||||
interact(e, ve::elementClicked);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user