allows the interaction with elements if there are more then one element at the same position.

This commit is contained in:
hneemann 2016-08-09 23:15:10 +02:00
parent 2c0db22833
commit 76c89e9a82
2 changed files with 19 additions and 3 deletions

View File

@ -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;
}
}

View File

@ -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);
}