Search in sources :

Example 36 with Datasource

use of com.haulmont.cuba.gui.data.Datasource in project cuba by cuba-platform.

the class DsContextTest method createDetailDsContext.

private void createDetailDsContext() {
    detailDsContext = new DsContextImpl(dataService);
    DsBuilder detailDsBuilder = new DsBuilder(detailDsContext);
    detailDsBuilder.reset().setId("detailDs").setMetaClass(metadataSession.getClass(TestDetailEntity.class)).setViewName("_local");
    detailDs = detailDsBuilder.buildDatasource();
    detailDsBuilder.reset().setId("embeddedDs").setMetaClass(metadataSession.getClass(TestEmbeddableEntity.class)).setMaster(detailDs).setProperty("embeddable");
    embeddableDs = detailDsBuilder.buildDatasource();
    detailDsBuilder.reset().setId("partsDs").setMetaClass(metadataSession.getClass(TestPartEntity.class)).setMaster(detailDs).setProperty("parts");
    partsDs = detailDsBuilder.buildCollectionDatasource();
    for (Datasource ds : detailDsContext.getAll()) {
        ((DatasourceImplementation) ds).initialized();
    }
}
Also used : Datasource(com.haulmont.cuba.gui.data.Datasource) CollectionDatasource(com.haulmont.cuba.gui.data.CollectionDatasource) TestEmbeddableEntity(com.haulmont.cuba.gui.data.impl.testmodel1.TestEmbeddableEntity) TestPartEntity(com.haulmont.cuba.gui.data.impl.testmodel1.TestPartEntity) DsBuilder(com.haulmont.cuba.gui.data.DsBuilder)

Example 37 with Datasource

use of com.haulmont.cuba.gui.data.Datasource in project cuba by cuba-platform.

the class SendingMessageBrowser method init.

@Override
public void init(Map<String, Object> params) {
    fg.addCustomField(CONTENT_TEXT, new FieldGroup.CustomFieldGenerator() {

        @Override
        public Component generateField(Datasource datasource, String propertyId) {
            VBoxLayout contentArea = factory.createComponent(VBoxLayout.class);
            contentArea.setSpacing(true);
            contentTextArea = factory.createComponent(TextArea.class);
            contentTextArea.setWidth("100%");
            contentTextArea.setEditable(false);
            contentTextArea.setHeight(themeConstants.get("cuba.gui.SendingMessageBrowser.contentTextArea.height"));
            showAsHtmlButton = factory.createComponent(Button.class);
            showAsHtmlButton.setAction(new AbstractAction("") {

                @Override
                public void actionPerform(Component component) {
                    String textAreaValue = contentTextArea.getValue();
                    if (textAreaValue != null) {
                        ByteArrayDataProvider dataProvider = new ByteArrayDataProvider(textAreaValue.getBytes(StandardCharsets.UTF_8));
                        exportDisplay.show(dataProvider, "email-preview.html", ExportFormat.HTML);
                    }
                }
            });
            showAsHtmlButton.setEnabled(false);
            showAsHtmlButton.setCaption(messages.getMessage(getClass(), "sendingMessage.showAsHtml"));
            contentArea.add(contentTextArea);
            contentArea.add(showAsHtmlButton);
            return contentArea;
        }
    });
    fg.setEditable(CONTENT_TEXT, false);
    sendingMessageDs.addItemChangeListener(e -> selectedItemChanged(e.getItem()));
}
Also used : Datasource(com.haulmont.cuba.gui.data.Datasource) CollectionDatasource(com.haulmont.cuba.gui.data.CollectionDatasource) ByteArrayDataProvider(com.haulmont.cuba.gui.export.ByteArrayDataProvider)

Example 38 with Datasource

use of com.haulmont.cuba.gui.data.Datasource in project cuba by cuba-platform.

the class AttributeAccessSupport method visitComponent.

protected void visitComponent(DatasourceComponent component, boolean reset) {
    Datasource datasource = component.getDatasource();
    MetaPropertyPath propertyPath = component.getMetaPropertyPath();
    if (datasource == null || datasource.getState() != Datasource.State.VALID || propertyPath == null || datasource.getItem() == null) {
        return;
    }
    if (reset) {
        component.setVisible(security.isEntityAttrReadPermitted(datasource.getMetaClass(), propertyPath.toString()));
        component.setEditable(security.isEntityAttrUpdatePermitted(datasource.getMetaClass(), propertyPath.toString()));
        if (component instanceof Field) {
            ((Field) component).setRequired(propertyPath.getMetaProperty().isMandatory());
        }
    }
    ComponentState componentState = calculateComponentState(datasource.getItem(), propertyPath);
    if (componentState.hidden) {
        component.setVisible(false);
    }
    if (componentState.readOnly) {
        component.setEditable(false);
    }
    if (component instanceof Field) {
        if (componentState.required && component.isEditable() && component.isVisible()) {
            ((Field) component).setRequired(true);
        }
    }
}
Also used : Datasource(com.haulmont.cuba.gui.data.Datasource) Field(com.haulmont.cuba.gui.components.Field) MetaPropertyPath(com.haulmont.chile.core.model.MetaPropertyPath)

Example 39 with Datasource

use of com.haulmont.cuba.gui.data.Datasource in project cuba by cuba-platform.

the class AttributeEditor method initFieldGroup.

protected void initFieldGroup() {
    attributeFieldGroup.addCustomField("defaultBoolean", new FieldGroup.CustomFieldGenerator() {

        @Override
        public Component generateField(Datasource datasource, String propertyId) {
            LookupField lookupField = factory.createComponent(LookupField.class);
            Map<String, Object> options = new TreeMap<>();
            options.put(datatypeFormatter.formatBoolean(true), true);
            options.put(datatypeFormatter.formatBoolean(false), false);
            lookupField.setOptionsMap(options);
            lookupField.setDatasource(attributeDs, "defaultBoolean");
            return lookupField;
        }
    });
    attributeFieldGroup.addCustomField("dataType", new FieldGroup.CustomFieldGenerator() {

        @Override
        public Component generateField(Datasource datasource, String propertyId) {
            dataTypeField = factory.createComponent(LookupField.class);
            Map<String, Object> options = new TreeMap<>();
            PropertyType[] types = PropertyType.values();
            for (PropertyType propertyType : types) {
                options.put(getMessage(propertyType.toString()), propertyType);
            }
            dataTypeField.setWidth(fieldWidth);
            dataTypeField.setNewOptionAllowed(false);
            dataTypeField.setRequired(true);
            dataTypeField.setRequiredMessage(getMessage("dataTypeRequired"));
            dataTypeField.setOptionsMap(options);
            dataTypeField.setCaption(getMessage("dataType"));
            dataTypeField.setFrame(frame);
            dataTypeField.setDatasource(datasource, propertyId);
            return dataTypeField;
        }
    });
    attributeFieldGroup.addCustomField("screen", new FieldGroup.CustomFieldGenerator() {

        @Override
        public Component generateField(Datasource datasource, String propertyId) {
            screenField = factory.createComponent(LookupField.class);
            screenField.setId("screenField");
            screenField.setCaption(getMessage("screen"));
            screenField.setWidth(fieldWidth);
            screenField.setRequired(true);
            screenField.setRequiredMessage(getMessage("entityScreenRequired"));
            screenField.setFrame(frame);
            screenField.setDatasource(datasource, propertyId);
            return screenField;
        }
    });
    attributeFieldGroup.addCustomField("entityClass", new FieldGroup.CustomFieldGenerator() {

        @Override
        public Component generateField(Datasource datasource, String propertyId) {
            entityTypeField = factory.createComponent(LookupField.class);
            entityTypeField.setId("entityClass");
            entityTypeField.setCaption(getMessage("entityType"));
            entityTypeField.setRequired(true);
            entityTypeField.setRequiredMessage(getMessage("entityTypeRequired"));
            entityTypeField.setWidth(fieldWidth);
            entityTypeField.setFrame(frame);
            Map<String, Object> options = new TreeMap<>();
            MetaClass entityType = null;
            for (MetaClass metaClass : metadataTools.getAllPersistentMetaClasses()) {
                if (!metadataTools.isSystemLevel(metaClass)) {
                    if (metadata.getTools().hasCompositePrimaryKey(metaClass) && !HasUuid.class.isAssignableFrom(metaClass.getJavaClass())) {
                        continue;
                    }
                    options.put(messageTools.getDetailedEntityCaption(metaClass), metaClass.getJavaClass().getName());
                    if (attribute != null && metaClass.getJavaClass().getName().equals(attribute.getEntityClass())) {
                        entityType = metaClass;
                    }
                }
            }
            entityTypeField.setOptionsMap(options);
            entityTypeField.setValue(entityType);
            entityTypeField.setDatasource(datasource, propertyId);
            return entityTypeField;
        }
    });
    attributeFieldGroup.addCustomField("defaultEntityId", (datasource, propertyId) -> {
        defaultEntityField = factory.createComponent(PickerField.class);
        defaultEntityField.setCaption(messages.getMessage(CategoryAttribute.class, "CategoryAttribute.defaultEntityId"));
        defaultEntityField.addValueChangeListener(e -> {
            Entity entity = (Entity) e.getValue();
            if (entity != null) {
                attribute.setObjectDefaultEntityId(referenceToEntitySupport.getReferenceId(entity));
            } else {
                attribute.setObjectDefaultEntityId(null);
            }
            ((AbstractDatasource) attributeDs).modified(attribute);
        });
        entityLookupAction = defaultEntityField.addLookupAction();
        defaultEntityField.addClearAction();
        return defaultEntityField;
    });
    attributeFieldGroup.addCustomField("enumeration", (datasource, propertyId) -> {
        enumerationListEditor = factory.createComponent(ListEditor.class);
        enumerationListEditor.setWidth("100%");
        enumerationListEditor.setItemType(ListEditor.ItemType.STRING);
        enumerationListEditor.setRequired(true);
        enumerationListEditor.setRequiredMessage(getMessage("enumRequired"));
        enumerationListEditor.addValueChangeListener(e -> {
            List<String> value = (List<String>) e.getValue();
            attribute.setEnumeration(Joiner.on(",").join(value));
        });
        if (localizedFrame != null) {
            enumerationListEditor.setEditorWindowId("localizedEnumerationWindow");
            enumerationListEditor.setEditorParamsSupplier(() -> ParamsMap.of("enumerationLocales", attribute.getEnumerationLocales()));
            enumerationListEditor.addEditorCloseListener(closeEvent -> {
                if (closeEvent.getActionId().equals(COMMIT_ACTION_ID)) {
                    LocalizedEnumerationWindow enumerationWindow = (LocalizedEnumerationWindow) closeEvent.getWindow();
                    attribute.setEnumerationLocales(enumerationWindow.getLocalizedValues());
                }
            });
        }
        return enumerationListEditor;
    });
    attributeFieldGroup.addCustomField("whereClause", (datasource, propertyId) -> {
        whereField = factory.createComponent(SourceCodeEditor.class);
        whereField.setDatasource(attributeDs, "whereClause");
        whereField.setWidth("100%");
        whereField.setHeight(themeConstants.get("cuba.gui.customConditionFrame.whereField.height"));
        whereField.setSuggester((source, text, cursorPosition) -> requestHint(whereField, text, cursorPosition));
        whereField.setHighlightActiveLine(false);
        whereField.setShowGutter(false);
        return whereField;
    });
    attributeFieldGroup.addCustomField("joinClause", (datasource, propertyId) -> {
        joinField = factory.createComponent(SourceCodeEditor.class);
        joinField.setDatasource(attributeDs, "joinClause");
        joinField.setWidth("100%");
        joinField.setHeight(themeConstants.get("cuba.gui.customConditionFrame.joinField.height"));
        joinField.setSuggester((source, text, cursorPosition) -> requestHint(joinField, text, cursorPosition));
        joinField.setHighlightActiveLine(false);
        joinField.setShowGutter(false);
        return joinField;
    });
    attributeFieldGroup.addCustomField("constraintWizard", (datasource, propertyId) -> {
        HBoxLayout hbox = factory.createComponent(HBoxLayout.class);
        hbox.setWidth("100%");
        LinkButton linkButton = factory.createComponent(LinkButton.class);
        linkButton.setAction(new BaseAction("constraintWizard").withHandler(event -> openConstraintWizard()));
        linkButton.setCaption(getMessage("constraintWizard"));
        linkButton.setAlignment(Alignment.MIDDLE_LEFT);
        hbox.add(linkButton);
        return hbox;
    });
    attributeDs.addItemPropertyChangeListener(e -> {
        String property = e.getProperty();
        CategoryAttribute attribute = getItem();
        if ("dataType".equalsIgnoreCase(property) || "lookup".equalsIgnoreCase(property) || "defaultDateIsCurrent".equalsIgnoreCase(property) || "entityClass".equalsIgnoreCase(property)) {
            setupVisibility();
        }
        if ("name".equalsIgnoreCase(property)) {
            fillAttributeCode();
        }
        if ("screen".equalsIgnoreCase(property) || "joinClause".equals(property) || "whereClause".equals(property)) {
            dynamicAttributesGuiTools.initEntityPickerField(defaultEntityField, attribute);
        }
    });
}
Also used : ArrayListMultimap(com.google.common.collect.ArrayListMultimap) StrBuilder(org.apache.commons.lang.text.StrBuilder) StringUtils(org.apache.commons.lang.StringUtils) java.util(java.util) WindowManager(com.haulmont.cuba.gui.WindowManager) Datasource(com.haulmont.cuba.gui.data.Datasource) DynamicAttributesGuiTools(com.haulmont.cuba.gui.dynamicattributes.DynamicAttributesGuiTools) Dom4j(com.haulmont.bali.util.Dom4j) ParamsMap(com.haulmont.bali.util.ParamsMap) Multimap(com.google.common.collect.Multimap) MetaClass(com.haulmont.chile.core.model.MetaClass) FakeFilterSupport(com.haulmont.cuba.gui.components.filter.FakeFilterSupport) com.haulmont.cuba.core.global(com.haulmont.cuba.core.global) AbstractDatasource(com.haulmont.cuba.gui.data.impl.AbstractDatasource) DatasourceImplementation(com.haulmont.cuba.gui.data.impl.DatasourceImplementation) Inject(javax.inject.Inject) Strings(com.google.common.base.Strings) FilterEditor(com.haulmont.cuba.gui.components.filter.edit.FilterEditor) Lists(com.google.common.collect.Lists) FilterParser(com.haulmont.cuba.gui.components.filter.FilterParser) HasUuid(com.haulmont.cuba.core.entity.HasUuid) JpqlSuggestionFactory(com.haulmont.cuba.gui.components.autocomplete.JpqlSuggestionFactory) ComponentsFactory(com.haulmont.cuba.gui.xml.layout.ComponentsFactory) CategoryAttribute(com.haulmont.cuba.core.entity.CategoryAttribute) BaseAction(com.haulmont.cuba.gui.components.actions.BaseAction) Splitter(com.google.common.base.Splitter) com.haulmont.cuba.gui.components(com.haulmont.cuba.gui.components) ScreensHelper(com.haulmont.cuba.gui.ScreensHelper) FilterEntity(com.haulmont.cuba.security.entity.FilterEntity) Sets(com.google.common.collect.Sets) RemoveAction(com.haulmont.cuba.gui.components.actions.RemoveAction) String.format(java.lang.String.format) ConditionsTree(com.haulmont.cuba.gui.components.filter.ConditionsTree) Suggestion(com.haulmont.cuba.gui.components.autocomplete.Suggestion) ThemeConstants(com.haulmont.cuba.gui.theme.ThemeConstants) Param(com.haulmont.cuba.gui.components.filter.Param) SecurityJpqlGenerator(com.haulmont.cuba.core.global.filter.SecurityJpqlGenerator) Element(org.dom4j.Element) PropertyType(com.haulmont.cuba.core.app.dynamicattributes.PropertyType) CollectionDatasource(com.haulmont.cuba.gui.data.CollectionDatasource) Joiner(com.google.common.base.Joiner) Entity(com.haulmont.cuba.core.entity.Entity) FilterEntity(com.haulmont.cuba.security.entity.FilterEntity) Entity(com.haulmont.cuba.core.entity.Entity) PropertyType(com.haulmont.cuba.core.app.dynamicattributes.PropertyType) HasUuid(com.haulmont.cuba.core.entity.HasUuid) Datasource(com.haulmont.cuba.gui.data.Datasource) AbstractDatasource(com.haulmont.cuba.gui.data.impl.AbstractDatasource) CollectionDatasource(com.haulmont.cuba.gui.data.CollectionDatasource) AbstractDatasource(com.haulmont.cuba.gui.data.impl.AbstractDatasource) BaseAction(com.haulmont.cuba.gui.components.actions.BaseAction) CategoryAttribute(com.haulmont.cuba.core.entity.CategoryAttribute) MetaClass(com.haulmont.chile.core.model.MetaClass) ParamsMap(com.haulmont.bali.util.ParamsMap)

Example 40 with Datasource

use of com.haulmont.cuba.gui.data.Datasource in project cuba by cuba-platform.

the class SessionAttributeEditor method init.

@Override
public void init(Map<String, Object> params) {
    datasource = getDsContext().get("attribute");
    FieldGroup fields = (FieldGroup) getComponent("fields");
    FieldGroup.FieldConfig field = fields.getField("datatype");
    fields.addCustomField(field, new FieldGroup.CustomFieldGenerator() {

        @Override
        public Component generateField(Datasource datasource, String propertyId) {
            LookupField lookup = AppConfig.getFactory().createComponent(LookupField.class);
            lookup.setDatasource(datasource, propertyId);
            lookup.setRequiredMessage(getMessage("datatypeMsg"));
            lookup.setRequired(true);
            lookup.setPageLength(15);
            Map<String, Object> options = new TreeMap<>();
            String mainMessagePack = AppConfig.getMessagesPack();
            for (String datatypeId : Datatypes.getIds()) {
                options.put(messages.getMessage(mainMessagePack, "Datatype." + datatypeId), datatypeId);
            }
            lookup.setOptionsMap(options);
            return lookup;
        }
    });
}
Also used : Datasource(com.haulmont.cuba.gui.data.Datasource) FieldGroup(com.haulmont.cuba.gui.components.FieldGroup) LookupField(com.haulmont.cuba.gui.components.LookupField) Component(com.haulmont.cuba.gui.components.Component) TreeMap(java.util.TreeMap) Map(java.util.Map)

Aggregations

Datasource (com.haulmont.cuba.gui.data.Datasource)111 Ignore (org.junit.Ignore)66 Test (org.junit.Test)66 Component (com.haulmont.cuba.gui.components.Component)61 User (com.haulmont.cuba.security.entity.User)56 CollectionDatasource (com.haulmont.cuba.gui.data.CollectionDatasource)53 Assert.assertTrue (org.junit.Assert.assertTrue)49 Assert.assertEquals (org.junit.Assert.assertEquals)44 Group (com.haulmont.cuba.security.entity.Group)29 UUID (java.util.UUID)24 ArrayList (java.util.ArrayList)23 Assert (org.junit.Assert)22 List (java.util.List)20 DsBuilder (com.haulmont.cuba.gui.data.DsBuilder)13 Assert.assertNotNull (org.junit.Assert.assertNotNull)12 Date (java.util.Date)11 Entity (com.haulmont.cuba.core.entity.Entity)10 Role (com.haulmont.cuba.security.entity.Role)10 MetaClass (com.haulmont.chile.core.model.MetaClass)9 LookupField (com.haulmont.cuba.gui.components.LookupField)9