Search in sources :

Example 1 with AbstractClientConnector

use of com.vaadin.server.AbstractClientConnector in project cuba by cuba-platform.

the class DDUtil method onBeforeClientResponse.

public static void onBeforeClientResponse(HasComponents layout, DragAndDropAwareState state) {
    DDLayoutState dragAndDropState = state.getDragAndDropState();
    Iterator<Component> componentIterator = layout.iterator();
    dragAndDropState.draggable = new ArrayList<>();
    dragAndDropState.referenceImageComponents = new HashMap<>();
    dragAndDropState.nonGrabbable = new ArrayList<>();
    dragAndDropState.dragCaptions = new HashMap<>();
    if (layout instanceof AbstractClientConnector) {
        for (DragCaptionInfo dci : dragAndDropState.dragCaptions.values()) {
            if (dci.iconKey != null) {
                ((AbstractClientConnector) layout).setConnectorResource(dci.iconKey, null);
            }
        }
    }
    KeyMapper<Resource> keyMapper = new KeyMapper<>();
    while (componentIterator.hasNext()) {
        Component c = componentIterator.next();
        if (layout instanceof DragFilterSupport && ((DragFilterSupport) layout).getDragFilter().isDraggable(c)) {
            dragAndDropState.draggable.add(c);
        }
        if (layout instanceof DragGrabFilterSupport) {
            DragGrabFilter dragGrabFilter = ((DragGrabFilterSupport) layout).getDragGrabFilter();
            if (dragGrabFilter != null) {
                addNonGrabbedComponents(dragAndDropState.nonGrabbable, c, dragGrabFilter);
            }
        }
        if (layout instanceof HasDragCaptionProvider) {
            DragCaptionProvider dragCaptionProvider = ((HasDragCaptionProvider) layout).getDragCaptionProvider();
            if (dragCaptionProvider != null) {
                DragCaption dragCaption = dragCaptionProvider.getDragCaption(c);
                if (dragCaption != null) {
                    String dragIconKey = null;
                    if (dragCaption.getIcon() != null && layout instanceof AbstractClientConnector) {
                        dragIconKey = keyMapper.key(dragCaption.getIcon());
                        ((AbstractClientConnector) layout).setConnectorResource(dragIconKey, dragCaption.getIcon());
                    }
                    DragCaptionInfo dci = new DragCaptionInfo();
                    dci.caption = dragCaption.getCaption();
                    dci.contentMode = dragCaption.getContentMode();
                    dci.iconKey = dragIconKey;
                    dragAndDropState.dragCaptions.put(c, dci);
                }
            }
        }
        if (layout instanceof DragImageReferenceSupport) {
            DragImageProvider provider = ((DragImageReferenceSupport) layout).getDragImageProvider();
            if (provider != null) {
                Component dragImage = provider.getDragImage(c);
                if (dragImage != null) {
                    dragAndDropState.referenceImageComponents.put(c, dragImage);
                }
            }
        }
    }
}
Also used : DDLayoutState(com.haulmont.cuba.web.widgets.client.addons.dragdroplayouts.ui.interfaces.DDLayoutState) KeyMapper(com.vaadin.server.KeyMapper) Resource(com.vaadin.server.Resource) AbstractClientConnector(com.vaadin.server.AbstractClientConnector) DragCaptionInfo(com.haulmont.cuba.web.widgets.client.addons.dragdroplayouts.ui.DragCaptionInfo) Component(com.vaadin.ui.Component)

Aggregations

DragCaptionInfo (com.haulmont.cuba.web.widgets.client.addons.dragdroplayouts.ui.DragCaptionInfo)1 DDLayoutState (com.haulmont.cuba.web.widgets.client.addons.dragdroplayouts.ui.interfaces.DDLayoutState)1 AbstractClientConnector (com.vaadin.server.AbstractClientConnector)1 KeyMapper (com.vaadin.server.KeyMapper)1 Resource (com.vaadin.server.Resource)1 Component (com.vaadin.ui.Component)1