@Override public MetaClass getEntityMetaClass() { return container.getEntityMetaClass(); }
@Override public int size() { return container.getItems().size(); }
public ContainerDataGridItems(CollectionContainer<E> container) { this.container = container; this.container.addItemChangeListener(this::containerItemChanged); this.container.addCollectionChangeListener(this::containerCollectionChanged); this.container.addItemPropertyChangeListener(this::containerItemPropertyChanged); }
public ContainerCalendarEventProvider(CollectionContainer<E> container) { this.container = container; collectionChangeListener = this.container.addCollectionChangeListener(this::onCollectionChanged); propertyChangeListener = this.container.addItemPropertyChangeListener(this::onItemPropertyChanged); }
@Override public boolean isLastId(Object itemId) { int index = container.getItemIndex(itemId); return index == container.getItems().size() - 1; }
protected View resolveView() { View view = this.view; if (view == null && viewName != null) { view = getViewRepository().getView(container.getEntityMetaClass(), viewName); } if (view == null) { view = container.getView(); } return view; }
@SuppressWarnings("unchecked") protected void sortInMemory(Sort sort) { if (sort.getOrders().isEmpty()) { return; } List list = new ArrayList(container.getItems()); list.sort(createComparator(sort, container.getEntityMetaClass())); setItemsToContainer(list); }
@Override public Stream<E> getChildren(E item) { if (item == null) { // root items return container.getItems().stream() .filter(it -> { E parentItem = it.getValue(hierarchyProperty); return parentItem == null || (container.getItemOrNull(parentItem.getId()) == null); }); } else { return container.getItems().stream() .filter(it -> { E parentItem = it.getValue(hierarchyProperty); return parentItem != null && parentItem.equals(item); }); } }
@Override public void setSelectedItem(E item) { if (item == null) { container.setItem(null); } else { if (container.getItems().size() > 0) { // UI components (e.g. LookupField) can have value that does not exist in container if (container.containsItem(item)) { container.setItem(item); } } else { this.deferredSelectedItem = item; } } }
@Nullable @Override public E getSelectedItem() { return container.getItemOrNull(); }
Class<?> dcClass = extendedEntities.getEffectiveClass(collectionDc.getEntityMetaClass()); if (!collectionDc.containsItem(item.getId())) { collectionDc.getMutableItems().addAll(mergedItems);
@SuppressWarnings("unchecked") protected <E extends Entity> void excludeItems(RemoveBuilder<E> builder, List<E> selectedItems) { CollectionContainer<E> container = getCollectionContainer(builder); if (!(container instanceof Nested)) { throw new IllegalArgumentException("Exclude action supports only Nested containers"); } InstanceContainer masterDc = ((Nested) container).getMaster(); String property = ((Nested) container).getProperty(); Entity masterItem = masterDc.getItem(); MetaProperty metaProperty = masterItem.getMetaClass().getPropertyNN(property); MetaProperty inverseMetaProperty = metaProperty.getInverse(); if (inverseMetaProperty != null && !inverseMetaProperty.getRange().getCardinality().isMany()) { Class inversePropClass = extendedEntities.getEffectiveClass(inverseMetaProperty.getDomain()); Class dcClass = extendedEntities.getEffectiveClass(container.getEntityMetaClass()); if (inversePropClass.isAssignableFrom(dcClass)) { // update reference for One-To-Many for (Entity item : selectedItems) { item.setValue(inverseMetaProperty.getName(), null); } } } container.getMutableItems().removeAll(selectedItems); focusListComponent(builder); }
/** * Method invoked when clicking on the Ok button after editing an existing or creating a new record. */ public void saveChanges() { if (!editing) return; ValidationErrors validationErrors = validateEditorForm(); if (!validationErrors.isEmpty()) { ScreenValidation screenValidation = getBeanLocator().get(ScreenValidation.class); screenValidation.showValidationErrors(this, validationErrors); return; } getScreenData().getDataContext().commit(); T editedItem = getEditContainer().getItem(); if (creating) { getBrowseContainer().getMutableItems().add(0, editedItem); } else { getBrowseContainer().replaceItem(editedItem); } getTable().setSelected(editedItem); releaseLock(); disableEditControls(); }
} else if (getCollectionContainerFromOwner() != null) { ownerCollectionCont = ((ContainerDataUnit) owner.getItems()).getContainer(); ownerCollectionCont.mute(); ownerCollectionCont.unmute(); } else if (getCollectionContainerFromOwner() != null) { getCollectionContainerFromOwner().mute(); getCollectionContainerFromOwner().replaceItem(item); setValueSilently(item.getValueEx(getMetaPropertyPath())); getCollectionContainerFromOwner().unmute();
/** * 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(); }
@SuppressWarnings("unchecked") public WeakCollectionChangeListener(CollectionContainer container, Consumer<CollectionContainer.CollectionChangeEvent<E>> collectionChangeListener) { reference = new WeakReference(collectionChangeListener); subscription = container.addCollectionChangeListener(this); }
@Override public void updateItem(E item) { container.replaceItem(item); }
/** * 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); } } }); }
protected Collection<MetaPropertyPath> getAutowiredProperties(EntityTableItems<E> entityTableSource) { if (entityTableSource instanceof ContainerDataUnit) { CollectionContainer container = ((ContainerDataUnit) entityTableSource).getContainer(); return container.getView() != null ? // if a view is specified - use view properties metadataTools.getViewPropertyPaths(container.getView(), container.getEntityMetaClass()) : // otherwise use all properties from meta-class metadataTools.getPropertyPaths(container.getEntityMetaClass()); } if (entityTableSource instanceof DatasourceDataUnit) { CollectionDatasource datasource = ((DatasourceDataUnit) entityTableSource).getDatasource(); return datasource.getView() != null ? // if a view is specified - use view properties metadataTools.getViewPropertyPaths(datasource.getView(), datasource.getMetaClass()) : // otherwise use all properties from meta-class metadataTools.getPropertyPaths(datasource.getMetaClass()); } return Collections.emptyList(); }
@Override public Object prevItemId(Object itemId) { int index = container.getItemIndex(itemId); return index <= 0 ? null : container.getItems().get(index - 1).getId(); }