private boolean targetPageIsAlreadyActive() { return currentPage.getPageId().equals(targetPage); }
/** * We need to give the current page an opportunity to cancel the * navigation. For example, the user may have made changes to the page * and we don't want to navigate away until we're sure that they can be * saved. */ private void askPermissionToChange() { currentPage.requestToNavigateAway(place, new NavigationCallback() { @Override public void onDecided(boolean allowed) { if (allowed) { if (isStillActive()) { proceedWithNavigation(); } } else { Log.debug("Navigation to '" + place.toString() + "' refused by " + currentPage.toString()); activeNavigation = previousActiveNavigation; } } }); }
private void shutDownCurrentPageIfThereIsOne() { if (!thereIsNoCurrentPage()) { currentPage.shutdown(); } }
@Override public void setActivePage(Page page) { setWidget((Widget) page.getWidget()); activePage = page; }
@Override public void onSuccess() { final Page page = pageProviders.get(pageId).get(); if (page == null) { callback.onFailure(new Exception("ConfigLoader didn't know how to handle " + place.toString())); } else if (page instanceof DbPage) { dispatch.execute(new GetSchema(), new AsyncCallback<SchemaDTO>() { @Override public void onFailure(Throwable caught) { callback.onFailure(caught); } @Override public void onSuccess(SchemaDTO result) { DbPageState dbPlace = (DbPageState) place; UserDatabaseDTO database = result.getDatabaseById(dbPlace.getDatabaseId()); if(database.isSuspended()) { callback.onSuccess(new DbErrorPage(database)); } else { ((DbPage) page).go(database); callback.onSuccess(page); } } }); } else { page.navigate(place); callback.onSuccess(page); } } });
@Override public void onWindowClosing(Window.ClosingEvent event) { if (activeNavigation != null && activeNavigation.currentPage != null) { event.setMessage(activeNavigation.currentPage.beforeWindowCloses()); } } });
@Override public void setActivePage(Page page) { setWidget((Widget) page.getWidget()); activePage = page; }
protected void changePage() { /* * First see if this view is already the active view, in wehich case * we can just descend in the path */ if (!thereIsNoCurrentPage() && targetPageIsAlreadyActive() && currentPage.navigate(place)) { changeChildPageIfNecessary(); } else { shutDownCurrentPageIfThereIsOne(); showPlaceHolder(); schedulePageLoadAfterEventProcessing(); } }
@Override public void requestToNavigateAway(PageState place, NavigationCallback callback) { if (activePage == null) { callback.onDecided(true); } else { activePage.requestToNavigateAway(place, callback); } }
@Before public void setUp() { expect(outerFrameSet.getPageId()).andReturn(outerFrameSetId).anyTimes(); expect(firstPage.getPageId()).andReturn(firstPageId).anyTimes(); pageManager = new NavigationHandler(eventBus, rootFrameSet); }
private void expectShutdownCallTo(Page page) { page.shutdown(); }
private void navigationRequestWillBeAnsweredBy(Page page, final boolean allowed) { page.requestToNavigateAway(isA(PageState.class), isA(NavigationCallback.class)); expectLastCall().andAnswer(new IAnswer<Void>() { @Override public Void answer() throws Throwable { ((NavigationCallback) (getCurrentArguments()[1])) .onDecided(allowed); return null; } }); }