Files
MASI4-signal-processing/src/main/java/app/state/AppState.java
2026-09-22 13:30:03 +02:00

53 lines
1.2 KiB
Java

package app.state;
import com.google.common.eventbus.EventBus;
import com.google.inject.Inject;
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() {}
public void subscribe(AppStateListener listener) {
listeners.add(listener);
}
public void unsubscribe(AppStateListener listener) {
listeners.remove(listener);
}
public void setMode(Mode mode) {
this.mode = mode;
listeners.forEach(listener -> listener.onModeChanged(mode));
}
public void setImage(Image image) {
this.rgbImage = image;
listeners.forEach(listener -> listener.onImageChanged(image));
}
public Image getImage() {
return rgbImage;
}
public Mode getMode() {
return mode;
}
}