Update architecture
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user