X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=LogicUI%2Fsrc%2Fera%2Fmi%2Fgui%2Fmodel%2Fcomponents%2FGUIComponent.java;h=ccb24a22f6b1442b4dd6201c8060d258cef1e61f;hb=53db506919cb378f8f3e2584491ddbc5357ccd8c;hp=cf9b23a2116909a347008f39bc05dff0f6612a95;hpb=f2886cbd57dd08b797921fc2421b41bd92915799;p=Mograsim.git diff --git a/LogicUI/src/era/mi/gui/model/components/GUIComponent.java b/LogicUI/src/era/mi/gui/model/components/GUIComponent.java index cf9b23a2..ccb24a22 100644 --- a/LogicUI/src/era/mi/gui/model/components/GUIComponent.java +++ b/LogicUI/src/era/mi/gui/model/components/GUIComponent.java @@ -17,10 +17,10 @@ public abstract class GUIComponent private final List pins; protected final List pinsUnmodifiable; - private final List> componentChangedListeners; - private final List> componentMovedListeners; - private final List> pinAddedListeners; - private final List> pinRemovedListeners; + private final List> componentLookChangedListeners; + private final List> componentMovedListeners; + private final List> pinAddedListeners; + private final List> pinRemovedListeners; public GUIComponent(ViewModel model) { @@ -29,7 +29,7 @@ public abstract class GUIComponent this.pins = new ArrayList<>(); this.pinsUnmodifiable = Collections.unmodifiableList(pins); - this.componentChangedListeners = new ArrayList<>(); + this.componentLookChangedListeners = new ArrayList<>(); this.componentMovedListeners = new ArrayList<>(); this.pinAddedListeners = new ArrayList<>(); this.pinRemovedListeners = new ArrayList<>(); @@ -37,6 +37,12 @@ public abstract class GUIComponent 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; @@ -70,21 +76,21 @@ public abstract class GUIComponent } // @formatter:off - public void addComponentChangedListener (Consumer listener) {componentChangedListeners.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 removeComponentChangedListener(Consumer listener) {componentChangedListeners.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);} - - private void callComponentChangedListeners( ) {componentChangedListeners.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 ));} - // @formatter:on + 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. @@ -95,7 +101,7 @@ public abstract class GUIComponent { bounds.width = width; bounds.height = height; - callComponentChangedListeners(); + callComponentLookChangedListeners(); } protected void addPin(Pin pin)