@Nullable protected CollectionContainer findOptionsContainer(Table.Column columnConf) { String optDcName = columnConf.getXmlDescriptor() != null ? columnConf.getXmlDescriptor().attributeValue("optionsContainer") : null; if (Strings.isNullOrEmpty(optDcName)) { return null; } else { ScreenData screenData = UiControllerUtils.getScreenData(webTable.getFrame().getFrameOwner()); InstanceContainer container = screenData.getContainer(optDcName); if (container instanceof CollectionContainer) { return (CollectionContainer) container; } throw new IllegalStateException( String.format("'%s' is not an instance of CollectionContainer", optDcName)); } }
protected void loadInstanceLoader(ScreenData screenData, Element element, InstanceContainer<Entity> container, @Nullable ScreenData hostScreenData) { InstanceLoader<Entity> loader; String loaderId = element.attributeValue("id"); if (loaderId == null) { loaderId = generateId(); } if (checkProvided(element, hostScreenData)) { //noinspection ConstantConditions loader = hostScreenData.getLoader(loaderId); } else { loader = factory.createInstanceLoader(); loader.setDataContext(screenData.getDataContext()); loader.setContainer(container); loadSoftDeletion(element, loader); loadDynamicAttributes(element, loader); loadQuery(element, loader); loadEntityId(element, loader); } screenData.registerLoader(loaderId, loader); }
protected void loadDataBeforeShow(Screen screen) { LoadDataBeforeShow annotation = screen.getClass().getAnnotation(LoadDataBeforeShow.class); if (annotation != null && annotation.value()) { UiControllerUtils.getScreenData(screen).loadAll(); } }
protected void loadKeyValueCollectionContainer(ScreenData screenData, Element element, @Nullable ScreenData hostScreenData) { String containerId = getRequiredAttr(element, "id"); KeyValueCollectionContainer container; if (checkProvided(element, hostScreenData)) { //noinspection ConstantConditions container = hostScreenData.getContainer(containerId); } else { container = factory.createKeyValueCollectionContainer(); loadProperties(element, container); String idName = element.attributeValue("idName"); if (!Strings.isNullOrEmpty(idName)) container.setIdName(idName); } screenData.registerContainer(containerId, container); Element loaderEl = element.element("loader"); if (loaderEl != null) { loadKeyValueCollectionLoader(screenData, loaderEl, container, hostScreenData); } }
protected void loadKeyValueInstanceLoader(ScreenData screenData, Element element, KeyValueContainer container, ScreenData hostScreenData) { KeyValueInstanceLoader loader; String loaderId = element.attributeValue("id"); if (loaderId == null) { loaderId = generateId(); } if (checkProvided(element, hostScreenData)) { loader = hostScreenData.getLoader(loaderId); } else { loader = factory.createKeyValueInstanceLoader(); loader.setContainer(container); loadQuery(element, loader); loadSoftDeletion(element, loader); String storeName = element.attributeValue("store"); if (!Strings.isNullOrEmpty(storeName)) loader.setStoreName(storeName); } screenData.registerLoader(loaderId, loader); }
hostDataContext = hostScreenData.getDataContext(); screenData.setDataContext(hostDataContext); } else { boolean readOnly = Boolean.valueOf(element.attributeValue("readOnly")); DataContext dataContext = readOnly ? new NoopDataContext() : factory.createDataContext(); screenData.setDataContext(dataContext);
eventTarget = UiControllerUtils.getScreenData(frameOwner).getDataContext(); break; if (screenData.getLoaderIds().contains(target)) { eventTarget = screenData.getLoader(target); if (screenData.getContainerIds().contains(target)) { eventTarget = screenData.getContainer(target);
return data.getContainer(name); return data.getLoader(name); return data.getDataContext();
protected void setupModifiedTracking() { DataContext dataContext = getScreenData().getDataContext(); if (dataContext != null) { dataContext.addChangeListener(this::editedEntityModified); dataContext.addPostCommitListener(this::editedEntityCommitted); } }
targetInstance = UiControllerUtils.getScreenData(frameOwner).getDataContext(); break; targetInstance = UiControllerUtils.getScreenData(frameOwner).getLoader(target); } else { targetInstance = findInstallTarget(target, frame);
FrameOwner frameOwner = context.getFrame().getFrameOwner(); ScreenData screenData = UiControllerUtils.getScreenData(frameOwner); DataLoader dataLoader = screenData.getLoader(dataLoaderId); if (!(dataLoader instanceof CollectionLoader)) { throw new IllegalStateException(String.format("Filter cannot work with %s because it is not a CollectionLoader", dataLoaderId));
protected void loadKeyValueInstanceContainer(ScreenData screenData, Element element, ScreenData hostScreenData) { String containerId = getRequiredAttr(element, "id"); KeyValueContainer container; if (checkProvided(element, hostScreenData)) { container = hostScreenData.getContainer(containerId); } else { container = factory.createKeyValueContainer(); loadProperties(element, container); String idName = element.attributeValue("idName"); if (!Strings.isNullOrEmpty(idName)) container.setIdName(idName); } screenData.registerContainer(containerId, container); Element loaderEl = element.element("loader"); if (loaderEl != null) { loadKeyValueInstanceLoader(screenData, loaderEl, container, hostScreenData); } }
protected boolean isEntityModifiedInParentContext() { boolean result = false; DataContext parentDc = getScreenData().getDataContext().getParent(); while (!result && parentDc != null) { result = isEntityModifiedRecursive(entityToEdit, parentDc, new HashSet<>()); parentDc = parentDc.getParent(); } return result; }
protected void loadKeyValueCollectionLoader(ScreenData screenData, Element element, KeyValueCollectionContainer container, @Nullable ScreenData hostScreenData) { KeyValueCollectionLoader loader; String loaderId = element.attributeValue("id"); if (loaderId == null) { loaderId = generateId(); } if (checkProvided(element, hostScreenData)) { //noinspection ConstantConditions loader = hostScreenData.getLoader(loaderId); } else { loader = factory.createKeyValueCollectionLoader(); loader.setContainer(container); loadQuery(element, loader); loadSoftDeletion(element, loader); loadFirstResult(element, loader); loadMaxResults(element, loader); String storeName = element.attributeValue("store"); if (!Strings.isNullOrEmpty(storeName)) loader.setStoreName(storeName); } screenData.registerLoader(loaderId, loader); }
protected void loadDataContainer(Form resultComponent, Element element) { String containerId = element.attributeValue("dataContainer"); if (!Strings.isNullOrEmpty(containerId)) { FrameOwner frameOwner = context.getFrame().getFrameOwner(); ScreenData screenData = UiControllerUtils.getScreenData(frameOwner); InstanceContainer container = screenData.getContainer(containerId); //noinspection unchecked resultComponent.setValueSourceProvider(new ContainerValueSourceProvider(container)); } }
protected void loadInstanceContainer(ScreenData screenData, Element element, @Nullable ScreenData hostScreenData) { String containerId = getRequiredAttr(element, "id"); InstanceContainer<Entity> container; if (checkProvided(element, hostScreenData)) { //noinspection ConstantConditions container = hostScreenData.getContainer(containerId); } else { container = factory.createInstanceContainer(getEntityClass(element)); loadView(element, getEntityClass(element), container); } screenData.registerContainer(containerId, container); Element loaderEl = element.element("loader"); if (loaderEl != null) { loadInstanceLoader(screenData, loaderEl, container, hostScreenData); } for (Element collectionEl : element.elements()) { loadNestedContainer(screenData, collectionEl, container, hostScreenData); } }
protected void loadCollectionLoader(ScreenData screenData, Element element, CollectionContainer<Entity> container, @Nullable ScreenData hostScreenData) { CollectionLoader<Entity> loader; String loaderId = element.attributeValue("id"); if (loaderId == null) { loaderId = generateId(); } if (checkProvided(element, hostScreenData)) { //noinspection ConstantConditions loader = hostScreenData.getLoader(loaderId); } else { loader = factory.createCollectionLoader(); loader.setDataContext(screenData.getDataContext()); loader.setContainer(container); loadQuery(element, loader); loadSoftDeletion(element, loader); loadDynamicAttributes(element, loader); loadFirstResult(element, loader); loadMaxResults(element, loader); loadCacheable(element, loader); } screenData.registerLoader(loaderId, loader); }
@Override public boolean hasUnsavedChanges() { if (isReadOnly()) { return false; } return isEntityModified() && getScreenData().getDataContext().hasChanges(); }
protected InstanceContainer<T> getEditedEntityContainer() { EditedEntityContainer annotation = getClass().getAnnotation(EditedEntityContainer.class); if (annotation == null || Strings.isNullOrEmpty(annotation.value())) { throw new IllegalStateException( String.format("StandardEditor %s does not declare @EditedEntityContainer", getClass()) ); } String[] parts = annotation.value().split("\\."); ScreenData screenData; if (parts.length == 1) { screenData = getScreenData(); } else { Frame frame = getWindow(); for (int i = 0; i < parts.length - 1; i++) { String part = parts[i]; Component component = frame.getComponent(part); if (!(component instanceof Frame)) { throw new IllegalStateException("Path to EditedEntityContainer must include frames only"); } frame = (Frame) component; } screenData = UiControllerUtils.getScreenData(frame.getFrameOwner()); } return screenData.getContainer(parts[parts.length - 1]); }
protected void loadCollectionContainer(ScreenData screenData, Element element, @Nullable ScreenData hostScreenData) { String containerId = getRequiredAttr(element, "id"); CollectionContainer<Entity> container; if (checkProvided(element, hostScreenData)) { //noinspection ConstantConditions container = hostScreenData.getContainer(containerId); } else { container = factory.createCollectionContainer(getEntityClass(element)); loadView(element, getEntityClass(element), container); } screenData.registerContainer(containerId, container); Element loaderEl = element.element("loader"); if (loaderEl != null) { loadCollectionLoader(screenData, loaderEl, container, hostScreenData); } for (Element collectionEl : element.elements()) { loadNestedContainer(screenData, collectionEl, container, hostScreenData); } }