@Override
  public Object enter() {
    navigator = ((AppEntry) UI.getCurrent()).getNavigation();
    // prepare data object
    cachedSource =
        new DbCachedSource<>(dbExecution, new ExecutionAccessor(), utils.getPageLength());
    ReadOnlyContainer c = new ReadOnlyContainer<>(cachedSource);
    c.sort(new Object[] {"id"}, new boolean[] {false});
    dataObject = new ExecutionListData(c);
    // prepare view
    Object viewObject = view.enter(this);
    refreshManager = ((AppEntry) UI.getCurrent()).getRefreshManager();
    refreshManager.addListener(
        RefreshManager.EXECUTION_MONITOR,
        new Refresher.RefreshListener() {
          private long lastRefreshFinished = 0;

          @Override
          public void refresh(Refresher source) {
            if (new Date().getTime() - lastRefreshFinished > RefreshManager.MIN_REFRESH_INTERVAL) {
              refreshEventHandler();
              LOG.debug("ExecutionMonitor refreshed.");
              lastRefreshFinished = new Date().getTime();
            }
          }
        });

    // set data object
    view.setDisplay(dataObject);

    // add initial name filter
    view.setFilter("owner.username", utils.getUserName());

    // return main component
    return viewObject;
  }
 @Override
 public void startDebugRefreshEventHandler(DebuggingView debugView, PipelineExecution execution) {
   refreshManager.addListener(
       RefreshManager.DEBUGGINGVIEW,
       RefreshManager.getDebugRefresher(debugView, execution, pipelineFacade));
 }
 @Override
 public void stopRefreshEventHandler() {
   refreshManager.removeListener(RefreshManager.DEBUGGINGVIEW);
 }