コード例 #1
0
  /**
   * Shows user's meals
   *
   * @param list : MealModels
   */
  private void showMyMeals(final int index, List<MealModel> list) {

    try {

      if (emptyPresenter != null) {
        emptyPresenter.stop();
      }
      // stop show more
      if (showMorePresenter != null) {
        showMorePresenter.stop();
      }
      // stop presenters if first items
      if (index == 0) {
        unbindPresenters(1);
      }

      // if no meals
      if (index == 0 && list.size() == 0) {
        emptyPresenter =
            new EmptyPresenter(
                rpcService,
                eventBus,
                (EmptyDisplay) GWT.create(EmptyView.class),
                AppController.Lang.NoMeals());
        emptyPresenter.run(display.getMyMealsContainer());
      } else {

        for (final MealModel m : list) {

          // if null value -> list was limited -> add showMorePresenter
          if (m == null) {
            showMorePresenter =
                new ShowMorePresenter(
                    rpcService,
                    eventBus,
                    (ShowMoreDisplay) GWT.create(ShowMoreView.class),
                    new ShowMoreHandler() {
                      @Override
                      public void showMore() {
                        loadMyMeals(index + Constants.LIMIT_MEALS);
                      }
                    });
            showMorePresenter.run(display.getMyMealsContainer());
          } else {
            // new presenter
            final MealLinkPresenter wp =
                new MealLinkPresenter(
                    rpcService,
                    eventBus,
                    (MealLinkDisplay) GWT.create(MealLinkView.class),
                    m,
                    quickSelectionEnabled);
            addNewMyMealPresenter(wp);
          }
        }
      }

    } catch (Exception e) {
      Motiver.showException(e);
    }
  }