/** * Removes presenter from most popular meals * * @param meal */ private void removeMostPopularPresenter(MealModel meal) { try { // remove also from presenters for (int i = 0; i < mostPopularPresenters.size(); i++) { MealLinkPresenter presenter = mostPopularPresenters.get(i); if (presenter != null && presenter.meal.getId() == meal.getId()) { presenter.stop(); mostPopularPresenters.remove(presenter); } } // if no meals -> show empty presenter if (mostPopularPresenters.size() == 0) { if (emptyPresenter2 != null) { emptyPresenter2.stop(); } emptyPresenter2 = new EmptyPresenter( rpcService, eventBus, (EmptyDisplay) GWT.create(EmptyView.class), AppController.Lang.NoMeals()); emptyPresenter2.run(display.getMostPopularContainer()); } } catch (Exception e) { Motiver.showException(e); } }
/** * Adds new presenter to view (most popular meals) * * @param presenter */ protected void addNewMostPopularPresenter(MealLinkPresenter presenter) { try { // remove emptypresenter if present if (emptyPresenter2 != null) { emptyPresenter2.stop(); emptyPresenter2 = null; } mostPopularPresenters.add(presenter); presenter.run(display.getMostPopularContainer()); } catch (Exception e) { Motiver.showException(e); } }
/** Loads meals */ void loadMostPopularMeals(final int index) { if (emptyPresenter2 != null) { emptyPresenter2.stop(); } // stop show more if (showMorePresenter2 != null) { showMorePresenter2.stop(); } // stop presenters if first items if (index == 0) { unbindPresenters(2); } // add empty presenter emptyPresenter2 = new EmptyPresenter( rpcService, eventBus, (EmptyDisplay) GWT.create(EmptyView.class), EmptyPresenter.EMPTY_LOADING); emptyPresenter2.run(display.getMostPopularContainer()); // load most popular Motiver.setNextCallCacheable(true); final Request req = rpcService.getMostPopularMeals( index, new MyAsyncCallback<List<MealModel>>() { @Override public void onSuccess(List<MealModel> result) { showMostPopularMeals(index, result); } }); addRequest(req); }
/** * Shows most popular meals * * @param list : MealModels * @param openFirst : open first meal */ private void showMostPopularMeals(final int index, List<MealModel> list) { try { if (emptyPresenter2 != null) { emptyPresenter2.stop(); } // stop show more if (showMorePresenter2 != null) { showMorePresenter2.stop(); } // stop presenters if first items if (index == 0) { unbindPresenters(2); } // if no meals if (index == 0 && list.size() == 0) { emptyPresenter2 = new EmptyPresenter( rpcService, eventBus, (EmptyDisplay) GWT.create(EmptyView.class), AppController.Lang.NoMeals()); emptyPresenter2.run(display.getMostPopularContainer()); } else { for (final MealModel m : list) { // if null value -> list was limited -> add showMorePresenter if (m == null) { showMorePresenter2 = new ShowMorePresenter( rpcService, eventBus, (ShowMoreDisplay) GWT.create(ShowMoreView.class), new ShowMoreHandler() { @Override public void showMore() { loadMostPopularMeals(index + Constants.LIMIT_MEALS); } }); showMorePresenter2.run(display.getMostPopularContainer()); } else { // new presenter final MealLinkPresenter wp = new MealLinkPresenter( rpcService, eventBus, (MealLinkDisplay) GWT.create(MealLinkView.class), m, quickSelectionEnabled); addNewMostPopularPresenter(wp); } } } } catch (Exception e) { Motiver.showException(e); } }