use of com.vaadin.shared.ui.dd.VerticalDropLocation in project cuba by cuba-platform.
the class VDDVerticalLayout method emphasis.
/**
* Empasises the drop location of the component when hovering over a
* ĆhildComponentContainer. Passing null as the container removes any
* previous emphasis.
*
* @param container
* The container which we are hovering over
* @param event
* The drag event
*/
protected void emphasis(Widget container, VDragEvent event) {
// Remove emphasis from previous hovers
deEmphasis();
// validate container
if (container == null || !getElement().isOrHasChild(container.getElement())) {
return;
}
currentlyEmphasised = container;
VerticalDropLocation location = null;
// Add drop location specific style
if (currentlyEmphasised != this) {
location = getVerticalDropLocation(currentlyEmphasised, event);
} else {
location = VerticalDropLocation.MIDDLE;
}
setStyleName(currentlyEmphasised.getElement(), OVER, true);
setStyleName(currentlyEmphasised.getElement(), OVER + "-" + location.toString().toLowerCase(), true);
}
use of com.vaadin.shared.ui.dd.VerticalDropLocation in project cuba by cuba-platform.
the class DefaultCssLayoutDropHandler method handleHTML5Drop.
@Override
protected void handleHTML5Drop(DragAndDropEvent event) {
CssLayoutTargetDetails details = (CssLayoutTargetDetails) event.getTargetDetails();
Component over = details.getOverComponent();
DDCssLayout layout = (DDCssLayout) details.getTarget();
int idx = (details).getOverIndex();
HorizontalDropLocation hl = details.getHorizontalDropLocation();
VerticalDropLocation vl = details.getVerticalDropLocation();
if (over == layout) {
if (vl == VerticalDropLocation.TOP || hl == HorizontalDropLocation.LEFT) {
idx = 0;
} else if (vl == VerticalDropLocation.BOTTOM || hl == HorizontalDropLocation.RIGHT) {
idx = -1;
}
} else {
if (vl == VerticalDropLocation.BOTTOM || hl == HorizontalDropLocation.RIGHT) {
idx++;
}
}
if (idx >= 0 && idx < layout.getComponentCount()) {
layout.addComponent(resolveComponentFromHTML5Drop(event), idx);
} else {
layout.addComponent(resolveComponentFromHTML5Drop(event));
}
}
use of com.vaadin.shared.ui.dd.VerticalDropLocation in project cuba by cuba-platform.
the class DefaultFormLayoutDropHandler method handleComponentReordering.
/*
* (non-Javadoc)
*
* @see
* com.haulmont.cuba.web.widgets.addons.dragdroplayouts.drophandlers.AbstractDefaultLayoutDropHandler
* #handleComponentReordering(com.vaadin.event.dd.DragAndDropEvent)
*/
@Override
protected void handleComponentReordering(DragAndDropEvent event) {
LayoutBoundTransferable transferable = (LayoutBoundTransferable) event.getTransferable();
FormLayoutTargetDetails details = (FormLayoutTargetDetails) event.getTargetDetails();
DDFormLayout layout = (DDFormLayout) details.getTarget();
Component comp = transferable.getComponent();
int idx = details.getOverIndex();
int oldIdx = layout.getComponentIndex(comp);
if (idx == oldIdx) {
// Dropping on myself
return;
}
// Detach
layout.removeComponent(comp);
if (idx > 0 && idx > oldIdx) {
idx--;
}
// Increase index if component is dropped after or above a previous
// component
VerticalDropLocation loc = details.getDropLocation();
if (loc == VerticalDropLocation.MIDDLE || loc == VerticalDropLocation.BOTTOM) {
idx++;
}
// Add component
if (idx >= 0) {
layout.addComponent(comp, idx);
} else {
layout.addComponent(comp);
}
// Add component alignment if given
if (dropAlignment != null) {
layout.setComponentAlignment(comp, dropAlignment);
}
}
use of com.vaadin.shared.ui.dd.VerticalDropLocation in project cuba by cuba-platform.
the class DefaultFormLayoutDropHandler method handleDropFromLayout.
/*
* (non-Javadoc)
*
* @see
* com.haulmont.cuba.web.widgets.addons.dragdroplayouts.drophandlers.AbstractDefaultLayoutDropHandler
* #handleDropFromLayout(com.vaadin.event.dd.DragAndDropEvent)
*/
@Override
protected void handleDropFromLayout(DragAndDropEvent event) {
LayoutBoundTransferable transferable = (LayoutBoundTransferable) event.getTransferable();
FormLayoutTargetDetails details = (FormLayoutTargetDetails) event.getTargetDetails();
AbstractOrderedLayout layout = (AbstractOrderedLayout) details.getTarget();
Component source = event.getTransferable().getSourceComponent();
int idx = details.getOverIndex();
Component comp = transferable.getComponent();
// Check that we are not dragging an outer layout into an inner
// layout
Component parent = layout.getParent();
while (parent != null) {
if (parent == comp) {
return;
}
parent = parent.getParent();
}
// Detach from old source
if (source instanceof ComponentContainer) {
((ComponentContainer) source).removeComponent(comp);
} else if (source instanceof SingleComponentContainer) {
((SingleComponentContainer) source).setContent(null);
}
// Increase index if component is dropped after or above a
// previous
// component
VerticalDropLocation loc = (details).getDropLocation();
if (loc == VerticalDropLocation.MIDDLE || loc == VerticalDropLocation.BOTTOM) {
idx++;
}
// Add component
if (idx >= 0) {
layout.addComponent(comp, idx);
} else {
layout.addComponent(comp);
}
// Add component alignment if given
if (dropAlignment != null) {
layout.setComponentAlignment(comp, dropAlignment);
}
}
use of com.vaadin.shared.ui.dd.VerticalDropLocation in project cuba by cuba-platform.
the class DefaultVerticalLayoutDropHandler method handleHTML5Drop.
@Override
protected void handleHTML5Drop(DragAndDropEvent event) {
VerticalLayoutTargetDetails details = (VerticalLayoutTargetDetails) event.getTargetDetails();
AbstractOrderedLayout layout = (AbstractOrderedLayout) details.getTarget();
int idx = (details).getOverIndex();
// Increase index if component is dropped after or above a
// previous
// component
VerticalDropLocation loc = (details).getDropLocation();
if (loc == VerticalDropLocation.MIDDLE || loc == VerticalDropLocation.BOTTOM) {
idx++;
}
Component comp = resolveComponentFromHTML5Drop(event);
// Add component
if (idx >= 0) {
layout.addComponent(comp, idx);
} else {
layout.addComponent(comp);
}
// Add component alignment if given
if (dropAlignment != null) {
layout.setComponentAlignment(comp, dropAlignment);
}
}
Aggregations