Search in sources :

Example 26 with Range

use of io.jmix.core.metamodel.model.Range in project jmix by jmix-framework.

the class AbstractComponentGenerationStrategy method createCollectionField.

@SuppressWarnings({ "unchecked", "rawtypes" })
protected Component createCollectionField(ComponentGenerationContext context, MetaPropertyPath mpp) {
    ValuesPicker valuesPicker = uiComponents.create(ValuesPicker.class);
    setValueSource(valuesPicker, context);
    ValuesSelectAction selectAction = actions.create(ValuesSelectAction.class);
    Range range = mpp.getRange();
    if (range.isClass()) {
        selectAction.setEntityName(range.asClass().getName());
    } else if (range.isDatatype()) {
        selectAction.setJavaClass(range.asDatatype().getJavaClass());
    } else if (range.isEnum()) {
        selectAction.setEnumClass(range.asEnumeration().getJavaClass());
    }
    valuesPicker.addAction(selectAction);
    ValueClearAction valueClearAction = actions.create(ValueClearAction.class);
    valuesPicker.addAction(valueClearAction);
    return valuesPicker;
}
Also used : ValuesSelectAction(io.jmix.ui.action.valuespicker.ValuesSelectAction) ValueClearAction(io.jmix.ui.action.valuepicker.ValueClearAction) Range(io.jmix.core.metamodel.model.Range)

Example 27 with Range

use of io.jmix.core.metamodel.model.Range in project jmix by jmix-framework.

the class AbstractComponentGenerationStrategy method createDatatypeField.

@Nullable
protected Component createDatatypeField(ComponentGenerationContext context, MetaPropertyPath mpp) {
    Range mppRange = mpp.getRange();
    Element xmlDescriptor = context.getXmlDescriptor();
    Class type = mppRange.asDatatype().getJavaClass();
    if (xmlDescriptor != null && "true".equalsIgnoreCase(xmlDescriptor.attributeValue("link"))) {
        return createDatatypeLinkField(context);
    }
    boolean hasMaskAttribute = xmlDescriptor != null && xmlDescriptor.attribute("mask") != null;
    if (type.equals(String.class)) {
        return hasMaskAttribute ? createMaskedField(context) : createStringField(context, mpp);
    } else if (type.equals(UUID.class)) {
        return createUuidField(context);
    } else if (type.equals(Boolean.class)) {
        return createBooleanField(context);
    } else if (type.equals(java.sql.Date.class) || type.equals(Date.class) || type.equals(LocalDate.class) || type.equals(LocalDateTime.class) || type.equals(OffsetDateTime.class)) {
        return createDateField(context);
    } else if (type.equals(Time.class) || type.equals(LocalTime.class) || type.equals(OffsetTime.class)) {
        return createTimeField(context);
    } else if (Number.class.isAssignableFrom(type)) {
        if (hasMaskAttribute) {
            return createMaskedField(context);
        }
        Field currencyField = createCurrencyField(context, mpp);
        if (currencyField != null) {
            return currencyField;
        }
        return createNumberField(context);
    } else if (type.equals(byte[].class)) {
        return createFileUploadField(context);
    } else if (type.equals(FileRef.class)) {
        return createFileStorageUploadField(context);
    }
    return null;
}
Also used : FileRef(io.jmix.core.FileRef) Element(org.dom4j.Element) MetaClass(io.jmix.core.metamodel.model.MetaClass) Range(io.jmix.core.metamodel.model.Range) UUID(java.util.UUID) Date(java.util.Date) Nullable(javax.annotation.Nullable)

Aggregations

Range (io.jmix.core.metamodel.model.Range)27 MetaClass (io.jmix.core.metamodel.model.MetaClass)14 MetaProperty (io.jmix.core.metamodel.model.MetaProperty)14 MetaPropertyPath (io.jmix.core.metamodel.model.MetaPropertyPath)5 Nullable (javax.annotation.Nullable)5 MetadataTools (io.jmix.core.MetadataTools)3 Datatype (io.jmix.core.metamodel.datatype.Datatype)3 ParseException (java.text.ParseException)3 Entity (io.jmix.core.Entity)2 UiEntityAttributeContext (io.jmix.ui.accesscontext.UiEntityAttributeContext)2 UiEntityContext (io.jmix.ui.accesscontext.UiEntityContext)2 ValueSource (io.jmix.ui.component.data.ValueSource)2 Aggregation (io.jmix.ui.component.data.aggregation.Aggregation)2 EntityValueSource (io.jmix.ui.component.data.meta.EntityValueSource)2 ContainerValueSource (io.jmix.ui.component.data.value.ContainerValueSource)2 Collection (java.util.Collection)2 Date (java.util.Date)2 HashMap (java.util.HashMap)2 Map (java.util.Map)2 Element (org.dom4j.Element)2