use of com.haulmont.cuba.gui.screen.Screen in project cuba by cuba-platform.
the class WebScreens method afterScreenRemove.
protected void afterScreenRemove(Screen screen) {
if (screen.getWindow() instanceof RootWindow) {
return;
}
Screen currentScreen = getAnyCurrentScreen();
if (currentScreen != null) {
NavigationState resolvedState = ((WebWindow) currentScreen.getWindow()).getResolvedState();
if (resolvedState != null) {
String currentScreenRoute = resolvedState.asRoute();
urlTools.replaceState(currentScreenRoute, ui);
}
}
}
use of com.haulmont.cuba.gui.screen.Screen in project cuba by cuba-platform.
the class WebScreens method createEditor.
// used only for legacy screens
@Override
public Screen createEditor(WindowInfo windowInfo, Entity item, OpenType openType, @Nullable Map<String, Object> params) {
params = createParametersMap(windowInfo, params);
params.put(WindowParams.ITEM.name(), item);
MapScreenOptions options = new MapScreenOptions(params);
Screen screen = createScreen(windowInfo, openType.getOpenMode(), options);
applyOpenTypeParameters(screen.getWindow(), openType);
EditorScreen editorScreen = (EditorScreen) screen;
// noinspection unchecked
editorScreen.setEntityToEdit(item);
return screen;
}
use of com.haulmont.cuba.gui.screen.Screen in project cuba by cuba-platform.
the class WebScreens method hasUnsavedChanges.
@Override
public boolean hasUnsavedChanges() {
Screen rootScreen = getRootScreenOrNull();
if (rootScreen instanceof ChangeTracker && ((ChangeTracker) rootScreen).hasUnsavedChanges()) {
return true;
}
Predicate<Screen> hasUnsavedChanges = screen -> screen instanceof ChangeTracker && ((ChangeTracker) screen).hasUnsavedChanges();
return getDialogScreensStream().anyMatch(hasUnsavedChanges) || getOpenedWorkAreaScreensStream().anyMatch(hasUnsavedChanges);
}
use of com.haulmont.cuba.gui.screen.Screen in project cuba by cuba-platform.
the class WebScreens method getOpenedWorkAreaScreensStream.
protected Stream<Screen> getOpenedWorkAreaScreensStream() {
Screen rootScreen = getRootScreenOrNull();
if (rootScreen == null) {
return Stream.empty();
}
WebAppWorkArea workArea = getConfiguredWorkAreaOrNull();
if (workArea == null) {
return Stream.empty();
}
return workArea.getOpenedWorkAreaScreensStream();
}
use of com.haulmont.cuba.gui.screen.Screen in project cuba by cuba-platform.
the class ScreenNavigationHandler method isScreenChanged.
protected boolean isScreenChanged(NavigationState requestedState, AppUI ui) {
UrlChangeHandler urlChangeHandler = ui.getUrlChangeHandler();
if (urlChangeHandler.isEmptyState(requestedState) || urlChangeHandler.isRootState(requestedState)) {
return false;
}
Screen currentScreen = urlChangeHandler.findActiveScreenByState(ui.getHistory().getNow());
if (currentScreen == null) {
Iterator<Screen> screensIterator = ui.getScreens().getOpenedScreens().getCurrentBreadcrumbs().iterator();
currentScreen = screensIterator.hasNext() ? screensIterator.next() : null;
if (currentScreen == null) {
return true;
}
}
NavigationState currentState = urlChangeHandler.getResolvedState(currentScreen);
if (currentState == null) {
return true;
}
return !Objects.equals(currentState.getStateMark(), requestedState.getStateMark()) || !Objects.equals(currentState.getNestedRoute(), requestedState.getNestedRoute());
}
Aggregations