protected boolean isEditor(WindowInfo windowInfo) { return EditorScreen.class.isAssignableFrom(windowInfo.getControllerClass()); }
@Nonnull @Override public Class<? extends FrameOwner> getControllerClass(WindowInfo windowInfo) { return resolveWindowInfo(windowInfo).getControllerClass(); }
@SuppressWarnings("unchecked") public Class<? extends Screen> asScreen() { Class<? extends FrameOwner> controllerClass = getControllerClass(); if (!Screen.class.isAssignableFrom(controllerClass)) { throw new IllegalStateException("WindowInfo is not Screen - " + this.toString()); } return (Class<? extends Screen>) controllerClass; }
@SuppressWarnings("unchecked") public Class<? extends ScreenFragment> asFragment() { Class<? extends FrameOwner> controllerClass = getControllerClass(); if (!ScreenFragment.class.isAssignableFrom(controllerClass)) { throw new IllegalStateException("WindowInfo is not ScreenFragment - " + this.toString()); } return (Class<? extends ScreenFragment>) controllerClass; }
@Nullable public String getScreenCaption(WindowInfo windowInfo, Locale locale) throws FileNotFoundException { String src = windowInfo.getTemplate(); if (StringUtils.isNotEmpty(src)) { String key = getCaptionCacheKey(src, locale); String caption = captionCache.get(key); if (caption != null) { return caption; } Element window = getWindowElement(src); if (window != null) { return getScreenCaption(window, src); } } Class screenClass = windowInfo.getControllerClass(); return screenClass.getSimpleName(); }
if (windowElement != null) { if (isEntityAvailable(windowElement, windowInfo.getControllerClass(), entityClass, filterScreenType)) { String caption = getScreenCaption(windowElement, src); caption = getDetailedScreenCaption(caption, windowId);
protected Map<String, Object> createEditorScreenOptions(WindowInfo windowInfo, NavigationState requestedState) { Type screenSuperclass = windowInfo.getControllerClass().getGenericSuperclass(); if (!(screenSuperclass instanceof ParameterizedType)) { return Collections.emptyMap(); } String idParam = requestedState.getParams().get("id"); if (StringUtils.isEmpty(idParam)) { return Collections.emptyMap(); } ParameterizedType parameterizedEditor = (ParameterizedType) screenSuperclass; //noinspection unchecked Class<? extends Entity> entityClass = (Class<? extends Entity>) parameterizedEditor.getActualTypeArguments()[0]; MetaClass metaClass = metadata.getClassNN(entityClass); if (!security.isEntityOpPermitted(metaClass, EntityOp.READ)) { revertNavigationState(); throw new AccessDeniedException(PermissionType.ENTITY_OP, EntityOp.READ, entityClass.getSimpleName()); } Class<?> idType = metaClass.getPropertyNN("id").getJavaType(); Object id = UrlIdSerializer.deserializeId(idType, idParam); LoadContext<?> ctx = new LoadContext(metaClass); ctx.setId(id); ctx.setView(View.MINIMAL); Entity entity = dataManager.load(ctx); if (entity == null) { return Collections.emptyMap(); } return ParamsMap.of(WindowParams.ITEM.name(), entity); }
ScreenOptions options = builder.getOptions(); if (LegacyFrame.class.isAssignableFrom(windowInfo.getControllerClass()) && options == FrameOwner.NO_OPTIONS) { HashMap<String, Object> paramsMap = new HashMap<>();
protected Screen createEditor(WindowInfo windowInfo, NavigationState requestedState) { Map<String, Object> screenOptions = createEditorScreenOptions(windowInfo, requestedState); if (screenOptions.isEmpty()) { return null; } Screen editor; OpenMode openMode = getScreenOpenMode(requestedState.getNestedRoute(), windowInfo); if (LegacyFrame.class.isAssignableFrom(windowInfo.getControllerClass())) { editor = getScreens().create(windowInfo.getId(), openMode, new MapScreenOptions(screenOptions)); } else { editor = getScreens().create(windowInfo.getId(), openMode); } Entity entity = (Entity) screenOptions.get(WindowParams.ITEM.name()); //noinspection unchecked ((EditorScreen<Entity>) editor).setEntityToEdit(entity); return editor; }
Class<T> resolvedScreenClass = (Class<T>) windowInfo.getControllerClass();