X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=LogicUI%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fui%2Fmodel%2Fcomponents%2FGUIComponent.java;fp=LogicUI%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fui%2Fmodel%2Fcomponents%2FGUIComponent.java;h=0000000000000000000000000000000000000000;hb=07faf07e3acb8b2afdc2bf65a46bc868faaed0f8;hp=9cea86a6a1870dbde04a6d67dce6057ef7eb4952;hpb=0009789a8df6b8d4562b6e1cbfa75102a7516ea8;p=Mograsim.git diff --git a/LogicUI/src/net/mograsim/logic/ui/model/components/GUIComponent.java b/LogicUI/src/net/mograsim/logic/ui/model/components/GUIComponent.java deleted file mode 100644 index 9cea86a6..00000000 --- a/LogicUI/src/net/mograsim/logic/ui/model/components/GUIComponent.java +++ /dev/null @@ -1,119 +0,0 @@ -package net.mograsim.logic.ui.model.components; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.function.Consumer; - -import net.mograsim.logic.ui.model.ViewModel; -import net.mograsim.logic.ui.model.wires.Pin; -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; - -public abstract class GUIComponent -{ - protected final ViewModel model; - private final Rectangle bounds; - private final List pins; - protected final List pinsUnmodifiable; - - private final List> componentLookChangedListeners; - private final List> componentMovedListeners; - private final List> pinAddedListeners; - private final List> pinRemovedListeners; - - public GUIComponent(ViewModel model) - { - this.model = model; - this.bounds = new Rectangle(0, 0, 0, 0); - this.pins = new ArrayList<>(); - this.pinsUnmodifiable = Collections.unmodifiableList(pins); - - this.componentLookChangedListeners = new ArrayList<>(); - this.componentMovedListeners = new ArrayList<>(); - this.pinAddedListeners = new ArrayList<>(); - this.pinRemovedListeners = new ArrayList<>(); - - model.componentCreated(this); - } - - public void destroy() - { - pins.forEach(p -> pinRemovedListeners.forEach(l -> l.accept(p))); - model.componentDestroyed(this); - } - - public void moveTo(double x, double y) - { - bounds.x = x; - bounds.y = y; - callComponentMovedListeners(); - } - - /** - * Returns the bounds of this component. Used for calculating which component is clicked. - */ - public Rectangle getBounds() - { - return new Rectangle(bounds.x, bounds.y, bounds.width, bounds.height); - } - - /** - * Called when this component is clicked. Absolute coordinates of the click are given. Returns true if this component consumed this - * click. - */ - @SuppressWarnings({ "static-method", "unused" }) // this method is inteded to be overridden - public boolean clicked(double x, double y) - { - return false; - } - - /** - * Returns a list of pins of this component. - */ - public List getPins() - { - return pinsUnmodifiable; - } - - // @formatter:off - public void addComponentLookChangedListener (Consumer listener) {componentLookChangedListeners.add (listener);} - public void addComponentMovedListener (Consumer listener) {componentMovedListeners .add (listener);} - public void addPinAddedListener (Consumer listener) {pinAddedListeners .add (listener);} - public void addPinRemovedListener (Consumer listener) {pinRemovedListeners .add (listener);} - - public void removeComponentLookChangedListener(Consumer listener) {componentLookChangedListeners.remove(listener);} - public void removeComponentMovedListener (Consumer listener) {componentMovedListeners .remove(listener);} - public void removePinAddedListener (Consumer listener) {pinAddedListeners .remove(listener);} - public void removePinRemovedListener (Consumer listener) {pinRemovedListeners .remove(listener);} - - protected void callComponentLookChangedListeners( ) {componentLookChangedListeners.forEach(l -> l.accept(this));} - private void callComponentMovedListeners ( ) {componentMovedListeners .forEach(l -> l.accept(this));} - private void callPinAddedListeners (Pin p) {pinAddedListeners .forEach(l -> l.accept(p ));} - private void callPinRemovedListeners (Pin p) {pinRemovedListeners .forEach(l -> l.accept(p ));} - // @form atter:on - - /** - * Render this component to the given gc. - */ - public abstract void render(GeneralGC gc, Rectangle visibleRegion); - - protected void setSize(double width, double height) - { - bounds.width = width; - bounds.height = height; - callComponentLookChangedListeners(); - } - - protected void addPin(Pin pin) - { - pins.add(pin); - callPinAddedListeners(pin); - } - - protected void removePin(Pin pin) - { - pins.remove(pin); - callPinRemovedListeners(pin); - } -} \ No newline at end of file