X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.ui%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fui%2Fmodel%2Fcomponents%2FGUIComponent.java;h=a586616ee49244c7143904bbb1a9a6a042215e80;hb=a84700145147c263ad6692c99117a7cf37832378;hp=562f73a4f64ab1aa5fd90b9a50c377e7e7a15e49;hpb=fd5d1e21b18b426d78f0c9b5084f63a774876d9a;p=Mograsim.git diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIComponent.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIComponent.java index 562f73a4..a586616e 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIComponent.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIComponent.java @@ -1,7 +1,6 @@ package net.mograsim.logic.ui.model.components; import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -33,9 +32,9 @@ public abstract class GUIComponent */ private final Map pinsByName; /** - * An unmodifiable view of {@link #pinsByName}.{@link Map#values() values()}. + * An unmodifiable view of {@link #pinsByName}. */ - protected final Collection pinsUnmodifiable; + protected final Map pinsUnmodifiable; private final List> componentMovedListeners; private final List> pinAddedListeners; @@ -53,7 +52,7 @@ public abstract class GUIComponent this.model = model; this.bounds = new Rectangle(0, 0, 0, 0); this.pinsByName = new HashMap<>(); - this.pinsUnmodifiable = Collections.unmodifiableCollection(pinsByName.values()); + this.pinsUnmodifiable = Collections.unmodifiableMap(pinsByName); this.componentMovedListeners = new ArrayList<>(); this.pinAddedListeners = new ArrayList<>(); @@ -81,9 +80,16 @@ public abstract class GUIComponent /** * Adds the given pin to this component and calls pinAddedListeners and redrawListeners. + * + * @throws IllegalArgumentException if the pin doesn't belong to this component + * @throws IllegalArgumentException if there already is a pin with the given name + * + * @author Daniel Kirschten */ protected void addPin(Pin pin) { + if (pin.component != this) + throw new IllegalArgumentException("Can't add a pin not belonging to this component!"); if (pinsByName.containsKey(pin.name)) throw new IllegalArgumentException("Duplicate pin name: " + pin.name); pinsByName.put(pin.name, pin); @@ -95,7 +101,9 @@ public abstract class GUIComponent /** * Removes the given pin from this component and calls pinAddedListeners and redrawListeners. * - * @throws NullPointerException if there was no pin with this name. + * @throws NullPointerException if there was no pin with this name + * + * @author Daniel Kirschten */ protected void removePin(String name) { @@ -110,7 +118,7 @@ public abstract class GUIComponent * * @author Daniel Kirschten */ - public Collection getPins() + public Map getPins() { return pinsUnmodifiable; } @@ -211,6 +219,8 @@ public abstract class GUIComponent /** * Called when this component is clicked. Absolute coordinates of the click are given. Returns true if this component consumed this * click. + * + * @author Daniel Kirschten */ @SuppressWarnings({ "static-method", "unused" }) // this method is inteded to be overridden public boolean clicked(double x, double y)