53 lines
1.2 KiB
Java
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;
|
|
}
|
|
}
|