@Override
 public void onStateManagerInstancesInitialStateReached() {
   this.diagram = null;
   this.databaseObject = null;
   for (DetailsTabView.Presenter tab : tabsPresenter) {
     tab.setInstancesInitialState();
   }
 }
  @Override
  public void onStateManagerDatabaseObjectsSelected(
      List<Event> path, Pathway pathway, DatabaseObject databaseObject) {
    this.diagram = pathway;
    this.databaseObject = databaseObject;

    for (DetailsTabView.Presenter tab : tabsPresenter) {
      tab.showInstanceDetailsIfExists(pathway, databaseObject);
    }
    showInstanceDetails(DetailsTabType.getIndex(selectedTabType));
  }
  @Override
  public void showInstanceDetails(Integer index) {
    DetailsTabView.Presenter tab = tabsPresenter.get(index);
    DetailsTabType tabType = tab.getView().getDetailTabType();

    if (!selectedTabType.equals(tabType)) {
      selectedTabType = tabType;
      eventBus.fireELVEvent(ELVEventType.DETAILS_PANEL_TAB_CHANGED, tabType);
    }

    if (this.diagram != null) { // at least diagram has to exist, otherwise nothing can be shown
      tab.showInstanceDetails(this.diagram, this.databaseObject);
    } else {
      tab.setInstancesInitialState();
    }
  }