@Override public InstanceContainer<E> getInstanceContainer(E item) { if (fieldDatasources == null) { fieldDatasources = new WeakHashMap<>(); } Object fieldDatasource = fieldDatasources.get(item); if (fieldDatasource instanceof InstanceContainer) { //noinspection unchecked return (InstanceContainer<E>) fieldDatasource; } EntityTableItems containerTableItems = (EntityTableItems) getItems(); InstanceContainer<E> instanceContainer = dataComponents.createInstanceContainer( containerTableItems.getEntityMetaClass().getJavaClass()); View view = viewRepository.getView(containerTableItems.getEntityMetaClass(), "_local"); instanceContainer.setView(view); instanceContainer.setItem(item); fieldDatasources.put(item, instanceContainer); return instanceContainer; }
protected InstanceContainer<E> createInstanceContainer(E item) { if (itemContainers == null) { itemContainers = new WeakHashMap<>(); } InstanceContainer<E> container = itemContainers.get(item); if (container != null) { return container; } EntityDataGridItems<E> items = getEntityDataGridItemsNN(); DataComponents factory = beanLocator.get(DataComponents.class); ViewRepository viewRepository = beanLocator.get(ViewRepository.NAME); MetaClass metaClass = items.getEntityMetaClass(); InstanceContainer<E> instanceContainer = factory.createInstanceContainer(metaClass.getJavaClass()); instanceContainer.setView(viewRepository.getView(metaClass, View.LOCAL)); instanceContainer.setItem(item); itemContainers.put(item, instanceContainer); return instanceContainer; }
@Override public void load() { if (container == null) throw new IllegalStateException("container is null"); E entity; if (delegate == null) { if (!needLoad()) return; LoadContext<E> loadContext = createLoadContext(); entity = getDataManager().load(loadContext); if (entity == null) { throw new EntityAccessException(container.getEntityMetaClass(), entityId); } } else { entity = delegate.apply(createLoadContext()); } if (dataContext != null) { entity = dataContext.merge(entity); } container.setItem(entity); }
/** * Method invoked when clicking the Cancel button, discards changes and disables controls for editing. */ public void discardChanges() { releaseLock(); getScreenData().getDataContext().evict(getEditContainer().getItem()); getEditContainer().setItem(null); T selectedItem = getBrowseContainer().getItemOrNull(); if (selectedItem != null) { View view = getEditContainer().getView(); boolean loadDynamicAttributes = getEditLoader().isLoadDynamicAttributes(); T reloadedItem = getBeanLocator().get(DataManager.class) .reload(selectedItem, view, null, loadDynamicAttributes); getBrowseContainer().setItem(reloadedItem); } disableEditControls(); }
/** * Adds a listener that reloads the selected record and sets it to editCt. */ protected void initBrowseItemChangeListener() { getBrowseContainer().addItemChangeListener(e -> { if (e.getItem() != null) { InstanceLoader<T> editLoader = getEditLoader(); DynamicAttributesGuiTools tools = getBeanLocator().get(DynamicAttributesGuiTools.NAME); String screenId = getScreenContext().getWindowInfo().getId(); if (tools.screenContainsDynamicAttributes(getEditContainer().getView(), screenId)) { editLoader.setLoadDynamicAttributes(true); } editLoader.setEntityId(e.getItem().getId()); editLoader.load(); } else { if (!editing) { getEditContainer().setItem(null); } } }); }
container.setItem(mergedEntity); } else { InstanceLoader loader = getEditedEntityLoader();
getEditContainer().setItem(trackedEntity); refreshOptionsForLookupFields(); enableEditControls(true);