protected String buildScreenRoute(Screen screen) { List<Screen> screens = new ArrayList<>(ui.getScreens().getOpenedScreens().getCurrentBreadcrumbs()); if (screens.isEmpty() || screens.get(0) != screen) { log.debug("Current breadcrumbs doesn't contain the given screen '{}'", screen.getId()); return ""; } Collections.reverse(screens); StringBuilder state = new StringBuilder(); String prevSubRoute = null; for (int i = 0; i < screens.size() && i < MAX_NESTING; i++) { String subRoute = buildSubRoute(prevSubRoute, screens.get(i)); if (StringUtils.isNotEmpty(state) && StringUtils.isNotEmpty(subRoute)) { state.append('/'); } state.append(subRoute); prevSubRoute = subRoute; } return state.toString(); }
protected void checkOpened(Screen screen) { com.vaadin.ui.Component uiComponent = screen.getWindow() .unwrapComposition(com.vaadin.ui.Component.class); if (!uiComponent.isAttached()) { throw new IllegalStateException("Screen is not opened " + screen.getId()); } }
protected void checkNotYetOpened(Screen screen) { com.vaadin.ui.Component uiComponent = screen.getWindow() .unwrapComposition(com.vaadin.ui.Component.class); if (uiComponent.isAttached()) { throw new IllegalStateException("Screen is already opened " + screen.getId()); } }
protected String getWindowId(Context context) { Frame frame = context.getFrame(); Screen screen = UiControllerUtils.getScreen(frame.getFrameOwner()); return screen.getId(); }
protected boolean checkConditions(Screen screen, Map<String, String> urlParams) { if (UrlHandlingMode.URL_ROUTES != webConfig.getUrlHandlingMode()) { log.debug("UrlRouting is disabled for '{}' URL handling mode", webConfig.getUrlHandlingMode()); return false; } checkNotNullArgument(screen, "Screen cannot be null"); checkNotNullArgument(urlParams, "Parameters cannot be null"); if (notAttachedToUi(screen)) { log.info("Ignore changing of URL for not attached screen '{}'", screen.getId()); return false; } return true; }
String url = String.format("%s/open?screen=%s", globalConfig.getWebAppUrl(), frameOwner.getId());
protected Map<String, String> buildParams(Screen screen, Map<String, String> urlParams) { String route = getRoute(screen); if (StringUtils.isEmpty(route) && (isEditor(screen) || MapUtils.isNotEmpty(urlParams))) { log.debug("There's no route for screen \"{}\". URL params will be ignored", screen.getId()); return Collections.emptyMap(); } if (omitParams(screen)) { return Collections.emptyMap(); } Map<String, String> params = new LinkedHashMap<>(); if (isEditor(screen)) { Object entityId = ((EditorScreen) screen).getEditedEntity().getId(); if (entityId != null) { String serializedId = UrlIdSerializer.serializeId(entityId); if (!"".equals(serializedId)) { params.put("id", serializedId); } } } params.putAll(urlParams != null ? urlParams : Collections.emptyMap()); return params; }
screen.getId(), screen.getClass()));
checkNotYetOpened(screen); StopWatch uiPermissionsWatch = createStopWatch(ScreenLifeCycle.UI_PERMISSIONS, screen.getId()); StopWatch beforeShowWatch = createStopWatch(ScreenLifeCycle.BEFORE_SHOW, screen.getId()); userActionsLog.trace("Screen {} {} opened", screen.getId(), screen.getClass()); StopWatch afterShowWatch = createStopWatch(ScreenLifeCycle.AFTER_SHOW, screen.getId());
protected void openLookup(FrameOwner screen) { ScreenContext screenContext = UiControllerUtils.getScreenContext(screen); WindowManager wm = (WindowManager) screenContext.getScreens(); WindowInfo windowInfo = AppBeans.get(WindowConfig.class).getWindowInfo("report$Report.run"); Screen hostScreen; if (screen instanceof Screen) { hostScreen = (Screen) screen; } else { hostScreen = UiControllerUtils.getHostScreen((ScreenFragment) screen); } wm.openLookup(windowInfo, items -> { if (items != null && items.size() > 0) { Report report = (Report) items.iterator().next(); if (screen instanceof LegacyFrame) { DataSupplier dataSupplier = ((LegacyFrame) screen).getDsContext().getDataSupplier(); report = dataSupplier.reload(report, "report.edit"); } else { DataManager dataManager = AppBeans.get(DataManager.NAME); report = dataManager.reload(report, "report.edit"); } if (report.getInputParameters() != null && report.getInputParameters().size() > 0 || reportGuiManager.inputParametersRequiredByTemplates(report)) { openReportParamsDialog(report, screen); } else { reportGuiManager.printReport(report, Collections.emptyMap(), screen); } } }, OpenType.DIALOG, ParamsMap.of(ReportRun.SCREEN_PARAMETER, hostScreen.getId())); }
protected void afterShowWindow(Screen screen) { WindowContext windowContext = screen.getWindow().getContext(); if (!WindowParams.DISABLE_APPLY_SETTINGS.getBool(windowContext)) { applySettings(screen, getSettingsImpl(screen.getId())); } if (screen instanceof LegacyFrame) { if (!WindowParams.DISABLE_RESUME_SUSPENDED.getBool(windowContext)) { DsContext dsContext = ((LegacyFrame) screen).getDsContext(); if (dsContext != null) { ((DsContextImplementation) dsContext).resumeSuspended(); } } } if (screen instanceof AbstractWindow) { AbstractWindow abstractWindow = (AbstractWindow) screen; if (abstractWindow.isAttributeAccessControlEnabled()) { attributeAccessSupport.applyAttributeAccess(abstractWindow, false); } } else { DisableAttributeAccessControl annotation = screen.getClass().getAnnotation(DisableAttributeAccessControl.class); if (annotation == null || !annotation.value()) { attributeAccessSupport.applyAttributeAccess(screen, false); } } }
protected void openRunReportScreen(Screen screen, Object selectedValue, MetaClass inputValueMetaClass, @Nullable String outputFileName) { User user = AppBeans.get(UserSessionSource.class).getUserSession().getUser(); List<Report> reports = reportGuiManager.getAvailableReports(screen.getId(), user, inputValueMetaClass);
public void saveScreenHistory(Screen frameOwner) { WindowContext windowContext = frameOwner.getWindow().getContext(); if (security.isEntityOpPermitted(ScreenHistoryEntity.class, EntityOp.CREATE) && (frameOwner instanceof EditorScreen) && windowContext.getLaunchMode() != OpenMode.DIALOG && (screenIds.contains(frameOwner.getId()))) { String caption = frameOwner.getWindow().getCaption(); UUID entityId = null; Entity entity = ((EditorScreen) frameOwner).getEditedEntity(); if (entity != null) { if (PersistenceHelper.isNew(entity)) { return; } if (StringUtils.isBlank(caption)) { caption = messages.getTools().getEntityCaption(entity.getMetaClass()) + " " + metadata.getTools().getInstanceName(entity); } entityId = (UUID) entity.getId(); } ScreenHistoryEntity screenHistoryEntity = metadata.create(ScreenHistoryEntity.class); screenHistoryEntity.setCaption(StringUtils.abbreviate(caption, 255)); screenHistoryEntity.setUrl(makeLink(frameOwner)); screenHistoryEntity.setEntityId(entityId); addAdditionalFields(screenHistoryEntity, entity); CommitContext cc = new CommitContext(Collections.singleton(screenHistoryEntity)); dataManager.commit(cc); } }
screen.getId(), screen.getClass()));
StopWatch companionStopWatch = createStopWatch(ScreenLifeCycle.COMPANION, controller.getId());
windowImpl.setId(controller.getId());