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

View File

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