diff --git a/src/main/java/org/reactome/web/pwp/client/common/events/SpeciesListRetrievedEvent.java b/src/main/java/org/reactome/web/pwp/client/common/events/SpeciesListRetrievedEvent.java new file mode 100644 index 00000000..8a3d71f1 --- /dev/null +++ b/src/main/java/org/reactome/web/pwp/client/common/events/SpeciesListRetrievedEvent.java @@ -0,0 +1,31 @@ +package org.reactome.web.pwp.client.common.events; + +import com.google.gwt.event.shared.GwtEvent; +import org.reactome.web.pwp.client.common.handlers.SpeciesListRetrievedHandler; +import org.reactome.web.pwp.model.client.classes.Species; + +import java.util.List; + +public class SpeciesListRetrievedEvent extends GwtEvent { + public static Type TYPE = new Type<>(); + private List speciesList; + + public SpeciesListRetrievedEvent(List speciesList) { + this.speciesList = speciesList; + } + + @Override + public Type getAssociatedType() { + return TYPE; + } + + @Override + protected void dispatch(SpeciesListRetrievedHandler handler) { + handler.onSpeciesListRetrieved(this); + } + + public List getSpeciesList() { + return speciesList; + } + +} diff --git a/src/main/java/org/reactome/web/pwp/client/common/handlers/SpeciesListRetrievedHandler.java b/src/main/java/org/reactome/web/pwp/client/common/handlers/SpeciesListRetrievedHandler.java new file mode 100644 index 00000000..b3fe6ef6 --- /dev/null +++ b/src/main/java/org/reactome/web/pwp/client/common/handlers/SpeciesListRetrievedHandler.java @@ -0,0 +1,8 @@ +package org.reactome.web.pwp.client.common.handlers; + +import com.google.gwt.event.shared.EventHandler; +import org.reactome.web.pwp.client.common.events.SpeciesListRetrievedEvent; + +public interface SpeciesListRetrievedHandler extends EventHandler { + void onSpeciesListRetrieved(SpeciesListRetrievedEvent event); +} diff --git a/src/main/java/org/reactome/web/pwp/client/manager/state/StateManager.java b/src/main/java/org/reactome/web/pwp/client/manager/state/StateManager.java index fd9bcf02..34e47b4f 100644 --- a/src/main/java/org/reactome/web/pwp/client/manager/state/StateManager.java +++ b/src/main/java/org/reactome/web/pwp/client/manager/state/StateManager.java @@ -32,12 +32,14 @@ public class StateManager implements BrowserModule.Manager, ValueChangeHandler, State.StateLoadedHandler, StateChangedHandler, DatabaseObjectSelectedHandler, DetailsTabChangedHandler, DiagramObjectsFlagResetHandler, AnalysisCompletedHandler, AnalysisResetHandler, AnalysisFilterChangedHandler, - ToolSelectedHandler, TermFlaggedHandler { + ToolSelectedHandler, TermFlaggedHandler, SpeciesListRetrievedHandler { private EventBus eventBus; private State currentState; + private List speciesList; + public StateManager(EventBus eventBus) { this.eventBus = eventBus; new TitleManager(eventBus); @@ -53,6 +55,7 @@ public StateManager(EventBus eventBus) { this.eventBus.addHandler(DiagramObjectsFlagResetEvent.TYPE, this); this.eventBus.addHandler(AnalysisFilterChangedEvent.TYPE, this); this.eventBus.addHandler(TermFlaggedEvent.TYPE, this); + this.eventBus.addHandler(SpeciesListRetrievedEvent.TYPE, this); } @Override @@ -96,6 +99,11 @@ public void onAnalysisReset() { this.eventBus.fireEventFromSource(new StateChangedEvent(desiredState), this); } + @Override + public void onSpeciesListRetrieved(SpeciesListRetrievedEvent event) { + this.speciesList = event.getSpeciesList(); + } + @Override public void onDatabaseObjectSelected(DatabaseObjectSelectedEvent event) { Selection newSelection = event.getSelection(); @@ -128,7 +136,7 @@ public void onDatabaseObjectSelected(DatabaseObjectSelectedEvent event) { currentState.setEvent(e); currentState.setPath(path); } - if (species != null && !species.equals(currentState.getSpecies())) { + if (species != null && !species.equals(currentState.getSpecies()) && speciesList.contains(species)) { eventBus.fireEventFromSource(new SpeciesSelectedEvent(species), this); return; } diff --git a/src/main/java/org/reactome/web/pwp/client/toppanel/species/SpeciesSelectorPresenter.java b/src/main/java/org/reactome/web/pwp/client/toppanel/species/SpeciesSelectorPresenter.java index 3316468a..aaf9da31 100644 --- a/src/main/java/org/reactome/web/pwp/client/toppanel/species/SpeciesSelectorPresenter.java +++ b/src/main/java/org/reactome/web/pwp/client/toppanel/species/SpeciesSelectorPresenter.java @@ -2,6 +2,7 @@ import com.google.gwt.event.shared.EventBus; import org.reactome.web.pwp.client.common.events.ErrorMessageEvent; +import org.reactome.web.pwp.client.common.events.SpeciesListRetrievedEvent; import org.reactome.web.pwp.client.common.events.SpeciesSelectedEvent; import org.reactome.web.pwp.client.common.events.StateChangedEvent; import org.reactome.web.pwp.client.common.module.AbstractPresenter; @@ -66,6 +67,7 @@ public void onObjectListLoaded(List list) { speciesList = list; display.setData(speciesList); loaded = true; + eventBus.fireEventFromSource(new SpeciesListRetrievedEvent(speciesList), this); switchDisplayToSpecies(currentSpecies); } @@ -83,4 +85,5 @@ public void onContentClientError(ContentClientError error) { } }); } + }