From: Daniel Kirschten Date: Tue, 28 May 2019 12:51:19 +0000 (+0200) Subject: Small changes; mainly in the listener system: X-Git-Url: https://mograsim.net/gitweb/?p=Mograsim.git;a=commitdiff_plain;h=b9af3f05aac91c61c25545b91c414645afa58297 Small changes; mainly in the listener system: -Listeners now are Consumer instead of Consumer -LogicUICanvas adds/removes listeners to not miss changes in the model -Updated to new SWTHelper version --- diff --git a/LogicUI/src/era/mi/gui/LogicUICanvas.java b/LogicUI/src/era/mi/gui/LogicUICanvas.java index 0b7641eb..0e2a606b 100644 --- a/LogicUI/src/era/mi/gui/LogicUICanvas.java +++ b/LogicUI/src/era/mi/gui/LogicUICanvas.java @@ -1,5 +1,7 @@ package era.mi.gui; +import java.util.function.Consumer; + import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Event; @@ -27,9 +29,34 @@ public class LogicUICanvas extends ZoomableCanvas this.model = model; - model.addComponentAddedListener(c -> redrawThreadsafe()); + Consumer redrawConsumer = o -> redrawThreadsafe(); + Consumer pinAddedListener = p -> + { + p.addPinMovedListener(redrawConsumer); + redrawThreadsafe(); + }; + Consumer pinRemovedListener = p -> + { + p.removePinMovedListener(redrawConsumer); + redrawThreadsafe(); + }; + model.addComponentAddedListener(c -> + { + c.addComponentChangedListener(redrawConsumer); + c.addComponentMovedListener(redrawConsumer); + c.addPinAddedListener(pinAddedListener); + c.addPinRemovedListener(pinRemovedListener); + redrawThreadsafe(); + }); + model.addComponentRemovedListener(c -> + { + c.removeComponentChangedListener(redrawConsumer); + c.removeComponentMovedListener(redrawConsumer); + c.removePinAddedListener(pinAddedListener); + c.removePinRemovedListener(pinRemovedListener); + redrawThreadsafe(); + }); model.addWireAddedListener(c -> redrawThreadsafe()); - model.addComponentRemovedListener(c -> redrawThreadsafe()); model.addWireRemovedListener(c -> redrawThreadsafe()); addZoomedRenderer(gc -> diff --git a/LogicUI/src/era/mi/gui/examples/Playground.java b/LogicUI/src/era/mi/gui/examples/Playground.java index 74da19cc..f5567598 100644 --- a/LogicUI/src/era/mi/gui/examples/Playground.java +++ b/LogicUI/src/era/mi/gui/examples/Playground.java @@ -1,6 +1,5 @@ package era.mi.gui.examples; -import era.mi.gui.LogicUICanvas; import era.mi.gui.LogicUIStandalone; import era.mi.gui.model.ViewModel; import era.mi.gui.model.components.GUIAndGate; @@ -17,11 +16,11 @@ public class Playground { ViewModel model = new ViewModel(); LogicUIStandalone ui = new LogicUIStandalone(model); - addComponentsAndWires(ui.getLogicUICanvas(), model); + addComponentsAndWires(model); ui.run(); } - public static void addComponentsAndWires(LogicUICanvas ui, ViewModel model) + public static void addComponentsAndWires(ViewModel model) { GUIAndGate andGate = new GUIAndGate(model); andGate.moveTo(10, 10); diff --git a/LogicUI/src/era/mi/gui/model/ViewModel.java b/LogicUI/src/era/mi/gui/model/ViewModel.java index 4eb81e87..7eb55c18 100644 --- a/LogicUI/src/era/mi/gui/model/ViewModel.java +++ b/LogicUI/src/era/mi/gui/model/ViewModel.java @@ -15,10 +15,10 @@ public class ViewModel private final List wires; private final List wiresUnmodifiable; - private final List> componentAddedListeners; - private final List> componentRemovedListeners; - private final List> wireAddedListeners; - private final List> wireRemovedListeners; + private final List> componentAddedListeners; + private final List> componentRemovedListeners; + private final List> wireAddedListeners; + private final List> wireRemovedListeners; public ViewModel() { @@ -92,15 +92,15 @@ public class ViewModel } // @formatter:off - public void addComponentAddedListener (Consumer listener){componentAddedListeners .add (listener);} - public void addComponentRemovedListener (Consumer listener){componentRemovedListeners.add (listener);} - public void addWireAddedListener (Consumer listener){wireAddedListeners .add (listener);} - public void addWireRemovedListener (Consumer listener){wireRemovedListeners .add (listener);} + public void addComponentAddedListener (Consumer listener){componentAddedListeners .add (listener);} + public void addComponentRemovedListener (Consumer listener){componentRemovedListeners.add (listener);} + public void addWireAddedListener (Consumer listener){wireAddedListeners .add (listener);} + public void addWireRemovedListener (Consumer listener){wireRemovedListeners .add (listener);} - public void removeComponentAddedListener (Consumer listener){componentAddedListeners .remove(listener);} - public void removeComponentRemovedListener(Consumer listener){componentRemovedListeners.remove(listener);} - public void removeWireAddedListener (Consumer listener){wireAddedListeners .remove(listener);} - public void removeWireRemovedListener (Consumer listener){wireRemovedListeners .remove(listener);} + public void removeComponentAddedListener (Consumer listener){componentAddedListeners .remove(listener);} + public void removeComponentRemovedListener(Consumer listener){componentRemovedListeners.remove(listener);} + public void removeWireAddedListener (Consumer listener){wireAddedListeners .remove(listener);} + public void removeWireRemovedListener (Consumer listener){wireRemovedListeners .remove(listener);} private void callComponentAddedListeners (GUIComponent c) {componentAddedListeners .forEach(l -> l.accept(c));} private void callComponentRemovedListeners(GUIComponent c) {componentRemovedListeners.forEach(l -> l.accept(c));} diff --git a/LogicUI/src/era/mi/gui/model/components/GUIComponent.java b/LogicUI/src/era/mi/gui/model/components/GUIComponent.java index e266afbf..9b8aa032 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> componentChangedListeners; + private final List> componentMovedListeners; + private final List> pinAddedListeners; + private final List> pinRemovedListeners; public GUIComponent(ViewModel model) { @@ -76,15 +76,15 @@ 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);} + 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));} diff --git a/LogicUI/src/era/mi/gui/model/wires/Pin.java b/LogicUI/src/era/mi/gui/model/wires/Pin.java index cf596405..44ea3742 100644 --- a/LogicUI/src/era/mi/gui/model/wires/Pin.java +++ b/LogicUI/src/era/mi/gui/model/wires/Pin.java @@ -15,7 +15,7 @@ public class Pin protected double relX; protected double relY; - private final List> pinMovedListeners; + private final List> pinMovedListeners; public Pin(GUIComponent component, double relX, double relY) { @@ -50,9 +50,9 @@ public class Pin } // @formatter:off - public void addPinMovedListener (Consumer listener){pinMovedListeners.add (listener);} + public void addPinMovedListener (Consumer listener){pinMovedListeners.add (listener);} - public void removePinMovedListener(Consumer listener){pinMovedListeners.remove(listener);} + public void removePinMovedListener(Consumer listener){pinMovedListeners.remove(listener);} private void callPinMovedListeners() {pinMovedListeners.forEach(l -> l.accept(this));} // @formatter:on diff --git a/SWTHelper b/SWTHelper index 1b4a52c0..7d47333e 160000 --- a/SWTHelper +++ b/SWTHelper @@ -1 +1 @@ -Subproject commit 1b4a52c0491e8d22fe6b2352a11d7d82f14c7074 +Subproject commit 7d47333ed050416991e97421ece07965edb3d7f2