Search in sources :

Example 1 with BoxLayout

use of io.jmix.ui.component.BoxLayout in project jmix by jmix-framework.

the class CustomOperationEditor method createComponent.

@Override
protected Component createComponent() {
    ComponentsFactory componentsFactory = AppBeans.get(ComponentsFactory.class);
    BoxLayout layout = componentsFactory.createComponent(VBoxLayout.class);
    return layout;
}
Also used : ComponentsFactory(com.haulmont.cuba.gui.xml.layout.ComponentsFactory) VBoxLayout(io.jmix.ui.component.VBoxLayout) BoxLayout(io.jmix.ui.component.BoxLayout)

Example 2 with BoxLayout

use of io.jmix.ui.component.BoxLayout in project jmix by jmix-framework.

the class FileUploadFieldLoader method loadDropZone.

protected void loadDropZone(UploadField uploadField, Element element) {
    String dropZoneId = element.attributeValue("dropZone");
    if (StringUtils.isNotEmpty(dropZoneId)) {
        Component dropZone = findComponent(dropZoneId);
        if (dropZone instanceof BoxLayout) {
            uploadField.setDropZone(new UploadField.DropZone((BoxLayout) dropZone));
        } else if (dropZone != null) {
            throw new GuiDevelopmentException("Unsupported dropZone class " + dropZone.getClass().getName(), context);
        } else {
            throw new GuiDevelopmentException("Unable to find dropZone component with id: " + dropZoneId, context);
        }
    }
    String dropZonePrompt = element.attributeValue("dropZonePrompt");
    if (StringUtils.isNotEmpty(dropZonePrompt)) {
        uploadField.setDropZonePrompt(loadResourceString(dropZonePrompt));
    }
}
Also used : BoxLayout(io.jmix.ui.component.BoxLayout) SingleFileUploadField(io.jmix.ui.component.SingleFileUploadField) UploadField(io.jmix.ui.component.UploadField) FileUploadField(io.jmix.ui.component.FileUploadField) GuiDevelopmentException(io.jmix.ui.GuiDevelopmentException) Component(io.jmix.ui.component.Component)

Example 3 with BoxLayout

use of io.jmix.ui.component.BoxLayout in project jmix by jmix-framework.

the class FilterDelegateImpl method addAppliedFilter.

protected void addAppliedFilter() {
    if (lastAppliedFilter == null)
        return;
    if (!appliedFilters.isEmpty() && appliedFilters.getLast().filter.equals(lastAppliedFilter))
        return;
    this.layout.add(appliedFiltersLayout, CONDITIONS_LOCATION_TOP.equals(conditionsLocation) ? 0 : 1);
    BoxLayout layout = uiComponents.create(HBoxLayout.class);
    layout.setSpacing(true);
    if (!appliedFilters.isEmpty()) {
        AppliedFilterHolder holder = appliedFilters.getLast();
        holder.layout.remove(holder.button);
    }
    Label<String> label = uiComponents.create(Label.NAME);
    label.setValue(lastAppliedFilter.getText());
    layout.add(label);
    label.setAlignment(Alignment.MIDDLE_LEFT);
    LinkButton button = uiComponents.create(LinkButton.class);
    button.setIconFromSet(JmixIcon.TIMES);
    button.addClickListener(e -> removeAppliedFilter());
    layout.add(button);
    addAppliedFilterLayoutHook(layout);
    appliedFiltersLayout.add(layout);
    appliedFilters.add(new AppliedFilterHolder(lastAppliedFilter, layout, button));
}
Also used : BoxLayout(io.jmix.ui.component.BoxLayout) HBoxLayout(io.jmix.ui.component.HBoxLayout) GroupBoxLayout(io.jmix.ui.component.GroupBoxLayout) VBoxLayout(io.jmix.ui.component.VBoxLayout)

Example 4 with BoxLayout

use of io.jmix.ui.component.BoxLayout in project jmix by jmix-framework.

the class FilterDelegateImpl method recursivelyCreateConditionsLayout.

protected void recursivelyCreateConditionsLayout(ConditionsFocusType conditionsFocusType, boolean initialFocusSet, List<Node<AbstractCondition>> nodes, ComponentContainer parentContainer, int level) {
    FilterDataContext filterDataContext = new FilterDataContext(filter.getFrame());
    List<Node<AbstractCondition>> visibleConditionNodes = fetchVisibleNodes(nodes);
    if (visibleConditionNodes.isEmpty()) {
        if (level == 0)
            controlsLayout.setStyleName("filter-control-no-border");
        return;
    }
    // note that this is not grid columns count, but number of conditions (label cell + value cell) in one row
    int conditionsCount = getColumnsCount();
    int row = 0;
    int nextColumnStart = 0;
    GridLayout grid = uiComponents.create(GridLayout.class);
    grid.setStyleName("conditions-grid");
    grid.setColumns(conditionsCount * 2);
    // set expand ratio only for cells with param edit components
    for (int i = 0; i < conditionsCount; i++) {
        grid.setColumnExpandRatio(i * 2 + 1, 1);
    }
    grid.setRows(1);
    grid.setSpacing(true);
    grid.setWidth("100%");
    ParamEditor firstParamEditor = null;
    ParamEditor lastParamEditor = null;
    boolean currentFocusSet = initialFocusSet;
    RuntimeException entityParamInformationException = null;
    for (int i = 0; i < visibleConditionNodes.size(); i++) {
        Node<AbstractCondition> node = visibleConditionNodes.get(i);
        final AbstractCondition condition = node.getData();
        BoxLayout labelAndOperationCellContent = null;
        Component paramEditComponentCellContent = null;
        Component groupCellContent = null;
        if (condition.isGroup()) {
            groupCellContent = createGroupConditionBox(condition, node, conditionsFocusType, currentFocusSet, level);
            level++;
        } else {
            if (condition.getParam().getJavaClass() != null) {
                Pair<ParamEditor, RuntimeException> pair = createParamEditorWithChecks(condition, filterDataContext);
                ParamEditor paramEditor = pair.getFirst();
                addParamEditor(condition, paramEditor);
                if (pair.getSecond() != null) {
                    entityParamInformationException = pair.getSecond();
                }
                if (firstParamEditor == null)
                    firstParamEditor = paramEditor;
                lastParamEditor = paramEditor;
                currentFocusSet = true;
                labelAndOperationCellContent = paramEditor.getLabelAndOperationLayout();
                paramEditComponentCellContent = paramEditor.getParamEditComponentLayout();
            } else {
                BoxLayout paramLayout = uiComponents.create(HBoxLayout.class);
                paramLayout.setSpacing(true);
                paramLayout.setMargin(false);
                labelAndOperationCellContent = paramLayout;
            }
        }
        // groupBox for group conditions must occupy the whole line in conditions grid
        Integer conditionWidth = condition.isGroup() ? (Integer) conditionsCount : condition.getWidth();
        int nextColumnEnd = nextColumnStart + conditionWidth - 1;
        if (nextColumnEnd >= conditionsCount) {
            // complete current row in grid with gaps if next cell will be on next row
            completeGridRowWithGaps(grid, row, nextColumnStart, false);
            // place cell to next row in grid
            nextColumnStart = 0;
            nextColumnEnd = conditionWidth - 1;
            row++;
            grid.setRows(row + 1);
        }
        if (groupCellContent != null) {
            grid.add(groupCellContent, nextColumnStart * 2, row, nextColumnEnd * 2 + 1, row);
        }
        if (labelAndOperationCellContent != null) {
            labelAndOperationCellContent.addStyleName("param-label-layout");
            grid.add(labelAndOperationCellContent, nextColumnStart * 2, row, nextColumnStart * 2, row);
            if (nextColumnStart != 0)
                labelAndOperationCellContent.setMargin(false, false, false, true);
        }
        if (paramEditComponentCellContent != null) {
            paramEditComponentCellContent.addStyleName("param-field-layout");
            if (condition.getParam().getType() == Param.Type.UNARY) {
                paramEditComponentCellContent.addStyleName("unary-param-type");
            }
            grid.add(paramEditComponentCellContent, nextColumnStart * 2 + 1, row, nextColumnEnd * 2 + 1, row);
        }
        nextColumnStart = nextColumnEnd + 1;
        // add next row if necessary
        if (i < visibleConditionNodes.size() - 1) {
            if (nextColumnStart >= conditionsCount) {
                nextColumnStart = 0;
                row++;
                grid.setRows(row + 1);
            }
        }
    }
    filterDataContext.loadAll();
    if (!initialFocusSet) {
        switch(conditionsFocusType) {
            case FIRST:
                if (firstParamEditor != null) {
                    paramEditComponentToFocus = firstParamEditor;
                }
                break;
            case LAST:
                if (lastParamEditor != null) {
                    paramEditComponentToFocus = lastParamEditor;
                }
                break;
            default:
                // no action
                break;
        }
    }
    // complete last row in grid with gaps
    completeGridRowWithGaps(grid, row, nextColumnStart, true);
    if (parentContainer != null) {
        parentContainer.add(grid);
    }
    if (level == 0)
        controlsLayout.setStyleName(getControlsLayoutStyleName());
    if (entityParamInformationException != null) {
        getDialogs().createExceptionDialog().withThrowable(entityParamInformationException).show();
    }
}
Also used : Node(io.jmix.core.common.datastruct.Node) BoxLayout(io.jmix.ui.component.BoxLayout) HBoxLayout(io.jmix.ui.component.HBoxLayout) GroupBoxLayout(io.jmix.ui.component.GroupBoxLayout) VBoxLayout(io.jmix.ui.component.VBoxLayout) GridLayout(com.haulmont.cuba.gui.components.GridLayout) ListComponent(com.haulmont.cuba.gui.components.ListComponent) Component(io.jmix.ui.component.Component) AbstractCondition(com.haulmont.cuba.gui.components.filter.condition.AbstractCondition)

Example 5 with BoxLayout

use of io.jmix.ui.component.BoxLayout in project jmix by jmix-framework.

the class FileMultiUploadFieldLoader method loadDropZone.

protected void loadDropZone(UploadField uploadField, Element element) {
    String dropZoneId = element.attributeValue("dropZone");
    if (StringUtils.isNotEmpty(dropZoneId)) {
        Component dropZone = findComponent(dropZoneId);
        if (dropZone instanceof BoxLayout) {
            uploadField.setDropZone(new UploadField.DropZone((BoxLayout) dropZone));
        } else if (dropZone != null) {
            throw new GuiDevelopmentException("Unsupported dropZone class " + dropZone.getClass().getName(), context);
        } else {
            throw new GuiDevelopmentException("Unable to find dropZone component with id: " + dropZoneId, context);
        }
    }
    String dropZonePrompt = element.attributeValue("dropZonePrompt");
    if (StringUtils.isNotEmpty(dropZonePrompt)) {
        uploadField.setDropZonePrompt(loadResourceString(dropZonePrompt));
    }
}
Also used : BoxLayout(io.jmix.ui.component.BoxLayout) UploadField(io.jmix.ui.component.UploadField) FileMultiUploadField(io.jmix.ui.component.FileMultiUploadField) GuiDevelopmentException(io.jmix.ui.GuiDevelopmentException) Component(io.jmix.ui.component.Component)

Aggregations

BoxLayout (io.jmix.ui.component.BoxLayout)5 Component (io.jmix.ui.component.Component)3 VBoxLayout (io.jmix.ui.component.VBoxLayout)3 GuiDevelopmentException (io.jmix.ui.GuiDevelopmentException)2 GroupBoxLayout (io.jmix.ui.component.GroupBoxLayout)2 HBoxLayout (io.jmix.ui.component.HBoxLayout)2 UploadField (io.jmix.ui.component.UploadField)2 GridLayout (com.haulmont.cuba.gui.components.GridLayout)1 ListComponent (com.haulmont.cuba.gui.components.ListComponent)1 AbstractCondition (com.haulmont.cuba.gui.components.filter.condition.AbstractCondition)1 ComponentsFactory (com.haulmont.cuba.gui.xml.layout.ComponentsFactory)1 Node (io.jmix.core.common.datastruct.Node)1 FileMultiUploadField (io.jmix.ui.component.FileMultiUploadField)1 FileUploadField (io.jmix.ui.component.FileUploadField)1 SingleFileUploadField (io.jmix.ui.component.SingleFileUploadField)1