class HistoryEventHandlerService implements ValueChangeHandler<String> {

    protected void processForProjectWideSearch(HistoryToken token) {
        if (!equal(token.getProjectSearchCaseSensitive(),
                currentHistoryState.getProjectSearchCaseSensitive())
                || !equal(token.getProjectSearchText(),
                        currentHistoryState.getProjectSearchText())
                || !equal(token.isProjectSearchInSource(),
                        currentHistoryState.isProjectSearchInSource())
                || !equal(token.isProjectSearchInTarget(),
                        currentHistoryState.isProjectSearchInTarget())) {
            Log.info("[gwt-history] project wide search condition has changed");

            searchResultsPresenter.updateViewAndRun(
                    token.getProjectSearchText(),
                    token.getProjectSearchCaseSensitive(),
                    token.isProjectSearchInSource(),
                    token.isProjectSearchInTarget());
        }

        boolean replacementTextChanged =
                !token.getProjectSearchReplacement().equals(
                        currentHistoryState.getProjectSearchReplacement());
        if (replacementTextChanged) {
            Log.info("[gwt-history] project wide search replacement text has changed");
            searchResultsPresenter.updateReplacementText(token
                    .getProjectSearchReplacement());
        }
    }

    @Inject public  HistoryEventHandlerService(EventBus eventBus,
            DocumentListPresenter documentListPresenter,
            AppPresenter appPresenter,
            SearchResultsPresenter searchResultsPresenter,
            GetTransUnitActionContextHolder getTransUnitActionContextHolder,
            ModalNavigationStateHolder modalStateHolder,
            UserConfigHolder configHolder);

}