<mvc:View
    xmlns="sap.m"
    xmlns:mvc="sap.ui.core.mvc"
    xmlns:dnd="sap.ui.core.dnd"
    xmlns:cep="sap.ushell.components.workPageBuilder.controls"
    xmlns:core="sap.ui.core"
    core:require="{
        coreLibrary: 'sap/ui/core/library'
    }"
    controllerName="sap.ushell.components.workPageBuilder.controller.WorkPageBuilder"
    id="workPageBuilder"
    height="100%">
    <Page
        id="workpageBuilderPage"
        showHeader="false"
        showFooter="{= !!${/editMode} &amp;&amp; !!${/showFooter} }"
        backgroundDesign="Transparent"
        floatingFooter="true">
        <cep:WorkPage
            id="workPage"
            afterRendering=".focusFirstItem"
            breakpoint="{viewSettings>/currentBreakpoint/name}"
            editMode="{/editMode}"
            showTitle="{= !!${/showPageTitle} &amp;&amp; !!${descriptor/value/title}}"
            emptyIllustrationTitle="{i18n>WorkPage.EmptyPage.Title}"
            emptyIllustrationMessage="{i18n>WorkPage.EmptyPage.Message}"
            emptyIllustrationButtonText="{i18n>WorkPage.EmptyPage.Button.Add}"
            rows="{path: 'rows', templateShareable: false, key: 'id'}"
            loaded="{/loaded}"
            addFirstRow=".onAddFirstRow">
            <cep:title>
                <Title
                    id="workPageTitle"
                    text="{descriptor/value/title}"
                    level="{= coreLibrary.TitleLevel.H2 }"
                    titleStyle="{= coreLibrary.TitleLevel.H3 }" />
            </cep:title>
            <cep:WorkPageRow
                id="workPageRow"
                addRowButtonTooltip="{i18n>WorkPage.Row.AddRowButtonTooltip}"
                editMode="{/editMode}"
                maxColumns="{/maxColumns}"
                columns="{path: 'columns', templateShareable:false, key: 'id'}"
                columnMinFlex="{viewSettings>/currentBreakpoint/columnMinFlex}"
                addRow=".onAddRow">
                <cep:controlButtons>
                    <Button
                        id="workPageDeleteButton"
                        class="workPageRowControlButton"
                        press=".onDeleteRow"
                        icon="sap-icon://delete"
                        tooltip="{i18n>WorkPage.Row.OverflowToolbar.DeleteRowButtonTooltip}"
                        visible="{/editMode}" />
                </cep:controlButtons>
                <cep:headerBar>
                    <OverflowToolbar
                        id="workPageRowToolbar"
                        class="workPageRowToolbar"
                        visible="{= ${/editMode} || !!${descriptor/value/title} }">
                        <Label
                            id="workPageRowInputTitleLabel"
                            labelFor="workPageRowInputTitle"
                            text="{i18n>WorkPage.Row.OverflowToolbar.RowTitleLabel}"
                            visible="{/editMode}">
                            <layoutData>
                                <OverflowToolbarLayoutData group="1" />
                            </layoutData>
                        </Label>
                        <Input
                            id="workPageRowInputTitle"
                            value="{descriptor/value/title}"
                            editable="true"
                            placeholder="{i18n>WorkPage.Row.OverflowToolbar.RowTitleOptional}"
                            change=".onEditTitle"
                            visible="{/editMode}">
                            <layoutData>
                                <OverflowToolbarLayoutData
                                    group="1"
                                    shrinkable="true"
                                    minWidth="12rem" />
                            </layoutData>
                        </Input>
                    </OverflowToolbar>
                </cep:headerBar>
                <cep:messageStrip>
                    <MessageStrip
                        id="workPageRowMessageStrip"
                        type="Warning"
                        showIcon="true"
                        text="{i18n>WorkPage.Row.MessageStrip.DeprecatedColumnCount}"
                        class="workPageRowMessageStrip"
                        visible="{= ${/editMode} &amp;&amp; ${columns}.length > ${/maxColumns}}" />
                </cep:messageStrip>
                <cep:title>
                    <Title
                        id="workPageRowSectionTitle"
                        level="{= coreLibrary.TitleLevel.H3 }"
                        wrapping="true"
                        class="workPageRowSectionTitle"
                        text="{descriptor/value/title}"
                        visible="{= !${/editMode} &amp;&amp; !!${descriptor/value/title} }" />
                </cep:title>
                <cep:WorkPageColumn
                    id="workPageColumn"
                    editMode="{/editMode}"
                    ariaLabelPlaceholder="{i18n>WorkPage.Column.AriaLabel}"
                    columnWidth="{descriptor/value/columnWidth}"
                    deleteColumnButtonTooltip="{i18n>WorkPage.Column.DeleteColumnButtonTooltip}"
                    addColumnButtonTooltip="{i18n>WorkPage.Column.AddColumnButtonTooltip}"
                    addWidgetButtonText="{i18n>WorkPage.Column.AddWidgetButtonText}"
                    columnResized=".onResize"
                    columnResizeCompleted=".onResizeCompleted"
                    cells="{path: 'cells', templateShareable:false, key: 'id'}"
                    addColumn=".onAddColumn"
                    removeColumn=".onDeleteColumn"
                    addWidget=".openWidgetGallery">
                    <cep:WorkPageCell
                        id="workPageCell"
                        editMode="{/editMode}"
                        widgets="{path: 'widgets', factory: '.widgetFactory', key: 'id'}"
                        tileMode="{
                            parts: [
                                { path: 'widgets' }
                            ], formatter: '.tileMode'
                        }"
                        moveVisualization=".onGridDrop"
                        gridColumnsChange=".onGridColumnsChange"
                        deleteWidgetTooltip="{i18n>WorkPage.WidgetContainer.DeleteWidgetButtonTooltip}"
                        addApplicationButtonText="{i18n>WorkPage.Section.AddVizInstanceButtonText}"
                        gridContainerGap="{viewSettings>/currentBreakpoint/gap}"
                        gridContainerRowSize="{viewSettings>/currentBreakpoint/rowSize}"
                        emptyIllustrationTitle="{i18n>WorkPage.Cell.EmptyIllustrationTitle}"
                        emptyIllustrationMessage="{i18n>WorkPage.Cell.EmptyIllustrationDescription}"
                        gridContainerBorderReached=".onGridContainerBorderReached">
                        <cep:headerBar>
                            <OverflowToolbar
                                id="workPageCellOverflowToolbar"
                                class="workPageCellOverflowToolbar"
                                height="4rem"
                                visible="{= ${/editMode} || !!${descriptor/value/title} }">
                                <ToolbarSpacer />
                                <Button
                                    id="openAppSearch"
                                    class="workPageCellControlButtons"
                                    icon="sap-icon://add"
                                    press=".openTilesAppSearch"
                                    tooltip="{i18n>WorkPage.Cell.HeaderBar.AddTilesTooltip}"
                                    visible="{
                                        parts: [
                                            { path: 'widgets' },
                                            { path: '/editMode' }
                                        ], formatter: '.showAppSearchButton'
                                    }"
                                    type="Ghost" />
                                <Button
                                    id="deleteCell"
                                    class="workPageCellControlButtons"
                                    icon="sap-icon://delete"
                                    press=".onDeleteCell"
                                    tooltip="{i18n>WorkPage.Cell.HeaderBar.DeleteWidgetTooltip}"
                                    type="Ghost" />
                            </OverflowToolbar>
                        </cep:headerBar>
                    </cep:WorkPageCell>
                    <cep:dragDropConfig>
                        <dnd:DragInfo
                            enabled="{/editMode}"
                            sourceAggregation="cells"
                            groupName="Cell" />
                        <dnd:DropInfo
                            drop=".onVisualizationDropBetweenCells($event)"
                            targetAggregation="cells"
                            groupName="CellGridContainer"
                            dragEnter=".onWidgetOnCellDragEnter($event, false)"
                            dropPosition="Between" />
                        <dnd:DropInfo
                            drop=".onVisualizationDropOnEmptyWidgetContainer($event)"
                            targetAggregation="cells"
                            groupName="CellGridContainer"
                            dragEnter=".onWidgetOnCellDragEnter($event, true)"
                            dropPosition="On" />
                        <dnd:DropInfo
                            drop=".onVisualizationDropOnCell($event)"
                            groupName="CellGridContainer"
                            targetAggregation="cells"
                            dropPosition="On" />
                        <dnd:DropInfo
                            drop=".onVisualizationDropOnCell($event)"
                            enabled="{= ${cells} ? ${cells}.length === 0 : false}"
                            groupName="CellGridContainer"
                            dropPosition="On" />
                        <dnd:DropInfo
                            enabled="{= ${cells} ? ${cells}.length > 0 : false}"
                            drop=".onCellDrop($event)"
                            dropPosition="Between"
                            groupName="Cell"
                            dropLayout="Vertical"
                            targetAggregation="cells" />
                        <dnd:DropInfo
                            enabled="{= ${cells} ? ${cells}.length === 0 : false}"
                            drop=".onCellDropOnEmptyColumn($event)"
                            dropPosition="On"
                            groupName="Cell" />
                    </cep:dragDropConfig>
                </cep:WorkPageColumn>
            </cep:WorkPageRow>
        </cep:WorkPage>
        <footer>
            <Bar id="workPageFooterBar">
                <contentRight>
                    <Button
                        id="saveChanges"
                        text="{i18n>WorkPage.EditMode.Save}"
                        enabled="{/workPageHasChanges}"
                        type="Emphasized"
                        press=".saveEditChanges" />
                    <Button
                        id="discardChanges"
                        text="{i18n>WorkPage.EditMode.Cancel}"
                        press=".cancelEditChanges" />
                </contentRight>
            </Bar>
        </footer>
        <landmarkInfo>
            <PageAccessibleLandmarkInfo
                rootRole="Region"
                rootLabel="{i18n>WorkPage.Row.AriaLabel}"
                headerRole="None"
                contentRole="None"
                footerRole="None" />
        </landmarkInfo>
    </Page>
</mvc:View>
