Search in sources :

Example 6 with UrlChangeHandler

use of com.haulmont.cuba.web.sys.navigation.UrlChangeHandler in project cuba by cuba-platform.

the class RootNavigationHandler method doHandle.

@Override
public boolean doHandle(NavigationState requestedState, AppUI ui) {
    UrlChangeHandler urlChangeHandler = ui.getUrlChangeHandler();
    if (urlChangeHandler.isEmptyState(requestedState)) {
        urlChangeHandler.revertNavigationState();
        return false;
    }
    if (!rootChanged(requestedState, ui)) {
        return false;
    }
    String rootRoute = requestedState.getRoot();
    WindowInfo windowInfo = windowConfig.findWindowInfoByRoute(rootRoute);
    if (windowInfo == null) {
        log.info("No registered screen found for route: '{}'", rootRoute);
        urlChangeHandler.revertNavigationState();
        handle404(rootRoute, ui);
        return true;
    }
    if (urlChangeHandler.shouldRedirect(windowInfo)) {
        urlChangeHandler.redirect(requestedState);
        return true;
    }
    if (!urlChangeHandler.isPermittedToNavigate(requestedState, windowInfo)) {
        return true;
    }
    Screen screen = ui.getScreens().create(windowInfo.getId(), OpenMode.ROOT);
    boolean hasNestedRoute = StringUtils.isNotEmpty(requestedState.getNestedRoute());
    if (!hasNestedRoute && MapUtils.isNotEmpty(requestedState.getParams())) {
        UiControllerUtils.fireEvent(screen, UrlParamsChangedEvent.class, new UrlParamsChangedEvent(screen, requestedState.getParams()));
        ((WebWindow) screen.getWindow()).setResolvedState(requestedState);
    }
    screen.show();
    return !hasNestedRoute;
}
Also used : UrlParamsChangedEvent(com.haulmont.cuba.gui.navigation.UrlParamsChangedEvent) Screen(com.haulmont.cuba.gui.screen.Screen) NotFoundScreen(com.haulmont.cuba.web.app.ui.navigation.notfoundwindow.NotFoundScreen) UrlChangeHandler(com.haulmont.cuba.web.sys.navigation.UrlChangeHandler) WindowInfo(com.haulmont.cuba.gui.config.WindowInfo) WebWindow(com.haulmont.cuba.web.gui.WebWindow)

Example 7 with UrlChangeHandler

use of com.haulmont.cuba.web.sys.navigation.UrlChangeHandler in project cuba by cuba-platform.

the class ParamsNavigationHandler method doHandle.

@Override
public boolean doHandle(NavigationState requestedState, AppUI ui) {
    UrlChangeHandler urlChangeHandler = ui.getUrlChangeHandler();
    if (urlChangeHandler.isEmptyState(requestedState)) {
        return false;
    }
    Screen screen = urlChangeHandler.getActiveScreen();
    if (screen == null) {
        log.debug("Unable to find a screen for state: '{}", requestedState);
        return false;
    }
    Map<String, String> params = requestedState.getParams() != null ? requestedState.getParams() : Collections.emptyMap();
    WebWindow window = (WebWindow) screen.getWindow();
    NavigationState resolvedState = window.getResolvedState();
    if (resolvedState == null || params.equals(resolvedState.getParams())) {
        return false;
    }
    NavigationState newState = new NavigationState(resolvedState.getRoot(), resolvedState.getStateMark(), resolvedState.getNestedRoute(), params);
    window.setResolvedState(newState);
    UiControllerUtils.fireEvent(screen, UrlParamsChangedEvent.class, new UrlParamsChangedEvent(screen, params));
    return true;
}
Also used : UrlParamsChangedEvent(com.haulmont.cuba.gui.navigation.UrlParamsChangedEvent) Screen(com.haulmont.cuba.gui.screen.Screen) NavigationState(com.haulmont.cuba.gui.navigation.NavigationState) UrlChangeHandler(com.haulmont.cuba.web.sys.navigation.UrlChangeHandler) WebWindow(com.haulmont.cuba.web.gui.WebWindow)

Example 8 with UrlChangeHandler

use of com.haulmont.cuba.web.sys.navigation.UrlChangeHandler in project cuba by cuba-platform.

the class NoopNavigationHandler method doHandle.

@Override
public boolean doHandle(NavigationState requestedState, AppUI ui) {
    UrlChangeHandler urlChangeHandler = ui.getUrlChangeHandler();
    if (urlChangeHandler.isEmptyState(requestedState)) {
        log.debug("Unable to navigate to empty route: '{}'", requestedState);
        return false;
    }
    log.debug("Unable handle a route: '{}'", requestedState.asRoute());
    urlChangeHandler.revertNavigationState();
    return false;
}
Also used : UrlChangeHandler(com.haulmont.cuba.web.sys.navigation.UrlChangeHandler)

Aggregations

UrlChangeHandler (com.haulmont.cuba.web.sys.navigation.UrlChangeHandler)8 Screen (com.haulmont.cuba.gui.screen.Screen)5 UrlParamsChangedEvent (com.haulmont.cuba.gui.navigation.UrlParamsChangedEvent)4 NotFoundScreen (com.haulmont.cuba.web.app.ui.navigation.notfoundwindow.NotFoundScreen)4 WebWindow (com.haulmont.cuba.web.gui.WebWindow)4 NavigationState (com.haulmont.cuba.gui.navigation.NavigationState)3 EditorScreen (com.haulmont.cuba.gui.screen.EditorScreen)3 MetaClass (com.haulmont.chile.core.model.MetaClass)2 MetaProperty (com.haulmont.chile.core.model.MetaProperty)2 Entity (com.haulmont.cuba.core.entity.Entity)2 WindowInfo (com.haulmont.cuba.gui.config.WindowInfo)2 Nullable (javax.annotation.Nullable)2 Inject (javax.inject.Inject)2 Pair (com.haulmont.bali.datastruct.Pair)1 ParamsMap (com.haulmont.bali.util.ParamsMap)1 com.haulmont.cuba.core.global (com.haulmont.cuba.core.global)1 UrlRouting (com.haulmont.cuba.gui.UrlRouting)1 WindowParams (com.haulmont.cuba.gui.WindowParams)1 WindowConfig (com.haulmont.cuba.gui.config.WindowConfig)1 FrameOwner (com.haulmont.cuba.gui.screen.FrameOwner)1