Update architecture

This commit is contained in:
2026-09-22 13:30:03 +02:00
parent 8b1e6ae358
commit b177ea5a38
27 changed files with 792 additions and 374 deletions

View File

@@ -6,35 +6,47 @@ import com.google.inject.Singleton;
import domain.common.Mode;
import domain.events.ImageChangedEvent;
import domain.events.ModeChangedEvent;
import domain.events.listeners.Listener;
import domain.image.Image;
import java.util.ArrayList;
import java.util.List;
/**
* Represents the global state of the app
*/
@Singleton
public class AppState extends State {
private Mode mode;
private Image rgbImage;
private final List<AppStateListener> listeners = new ArrayList<>();
@Inject
public AppState(EventBus eventBus) {
super(eventBus);
public AppState() {}
public void subscribe(AppStateListener listener) {
listeners.add(listener);
}
public void unsubscribe(AppStateListener listener) {
listeners.remove(listener);
}
public void setMode(Mode mode) {
this.mode = mode;
this.eventBus.post(new ModeChangedEvent(mode));
listeners.forEach(listener -> listener.onModeChanged(mode));
}
public void setImage(Image image) {
this.rgbImage = image;
this.eventBus.post(new ImageChangedEvent(image));
listeners.forEach(listener -> listener.onImageChanged(image));
}
public Image getImage(){
return this.rgbImage;
public Image getImage() {
return rgbImage;
}
public Mode getMode() { return this.mode; }
public Mode getMode() {
return mode;
}
}