Search in sources :

Example 1 with FormDescription

use of org.eclipse.sirius.components.forms.description.FormDescription in project sirius-components by eclipse-sirius.

the class NodeStylePropertiesConfigurer method getNodeStyleProperties.

private FormDescription getNodeStyleProperties() {
    // $NON-NLS-1$
    UUID formDescriptionId = UUID.nameUUIDFromBytes("nodestyle".getBytes());
    // @formatter:off
    List<AbstractControlDescription> controls = List.of(// $NON-NLS-1$ //$NON-NLS-2$
    this.createTextField(// $NON-NLS-1$ //$NON-NLS-2$
    "nodestyle.sizeExpression", // $NON-NLS-1$ //$NON-NLS-2$
    "Size Expression", style -> ((NodeStyle) style).getSizeComputationExpression(), (style, newSizeExpression) -> ((NodeStyle) style).setSizeComputationExpression(newSizeExpression), ViewPackage.Literals.NODE_STYLE__SIZE_COMPUTATION_EXPRESSION), // $NON-NLS-1$ //$NON-NLS-2$
    this.createTextField(// $NON-NLS-1$ //$NON-NLS-2$
    "nodestyle.labelColor", // $NON-NLS-1$ //$NON-NLS-2$
    "Label Color", style -> ((NodeStyle) style).getLabelColor(), (style, newLabelColor) -> ((NodeStyle) style).setLabelColor(newLabelColor), ViewPackage.Literals.NODE_STYLE__LABEL_COLOR), // $NON-NLS-1$ //$NON-NLS-2$
    this.createTextField(// $NON-NLS-1$ //$NON-NLS-2$
    "nodestyle.color", // $NON-NLS-1$ //$NON-NLS-2$
    "Color", style -> ((NodeStyle) style).getColor(), (style, newColor) -> ((NodeStyle) style).setColor(newColor), ViewPackage.Literals.STYLE__COLOR), // $NON-NLS-1$ //$NON-NLS-2$
    this.createTextField(// $NON-NLS-1$ //$NON-NLS-2$
    "nodestyle.borderColor", // $NON-NLS-1$ //$NON-NLS-2$
    "Border Color", style -> ((NodeStyle) style).getBorderColor(), (style, newColor) -> ((NodeStyle) style).setBorderColor(newColor), ViewPackage.Literals.BORDER_STYLE__BORDER_COLOR), // $NON-NLS-1$ //$NON-NLS-2$
    this.createTextField(// $NON-NLS-1$ //$NON-NLS-2$
    "nodestyle.borderRadius", // $NON-NLS-1$ //$NON-NLS-2$
    "Border Radius", style -> String.valueOf(((NodeStyle) style).getBorderRadius()), (style, newBorderRadius) -> {
        try {
            ((NodeStyle) style).setBorderRadius(Integer.parseInt(newBorderRadius));
        } catch (NumberFormatException nfe) {
        // Ignore.
        }
    }, ViewPackage.Literals.BORDER_STYLE__BORDER_RADIUS), // $NON-NLS-1$ //$NON-NLS-2$
    this.createTextField(// $NON-NLS-1$ //$NON-NLS-2$
    "nodestyle.borderSize", // $NON-NLS-1$ //$NON-NLS-2$
    "Border Size", style -> String.valueOf(((NodeStyle) style).getBorderSize()), (style, newBorderSize) -> {
        try {
            ((NodeStyle) style).setBorderSize(Integer.parseInt(newBorderSize));
        } catch (NumberFormatException nfe) {
        // Ignore.
        }
    }, ViewPackage.Literals.BORDER_STYLE__BORDER_SIZE), // $NON-NLS-1$
    this.createBorderLineStyleSelectionField("nodestyle.borderstyle", ViewPackage.Literals.BORDER_STYLE__BORDER_LINE_STYLE), // $NON-NLS-1$ //$NON-NLS-2$
    this.createCheckbox(// $NON-NLS-1$ //$NON-NLS-2$
    "nodestyle.listMode", // $NON-NLS-1$ //$NON-NLS-2$
    "List Mode", style -> ((NodeStyle) style).isListMode(), (style, newListMode) -> ((NodeStyle) style).setListMode(newListMode), ViewPackage.Literals.NODE_STYLE__LIST_MODE), // $NON-NLS-1$ //$NON-NLS-2$
    this.createTextField(// $NON-NLS-1$ //$NON-NLS-2$
    "nodestyle.fontSize", // $NON-NLS-1$ //$NON-NLS-2$
    "Font Size", style -> String.valueOf(((LabelStyle) style).getFontSize()), (style, newColor) -> {
        try {
            ((LabelStyle) style).setFontSize(Integer.parseInt(newColor));
        } catch (NumberFormatException nfe) {
        // Ignore.
        }
    }, ViewPackage.Literals.LABEL_STYLE__FONT_SIZE), // $NON-NLS-1$ //$NON-NLS-2$
    this.createCheckbox(// $NON-NLS-1$ //$NON-NLS-2$
    "nodestyle.italic", // $NON-NLS-1$ //$NON-NLS-2$
    "Italic", style -> ((LabelStyle) style).isItalic(), (style, newItalic) -> ((LabelStyle) style).setItalic(newItalic), ViewPackage.Literals.LABEL_STYLE__ITALIC), // $NON-NLS-1$ //$NON-NLS-2$
    this.createCheckbox(// $NON-NLS-1$ //$NON-NLS-2$
    "nodestyle.bold", // $NON-NLS-1$ //$NON-NLS-2$
    "Bold", style -> ((LabelStyle) style).isBold(), (style, newBold) -> ((LabelStyle) style).setBold(newBold), ViewPackage.Literals.LABEL_STYLE__BOLD), // $NON-NLS-1$ //$NON-NLS-2$
    this.createCheckbox(// $NON-NLS-1$ //$NON-NLS-2$
    "nodestyle.underline", // $NON-NLS-1$ //$NON-NLS-2$
    "Underline", style -> ((LabelStyle) style).isUnderline(), (style, newUnderline) -> ((LabelStyle) style).setUnderline(newUnderline), ViewPackage.Literals.LABEL_STYLE__UNDERLINE), // $NON-NLS-1$ //$NON-NLS-2$
    this.createCheckbox(// $NON-NLS-1$ //$NON-NLS-2$
    "nodestyle.strikeThrough", // $NON-NLS-1$ //$NON-NLS-2$
    "Strike Through", style -> ((LabelStyle) style).isStrikeThrough(), (style, newStrikeThrough) -> ((LabelStyle) style).setStrikeThrough(newStrikeThrough), ViewPackage.Literals.LABEL_STYLE__STRIKE_THROUGH), this.createShapeSelectionField(ViewPackage.Literals.NODE_STYLE__SHAPE));
    GroupDescription groupDescription = this.createSimpleGroupDescription(controls);
    Predicate<VariableManager> canCreatePagePredicate = variableManager -> variableManager.get(VariableManager.SELF, Object.class).filter(self -> self instanceof List<?>).map(self -> (List<?>) self).flatMap(self -> self.stream().findFirst()).filter(self -> self instanceof NodeStyle && !(self instanceof ConditionalNodeStyle)).isPresent();
    return FormDescription.newFormDescription(formDescriptionId).label(// $NON-NLS-1$
    "Node Style").labelProvider(variableManager -> variableManager.get(VariableManager.SELF, NodeStyle.class).map(NodeStyle::getColor).orElse(UNNAMED)).canCreatePredicate(variableManager -> true).idProvider(new GetOrCreateRandomIdProvider()).targetObjectIdProvider(this.getTargetObjectIdProvider()).pageDescriptions(List.of(this.createSimplePageDescription(groupDescription, canCreatePagePredicate))).groupDescriptions(List.of(groupDescription)).build();
// @formatter:on
}
Also used : IPropertiesDescriptionRegistryConfigurer(org.eclipse.sirius.components.collaborative.forms.services.api.IPropertiesDescriptionRegistryConfigurer) IEditingContext(org.eclipse.sirius.components.core.api.IEditingContext) LineStyle(org.eclipse.sirius.components.view.LineStyle) PageDescription(org.eclipse.sirius.components.forms.description.PageDescription) BiFunction(java.util.function.BiFunction) SelectComponent(org.eclipse.sirius.components.forms.components.SelectComponent) Function(java.util.function.Function) CustomImage(org.eclipse.sirius.components.emf.view.CustomImage) FormDescription(org.eclipse.sirius.components.forms.description.FormDescription) LabelStyle(org.eclipse.sirius.components.view.LabelStyle) IStatus(org.eclipse.sirius.components.representations.IStatus) TextfieldDescription(org.eclipse.sirius.components.forms.description.TextfieldDescription) ICustomImageSearchService(org.eclipse.sirius.components.emf.view.ICustomImageSearchService) BiConsumer(java.util.function.BiConsumer) IValidationService(org.eclipse.sirius.components.collaborative.validation.api.IValidationService) GroupDescription(org.eclipse.sirius.components.forms.description.GroupDescription) CheckboxDescription(org.eclipse.sirius.components.forms.description.CheckboxDescription) NodeStyle(org.eclipse.sirius.components.view.NodeStyle) Failure(org.eclipse.sirius.components.representations.Failure) Predicate(java.util.function.Predicate) SelectDescription(org.eclipse.sirius.components.forms.description.SelectDescription) Success(org.eclipse.sirius.components.representations.Success) Diagnostic(org.eclipse.emf.common.util.Diagnostic) EcoreUtil(org.eclipse.emf.ecore.util.EcoreUtil) EObject(org.eclipse.emf.ecore.EObject) UUID(java.util.UUID) ConditionalNodeStyle(org.eclipse.sirius.components.view.ConditionalNodeStyle) Collectors(java.util.stream.Collectors) ViewPackage(org.eclipse.sirius.components.view.ViewPackage) Objects(java.util.Objects) List(java.util.List) GetOrCreateRandomIdProvider(org.eclipse.sirius.components.representations.GetOrCreateRandomIdProvider) Component(org.springframework.stereotype.Component) AbstractControlDescription(org.eclipse.sirius.components.forms.description.AbstractControlDescription) BorderStyle(org.eclipse.sirius.components.view.BorderStyle) Optional(java.util.Optional) IPropertiesDescriptionRegistry(org.eclipse.sirius.components.collaborative.forms.services.api.IPropertiesDescriptionRegistry) VariableManager(org.eclipse.sirius.components.representations.VariableManager) Comparator(java.util.Comparator) VariableManager(org.eclipse.sirius.components.representations.VariableManager) NodeStyle(org.eclipse.sirius.components.view.NodeStyle) ConditionalNodeStyle(org.eclipse.sirius.components.view.ConditionalNodeStyle) LabelStyle(org.eclipse.sirius.components.view.LabelStyle) GroupDescription(org.eclipse.sirius.components.forms.description.GroupDescription) AbstractControlDescription(org.eclipse.sirius.components.forms.description.AbstractControlDescription) EObject(org.eclipse.emf.ecore.EObject) List(java.util.List) ConditionalNodeStyle(org.eclipse.sirius.components.view.ConditionalNodeStyle) UUID(java.util.UUID) GetOrCreateRandomIdProvider(org.eclipse.sirius.components.representations.GetOrCreateRandomIdProvider)

Example 2 with FormDescription

use of org.eclipse.sirius.components.forms.description.FormDescription in project sirius-components by eclipse-sirius.

the class NodeStylePropertiesConfigurer method getConditionalNodeStyleProperties.

private FormDescription getConditionalNodeStyleProperties() {
    // $NON-NLS-1$
    UUID formDescriptionId = UUID.nameUUIDFromBytes("conditionalnodestyle".getBytes());
    // @formatter:off
    List<AbstractControlDescription> controls = List.of(// $NON-NLS-1$ //$NON-NLS-2$
    this.createTextField(// $NON-NLS-1$ //$NON-NLS-2$
    "conditionalnodestyle.sizeExpression", // $NON-NLS-1$ //$NON-NLS-2$
    "Size Expression", style -> ((NodeStyle) style).getSizeComputationExpression(), (style, newSizeExpression) -> ((NodeStyle) style).setSizeComputationExpression(newSizeExpression), ViewPackage.Literals.NODE_STYLE__SIZE_COMPUTATION_EXPRESSION), // $NON-NLS-1$ //$NON-NLS-2$
    this.createTextField(// $NON-NLS-1$ //$NON-NLS-2$
    "conditionalnodestyle.condition", // $NON-NLS-1$ //$NON-NLS-2$
    "Condition", style -> ((ConditionalNodeStyle) style).getCondition(), (style, newCondition) -> ((ConditionalNodeStyle) style).setCondition(newCondition), ViewPackage.Literals.CONDITIONAL__CONDITION), // $NON-NLS-1$ //$NON-NLS-2$
    this.createTextField(// $NON-NLS-1$ //$NON-NLS-2$
    "conditionalnodestyle.labelColor", // $NON-NLS-1$ //$NON-NLS-2$
    "Label Color", style -> ((NodeStyle) style).getLabelColor(), (style, newLabelColor) -> ((NodeStyle) style).setLabelColor(newLabelColor), ViewPackage.Literals.NODE_STYLE__LABEL_COLOR), // $NON-NLS-1$ //$NON-NLS-2$
    this.createTextField(// $NON-NLS-1$ //$NON-NLS-2$
    "conditionalnodestyle.color", // $NON-NLS-1$ //$NON-NLS-2$
    "Color", style -> ((NodeStyle) style).getColor(), (style, newColor) -> ((NodeStyle) style).setColor(newColor), ViewPackage.Literals.STYLE__COLOR), // $NON-NLS-1$ //$NON-NLS-2$
    this.createTextField(// $NON-NLS-1$ //$NON-NLS-2$
    "conditionalnodestyle.borderColor", // $NON-NLS-1$ //$NON-NLS-2$
    "Border Color", style -> ((NodeStyle) style).getBorderColor(), (style, newColor) -> ((NodeStyle) style).setBorderColor(newColor), ViewPackage.Literals.BORDER_STYLE__BORDER_COLOR), // $NON-NLS-1$ //$NON-NLS-2$
    this.createTextField(// $NON-NLS-1$ //$NON-NLS-2$
    "conditionalnodestyle.borderRadius", // $NON-NLS-1$ //$NON-NLS-2$
    "Border Radius", style -> String.valueOf(((NodeStyle) style).getBorderRadius()), (style, newBorderRadius) -> {
        try {
            ((NodeStyle) style).setBorderRadius(Integer.parseInt(newBorderRadius));
        } catch (NumberFormatException nfe) {
        // Ignore.
        }
    }, ViewPackage.Literals.BORDER_STYLE__BORDER_RADIUS), // $NON-NLS-1$ //$NON-NLS-2$
    this.createTextField(// $NON-NLS-1$ //$NON-NLS-2$
    "conditionalnodestyle.borderSize", // $NON-NLS-1$ //$NON-NLS-2$
    "Border Size", style -> String.valueOf(((NodeStyle) style).getBorderSize()), (style, newBorderSize) -> {
        try {
            ((NodeStyle) style).setBorderSize(Integer.parseInt(newBorderSize));
        } catch (NumberFormatException nfe) {
        // Ignore.
        }
    }, ViewPackage.Literals.BORDER_STYLE__BORDER_SIZE), // $NON-NLS-1$
    this.createBorderLineStyleSelectionField("conditionalnodestyle.borderstyle", ViewPackage.Literals.BORDER_STYLE__BORDER_LINE_STYLE), // $NON-NLS-1$ //$NON-NLS-2$
    this.createCheckbox(// $NON-NLS-1$ //$NON-NLS-2$
    "conditionalnodestyle.listMode", // $NON-NLS-1$ //$NON-NLS-2$
    "List Mode", style -> ((NodeStyle) style).isListMode(), (style, newListMode) -> ((NodeStyle) style).setListMode(newListMode), ViewPackage.Literals.NODE_STYLE__LIST_MODE), // $NON-NLS-1$ //$NON-NLS-2$
    this.createTextField(// $NON-NLS-1$ //$NON-NLS-2$
    "conditionalnodestyle.fontSize", // $NON-NLS-1$ //$NON-NLS-2$
    "Font Size", style -> String.valueOf(((LabelStyle) style).getFontSize()), (style, newColor) -> {
        try {
            ((LabelStyle) style).setFontSize(Integer.parseInt(newColor));
        } catch (NumberFormatException nfe) {
        // Ignore.
        }
    }, ViewPackage.Literals.LABEL_STYLE__FONT_SIZE), // $NON-NLS-1$ //$NON-NLS-2$
    this.createCheckbox(// $NON-NLS-1$ //$NON-NLS-2$
    "conditionalnodestyle.italic", // $NON-NLS-1$ //$NON-NLS-2$
    "Italic", style -> ((LabelStyle) style).isItalic(), (style, newItalic) -> ((LabelStyle) style).setItalic(newItalic), ViewPackage.Literals.LABEL_STYLE__ITALIC), // $NON-NLS-1$ //$NON-NLS-2$
    this.createCheckbox(// $NON-NLS-1$ //$NON-NLS-2$
    "conditionalnodestyle.bold", // $NON-NLS-1$ //$NON-NLS-2$
    "Bold", style -> ((LabelStyle) style).isBold(), (style, newBold) -> ((LabelStyle) style).setBold(newBold), ViewPackage.Literals.LABEL_STYLE__BOLD), // $NON-NLS-1$ //$NON-NLS-2$
    this.createCheckbox(// $NON-NLS-1$ //$NON-NLS-2$
    "conditionalnodestyle.underline", // $NON-NLS-1$ //$NON-NLS-2$
    "Underline", style -> ((LabelStyle) style).isUnderline(), (style, newUnderline) -> ((LabelStyle) style).setUnderline(newUnderline), ViewPackage.Literals.LABEL_STYLE__UNDERLINE), // $NON-NLS-1$ //$NON-NLS-2$
    this.createCheckbox(// $NON-NLS-1$ //$NON-NLS-2$
    "conditionalnodestyle.strikeThrough", // $NON-NLS-1$ //$NON-NLS-2$
    "Strike Through", style -> ((LabelStyle) style).isStrikeThrough(), (style, newStrikeThrough) -> ((LabelStyle) style).setStrikeThrough(newStrikeThrough), ViewPackage.Literals.LABEL_STYLE__STRIKE_THROUGH), this.createShapeSelectionField(ViewPackage.Literals.NODE_STYLE__SHAPE));
    GroupDescription groupDescription = this.createSimpleGroupDescription(controls);
    Predicate<VariableManager> canCreatePagePredicate = variableManager -> variableManager.get(VariableManager.SELF, Object.class).filter(self -> self instanceof List<?>).map(self -> (List<?>) self).flatMap(self -> self.stream().findFirst()).filter(self -> self instanceof ConditionalNodeStyle).isPresent();
    return FormDescription.newFormDescription(formDescriptionId).label(// $NON-NLS-1$
    "Conditional Node Style").labelProvider(variableManager -> variableManager.get(VariableManager.SELF, ConditionalNodeStyle.class).map(ConditionalNodeStyle::getCondition).orElse(UNNAMED)).canCreatePredicate(variableManager -> true).idProvider(new GetOrCreateRandomIdProvider()).targetObjectIdProvider(this.getTargetObjectIdProvider()).pageDescriptions(List.of(this.createSimplePageDescription(groupDescription, canCreatePagePredicate))).groupDescriptions(List.of(groupDescription)).build();
// @formatter:on
}
Also used : IPropertiesDescriptionRegistryConfigurer(org.eclipse.sirius.components.collaborative.forms.services.api.IPropertiesDescriptionRegistryConfigurer) IEditingContext(org.eclipse.sirius.components.core.api.IEditingContext) LineStyle(org.eclipse.sirius.components.view.LineStyle) PageDescription(org.eclipse.sirius.components.forms.description.PageDescription) BiFunction(java.util.function.BiFunction) SelectComponent(org.eclipse.sirius.components.forms.components.SelectComponent) Function(java.util.function.Function) CustomImage(org.eclipse.sirius.components.emf.view.CustomImage) FormDescription(org.eclipse.sirius.components.forms.description.FormDescription) LabelStyle(org.eclipse.sirius.components.view.LabelStyle) IStatus(org.eclipse.sirius.components.representations.IStatus) TextfieldDescription(org.eclipse.sirius.components.forms.description.TextfieldDescription) ICustomImageSearchService(org.eclipse.sirius.components.emf.view.ICustomImageSearchService) BiConsumer(java.util.function.BiConsumer) IValidationService(org.eclipse.sirius.components.collaborative.validation.api.IValidationService) GroupDescription(org.eclipse.sirius.components.forms.description.GroupDescription) CheckboxDescription(org.eclipse.sirius.components.forms.description.CheckboxDescription) NodeStyle(org.eclipse.sirius.components.view.NodeStyle) Failure(org.eclipse.sirius.components.representations.Failure) Predicate(java.util.function.Predicate) SelectDescription(org.eclipse.sirius.components.forms.description.SelectDescription) Success(org.eclipse.sirius.components.representations.Success) Diagnostic(org.eclipse.emf.common.util.Diagnostic) EcoreUtil(org.eclipse.emf.ecore.util.EcoreUtil) EObject(org.eclipse.emf.ecore.EObject) UUID(java.util.UUID) ConditionalNodeStyle(org.eclipse.sirius.components.view.ConditionalNodeStyle) Collectors(java.util.stream.Collectors) ViewPackage(org.eclipse.sirius.components.view.ViewPackage) Objects(java.util.Objects) List(java.util.List) GetOrCreateRandomIdProvider(org.eclipse.sirius.components.representations.GetOrCreateRandomIdProvider) Component(org.springframework.stereotype.Component) AbstractControlDescription(org.eclipse.sirius.components.forms.description.AbstractControlDescription) BorderStyle(org.eclipse.sirius.components.view.BorderStyle) Optional(java.util.Optional) IPropertiesDescriptionRegistry(org.eclipse.sirius.components.collaborative.forms.services.api.IPropertiesDescriptionRegistry) VariableManager(org.eclipse.sirius.components.representations.VariableManager) Comparator(java.util.Comparator) VariableManager(org.eclipse.sirius.components.representations.VariableManager) NodeStyle(org.eclipse.sirius.components.view.NodeStyle) ConditionalNodeStyle(org.eclipse.sirius.components.view.ConditionalNodeStyle) LabelStyle(org.eclipse.sirius.components.view.LabelStyle) GroupDescription(org.eclipse.sirius.components.forms.description.GroupDescription) AbstractControlDescription(org.eclipse.sirius.components.forms.description.AbstractControlDescription) EObject(org.eclipse.emf.ecore.EObject) List(java.util.List) ConditionalNodeStyle(org.eclipse.sirius.components.view.ConditionalNodeStyle) UUID(java.util.UUID) GetOrCreateRandomIdProvider(org.eclipse.sirius.components.representations.GetOrCreateRandomIdProvider)

Example 3 with FormDescription

use of org.eclipse.sirius.components.forms.description.FormDescription in project sirius-components by eclipse-sirius.

the class FormDescriptionAggregator method aggregate.

public Optional<FormDescription> aggregate(List<FormDescription> formDescriptions, List<Object> objects, IObjectService objectService) {
    VariableManager pageVariableManager = new VariableManager();
    pageVariableManager.put(VariableManager.SELF, objects);
    // @formatter:off
    List<PageDescription> pageDescriptions = formDescriptions.stream().flatMap(formDescription -> formDescription.getPageDescriptions().stream()).filter(pageDescription -> pageDescription.getCanCreatePredicate().test(pageVariableManager)).collect(Collectors.toList());
    if (pageDescriptions.isEmpty()) {
        return Optional.empty();
    }
    // @formatter:off
    List<GroupDescription> groupDescriptions = pageDescriptions.stream().flatMap(pageDescription -> pageDescription.getGroupDescriptions().stream()).collect(Collectors.toUnmodifiableList());
    Function<VariableManager, String> labelProvider = variableManager -> variableManager.get(VariableManager.SELF, Object.class).filter(self -> self instanceof List<?>).map(self -> (List<?>) self).flatMap(self -> self.stream().findFirst()).map(objectService::getFullLabel).orElse(// $NON-NLS-1$
    "Properties");
    // @formatter:on
    // @formatter:off
    Function<VariableManager, String> targetObjectIdProvider = variableManager -> variableManager.get(VariableManager.SELF, Object.class).filter(self -> self instanceof List<?>).map(self -> (List<?>) self).flatMap(self -> self.stream().findFirst()).map(objectService::getId).orElse(null);
    return Optional.of(FormDescription.newFormDescription(UUID.randomUUID()).label(// $NON-NLS-1$
    "Aggregated form description").idProvider(new GetOrCreateRandomIdProvider()).labelProvider(labelProvider).targetObjectIdProvider(targetObjectIdProvider).canCreatePredicate(variableManager -> false).pageDescriptions(pageDescriptions).groupDescriptions(groupDescriptions).build());
// @formatter:on
}
Also used : VariableManager(org.eclipse.sirius.components.representations.VariableManager) FormDescription(org.eclipse.sirius.components.forms.description.FormDescription) List(java.util.List) GetOrCreateRandomIdProvider(org.eclipse.sirius.components.representations.GetOrCreateRandomIdProvider) PageDescription(org.eclipse.sirius.components.forms.description.PageDescription) IObjectService(org.eclipse.sirius.components.core.api.IObjectService) Optional(java.util.Optional) GroupDescription(org.eclipse.sirius.components.forms.description.GroupDescription) UUID(java.util.UUID) VariableManager(org.eclipse.sirius.components.representations.VariableManager) Function(java.util.function.Function) Collectors(java.util.stream.Collectors) GroupDescription(org.eclipse.sirius.components.forms.description.GroupDescription) PageDescription(org.eclipse.sirius.components.forms.description.PageDescription) List(java.util.List) GetOrCreateRandomIdProvider(org.eclipse.sirius.components.representations.GetOrCreateRandomIdProvider)

Example 4 with FormDescription

use of org.eclipse.sirius.components.forms.description.FormDescription in project sirius-components by eclipse-sirius.

the class FormEventProcessorFactory method createRepresentationEventProcessor.

@Override
public <T extends IRepresentationEventProcessor> Optional<T> createRepresentationEventProcessor(Class<T> representationEventProcessorClass, IRepresentationConfiguration configuration, IEditingContext editingContext) {
    if (IFormEventProcessor.class.isAssignableFrom(representationEventProcessorClass) && configuration instanceof FormConfiguration) {
        FormConfiguration formConfiguration = (FormConfiguration) configuration;
        Optional<Form> optionalForm = this.representationSearchService.findById(editingContext, formConfiguration.getId(), Form.class);
        if (optionalForm.isPresent()) {
            Form form = optionalForm.get();
            // @formatter:off
            Optional<FormDescription> optionalFormDescription = this.representationDescriptionSearchService.findById(editingContext, form.getDescriptionId()).filter(FormDescription.class::isInstance).map(FormDescription.class::cast);
            // @formatter:on
            Optional<Object> optionalObject = this.objectService.getObject(editingContext, form.getTargetObjectId());
            if (optionalFormDescription.isPresent() && optionalObject.isPresent()) {
                FormDescription formDescription = optionalFormDescription.get();
                Object object = optionalObject.get();
                // @formatter:off
                FormCreationParameters formCreationParameters = FormCreationParameters.newFormCreationParameters(formConfiguration.getId()).editingContext(editingContext).formDescription(formDescription).objects(List.of(object)).build();
                // @formatter:on
                IRepresentationEventProcessor formEventProcessor = new FormEventProcessor(formCreationParameters, this.formEventHandlers, this.subscriptionManagerFactory.create(), this.widgetSubscriptionManagerFactory.create(), this.representationRefreshPolicyRegistry);
                // @formatter:off
                return Optional.of(formEventProcessor).filter(representationEventProcessorClass::isInstance).map(representationEventProcessorClass::cast);
            // @formatter:on
            }
        }
    }
    return Optional.empty();
}
Also used : IFormEventProcessor(org.eclipse.sirius.components.collaborative.forms.api.IFormEventProcessor) Form(org.eclipse.sirius.components.forms.Form) IFormEventProcessor(org.eclipse.sirius.components.collaborative.forms.api.IFormEventProcessor) FormCreationParameters(org.eclipse.sirius.components.collaborative.forms.api.FormCreationParameters) FormConfiguration(org.eclipse.sirius.components.collaborative.forms.api.FormConfiguration) FormDescription(org.eclipse.sirius.components.forms.description.FormDescription) IRepresentationEventProcessor(org.eclipse.sirius.components.collaborative.api.IRepresentationEventProcessor)

Example 5 with FormDescription

use of org.eclipse.sirius.components.forms.description.FormDescription in project sirius-components by eclipse-sirius.

the class FormComponent method render.

@Override
public Element render() {
    VariableManager variableManager = this.props.getVariableManager();
    FormDescription formDescription = this.props.getFormDescription();
    String id = formDescription.getIdProvider().apply(variableManager);
    String label = formDescription.getLabelProvider().apply(variableManager);
    String targetObjectId = formDescription.getTargetObjectIdProvider().apply(variableManager);
    List<PageDescription> pageDescriptions = formDescription.getPageDescriptions();
    List<Object> candidates = new ArrayList<>();
    var optionalSelf = variableManager.get(VariableManager.SELF, Object.class);
    if (optionalSelf.isPresent()) {
        Object self = optionalSelf.get();
        if (self instanceof Collection<?>) {
            Collection<?> objects = (Collection<?>) self;
            candidates.addAll(objects);
        } else {
            candidates.add(self);
        }
    }
    // @formatter:off
    List<Element> children = candidates.stream().map(candidate -> {
        VariableManager childVariableManager = variableManager.createChild();
        childVariableManager.put(VariableManager.SELF, candidate);
        return childVariableManager;
    }).flatMap(childVariableManager -> pageDescriptions.stream().map(pageDescription -> {
        PageComponentProps pageComponentProps = new PageComponentProps(childVariableManager, pageDescription);
        return new Element(PageComponent.class, pageComponentProps);
    })).collect(Collectors.toList());
    FormElementProps formElementProps = FormElementProps.newFormElementProps(id).label(label).targetObjectId(targetObjectId).descriptionId(formDescription.getId()).children(children).build();
    return new Element(FormElementProps.TYPE, formElementProps);
// @formatter:on
}
Also used : VariableManager(org.eclipse.sirius.components.representations.VariableManager) FormDescription(org.eclipse.sirius.components.forms.description.FormDescription) List(java.util.List) PageDescription(org.eclipse.sirius.components.forms.description.PageDescription) Collection(java.util.Collection) FormElementProps(org.eclipse.sirius.components.forms.elements.FormElementProps) VariableManager(org.eclipse.sirius.components.representations.VariableManager) Collectors(java.util.stream.Collectors) Element(org.eclipse.sirius.components.representations.Element) IComponent(org.eclipse.sirius.components.representations.IComponent) ArrayList(java.util.ArrayList) Element(org.eclipse.sirius.components.representations.Element) ArrayList(java.util.ArrayList) PageDescription(org.eclipse.sirius.components.forms.description.PageDescription) FormElementProps(org.eclipse.sirius.components.forms.elements.FormElementProps) Collection(java.util.Collection) FormDescription(org.eclipse.sirius.components.forms.description.FormDescription)

Aggregations

FormDescription (org.eclipse.sirius.components.forms.description.FormDescription)16 List (java.util.List)10 UUID (java.util.UUID)9 IObjectService (org.eclipse.sirius.components.core.api.IObjectService)9 VariableManager (org.eclipse.sirius.components.representations.VariableManager)9 Optional (java.util.Optional)8 PageDescription (org.eclipse.sirius.components.forms.description.PageDescription)8 Collectors (java.util.stream.Collectors)7 GroupDescription (org.eclipse.sirius.components.forms.description.GroupDescription)7 ArrayList (java.util.ArrayList)6 Function (java.util.function.Function)6 Objects (java.util.Objects)5 AbstractControlDescription (org.eclipse.sirius.components.forms.description.AbstractControlDescription)4 CheckboxDescription (org.eclipse.sirius.components.forms.description.CheckboxDescription)4 SelectDescription (org.eclipse.sirius.components.forms.description.SelectDescription)4 TextfieldDescription (org.eclipse.sirius.components.forms.description.TextfieldDescription)4 GetOrCreateRandomIdProvider (org.eclipse.sirius.components.representations.GetOrCreateRandomIdProvider)4 Collections (java.util.Collections)3 Assertions.assertThat (org.assertj.core.api.Assertions.assertThat)3 EcorePackage (org.eclipse.emf.ecore.EcorePackage)3