@Override
  public void fragmentChanged(FragmentChangedEvent source) {

    // used by the back and forward browser button

    if (source == null
        || source.getUriFragmentUtility() == null
        || source.getUriFragmentUtility().getFragment() == null) return;

    String uriFragment = source.getUriFragmentUtility().getFragment();

    HistoryEntry entry = historyStack.get(uriFragment);

    if (entry == null) {

      if (fire404OnUnknownURI) {
        eventBus.fireEvent(new Show404ViewEvent());
      }

    } else {
      setCurrentViewCausedByHistoryChange = true;

      // fire the events that are needed to get to the state of uri fragment
      for (com.mvplite.event.Event e : entry.eventsToFire) {
        eventBus.fireEvent(e);
      }

      setCurrentViewCausedByHistoryChange = false;
    }
  }
 /**
  * Diese Methode löscht das übergeben Projekt und aktualisiert die View.
  *
  * @param project : Das zu entfernende Projekt
  * @author Marco Glaser
  */
 public void removeProject(Project project) {
   persistenceService.removeProject(this.user, project);
   logger.debug("Projekt aus User entfernt");
   projectListView.setProjects(user.getProjects());
   //		eventBus.fireEvent(new ProjectRemoveEvent(project));
   getView().showView(projectListView, projectDetailsView);
   eventBus.fireEvent(new ShowProjectDetailsEvent());
   logger.debug("ProjekteRemove Event gefeuert");
 }
 // wird durch den Click-Listener des Logout-Button in der InitinalScreen-View aufgerufen
 public void doLogout() {
   // speichert die Projekte in der externen Datei
   persistenceService.saveProjects();
   logger.debug("Projekte gespeichert");
   try {
     // ruft doLogout im Authentication Service auf und entfernt User aus allen eingeloggten Usern
     authenticationService.doLogout(userProxy.getSelectedUser());
     logger.debug("LogoutEvent gefeuert");
     eventBus.fireEvent(new LogoutEvent());
   } catch (UserNotLoggedInException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
   }
 }
 /**
  * Dieser Event wird zu Beginn von der BHApplication (nach dem Einloggen) abgesetzt. Dabei wird
  * auf der linken Seite die Projekt-Liste und auf der rechten Seite der Detailscreen für die
  * Projekte eingefügt
  *
  * @author Christian Scherer, Marco Glaser
  * @param event :das ShowInitialScreenViewEvent, welches das angemeldete User-Objekt beinhaltet
  */
 @EventHandler
 public void onShowInitialScreen(ShowInitialScreenViewEvent event) {
   logger.debug("ShowInitialScreenViewEvent empfangen");
   user = userProxy.getSelectedUser();
   // getView().showUserData(user.getFullName());
   getView().showView(projectListView, projectDetailsView);
   getView().clearProgressBar();
   projectDetailsView.clearProjectDetails();
   logger.debug("Views mit Projekt und Infoview geladen");
   eventBus.fireEvent(new ShowProjectListEvent(user));
   logger.debug("ShowProjectListEvent gefeuert");
   // eventBus.fireEvent(new ShowInfosEvent());
   logger.debug("ShowInfosEvent gefeuert");
 }
  /**
   * Diese Methode per Event nach dem Upload der zu importierenden Projektdatei aufgerufen. Sie löst
   * das Auslesen der in der Datei enthaltenen Projektdaten und das Importieren aus. Nach dem Import
   * wird das ShowProjectListEvent geworfen, um die angezeigte Liste zu aktualisieren.
   *
   * @param event ImportUploadFinishedEvent, dass als Parameter den Dateinamen der hochgeladenen
   *     Datei enthält.
   * @author Tobias Lindner
   */
  @EventHandler
  public void onUploadFinishedImport(ImportUploadFinishedEvent event) {
    String notImported =
        null; // in diesen String wird der Rückgabewert, der String mit den Projektnamen, die nicht
              // importiert werden konnten gespeichert
    logger.debug("ImportUploadFinishedEvent empfangen");

    notImported = persistenceService.importAllProjects(user, event.getfileName());
    logger.debug("PersistenceService Import-Funktion im Presenter aufgerufen");

    //		//Ausgabe der Fehlermeldung, falls nicht alle Projekte importiert werden konnten
    //		if (notImported != null) {
    //			getView().showErrorMessage(notImported);
    //		}

    // Aktualisieren der Antwort
    eventBus.fireEvent(new ShowProjectListEvent(user));
    logger.debug("ShowProjectListEvent geworfen");
  }
  public void showInitialScreen() {

    eventBus.fireEvent(new ShowInitialScreenViewEvent(user));
    eventBus.fireEvent(new ShowInitialTopButtonsEvent());
  }
  @EventHandler
  public void onShowMethodSelectionView(ShowProcessStepEvent event) {
    project = projectProxy.getSelectedProject();
    persistenceService.saveProjects();

    switch (event.getScreen()) {
      case METHODSELECTION:
        buttonsMiddleView.setInitialButtons();
        methodScreenView.setRadioValues();
        getView().showView(buttonsMiddleView, methodScreenView);
        getView()
            .setPageDescription(
                "./images/icons/newIcons/1418831828_editor_memo_note_pad-128.png",
                "Schritt 1",
                new String[] {"Wählen Sie die Methoden", "zur Berechnung"});
        getView().setProgress("./images/progressBar/progress_1.png");
        setScreen1Buttons();
        break;

      case PARAMETER:
        buttonsMiddleView.setGoToStep(3);
        if (projectProxy.getSelectedProject().getProjectInputType().isStochastic()) {
          buttonsMiddleView.setStochasticParameter();
          getView()
              .setPageDescription(
                  "./images/icons/newIcons/1418831298_common_calendar_month-128.png",
                  "Schritt 2",
                  new String[] {"Stochastische Methode", "Bitte geben Sie die Parameter ein"});
          logger.debug("Stochastische Buttons gesetzt");
        } else {
          buttonsMiddleView.setDeterministicParameter();
          getView()
              .setPageDescription(
                  "./images/icons/newIcons/1418831298_common_calendar_month-128.png",
                  "Schritt 2",
                  new String[] {"Deterministische Methode", "Bitte geben Sie die Parameter ein"});
          logger.debug("Deterministische Buttons gesetzt");
        }
        getView().showView(buttonsMiddleView, parameterInputView);
        getView().setProgress("./images/progressBar/progress_2.png");
        setScreen2Buttons();
        break;

      case PERIODS:
        buttonsMiddleView.setGoToStep(4);
        getView().showView(buttonsMiddleView, periodScreenView);
        periodScreenView.setMethod();
        String text = periodScreenView.getPageDescription();
        getView()
            .setPageDescription(
                "./images/icons/newIcons/1418831563_circle_backup_time_history_recent_time-machine_-128.png",
                "Schritt 3",
                new String[] {text, "Bitte geben Sie die Parameter ein"});
        getView().setProgress("./images/progressBar/progress_3.png");
        setScreen3Buttons();

        break;

      case SCENARIOS:
        buttonsMiddleView.setGoToStep(5);
        getView().showView(buttonsMiddleView, scenarioScreenView);
        getView()
            .setPageDescription(
                "./images/icons/newIcons/1418831239_editor_attachment_paper_clip_2-128.png",
                "Schritt 4",
                new String[] {"Bitte geben Sie Szenarien an", "falls erwünscht"});
        getView().setProgress("./images/progressBar/progress_4.png");
        setScreen4Buttons();
        break;

      case RESULT:
        buttonsMiddleView.hideStepButton();
        if (project.getScenarios().size() > 1) {
          getView().showExtendedView(resultScreenView);
        } else {
          getView().showView(buttonsMiddleView, resultScreenView);
        }
        getView()
            .setPageDescription(
                "./images/icons/newIcons/1418775155_device_board_presentation_content_chart-128.png",
                "Schritt 5",
                "Ergebnisausgabe");
        getView().setProgress("./images/progressBar/progress_5.png");
        setScreen5Buttons();
        eventBus.fireEvent(new ShowOutputViewEvent());
        break;

      default:
        break;
    }
  }
 /**
  * Diese Methode setzt die View zum Bearbeiten eines neuen Projektes in den rechten Bereich und
  * feuert ein Event um die Buttons in der Buttonleiste anzupassen.
  *
  * @author Marco Glaser
  */
 public void showProjectEditScreen() {
   getView().showView(startCalculationButtonView, projectCreationView);
   projectCreationView.setInitialScreen(this.getView());
   eventBus.fireEvent(new ShowProjectEditButtonsEvent(userProxy.getSelectedUser()));
 }
 /**
  * Dies ist der Konstruktor, der von Spring nach der Initialierung der Dependencies aufgerufen
  * wird. Er registriert lediglich sich selbst als einen EventHandler.
  *
  * @author Christian Scherer
  */
 @PostConstruct
 public void init() {
   eventBus.addHandler(this);
   logger.debug("Eventhandler Hinzugefügt");
 }