use of com.haulmont.cuba.web.widgets.client.addons.dragdroplayouts.ui.interfaces.DDLayoutState in project cuba by cuba-platform.
the class VDragCaptionProvider method getDragCaptionElement.
public Element getDragCaptionElement(Widget w) {
ComponentConnector component = Util.findConnectorFor(w);
DDLayoutState state = ((DragAndDropAwareState) root.getState()).getDragAndDropState();
DragCaptionInfo dci = state.dragCaptions.get(component);
Document document = Document.get();
Element dragCaptionImage = document.createDivElement();
Element dragCaption = document.createSpanElement();
String dragCaptionText = dci.caption;
if (dragCaptionText != null) {
if (dci.contentMode == ContentMode.TEXT) {
dragCaption.setInnerText(dragCaptionText);
} else if (dci.contentMode == ContentMode.HTML) {
dragCaption.setInnerHTML(dragCaptionText);
} else if (dci.contentMode == ContentMode.PREFORMATTED) {
PreElement preElement = document.createPreElement();
preElement.setInnerText(dragCaptionText);
dragCaption.appendChild(preElement);
}
}
String dragIconKey = state.dragCaptions.get(component).iconKey;
if (dragIconKey != null) {
String resourceUrl = root.getResourceUrl(dragIconKey);
Icon icon = component.getConnection().getIcon(resourceUrl);
dragCaptionImage.appendChild(icon.getElement());
}
dragCaptionImage.appendChild(dragCaption);
return dragCaptionImage;
}
use of com.haulmont.cuba.web.widgets.client.addons.dragdroplayouts.ui.interfaces.DDLayoutState 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);
}
}
}
}
}
Aggregations