Browse Source

Unified naming

Added javadoc + comments about missing javadoc


svn changeset:11455/svn branch:6.3_dd
tags/6.7.0.beta1
Artur Signell 14 years ago
parent
commit
25cffa55df
39 changed files with 382 additions and 239 deletions
  1. 8
    3
      src/com/vaadin/event/Transferable.java
  2. 10
    5
      src/com/vaadin/event/TransferableImpl.java
  3. 14
    6
      src/com/vaadin/event/dd/DragAndDropEvent.java
  4. 12
    3
      src/com/vaadin/event/dd/DragSource.java
  5. 6
    0
      src/com/vaadin/event/dd/DropHandler.java
  6. 10
    11
      src/com/vaadin/event/dd/DropTarget.java
  7. 6
    0
      src/com/vaadin/event/dd/DropTargetDetails.java
  8. 6
    0
      src/com/vaadin/event/dd/DropTargetDetailsImpl.java
  9. 6
    0
      src/com/vaadin/event/dd/acceptCriteria/AcceptAll.java
  10. 6
    0
      src/com/vaadin/event/dd/acceptCriteria/AcceptCriterion.java
  11. 7
    16
      src/com/vaadin/event/dd/acceptCriteria/And.java
  12. 1
    1
      src/com/vaadin/event/dd/acceptCriteria/ClientCriterion.java
  13. 37
    25
      src/com/vaadin/event/dd/acceptCriteria/ClientSideCriterion.java
  14. 15
    9
      src/com/vaadin/event/dd/acceptCriteria/ContainsDataFlavor.java
  15. 10
    3
      src/com/vaadin/event/dd/acceptCriteria/DropTargetDetailEquals.java
  16. 10
    4
      src/com/vaadin/event/dd/acceptCriteria/IsDataBound.java
  17. 11
    4
      src/com/vaadin/event/dd/acceptCriteria/IsDragSource.java
  18. 8
    2
      src/com/vaadin/event/dd/acceptCriteria/IsSameSourceAndTarget.java
  19. 6
    0
      src/com/vaadin/event/dd/acceptCriteria/Not.java
  20. 3
    1
      src/com/vaadin/event/dd/acceptCriteria/Or.java
  21. 0
    41
      src/com/vaadin/event/dd/acceptCriteria/OverTreeNode.java
  22. 6
    5
      src/com/vaadin/event/dd/acceptCriteria/ServerSideCriterion.java
  23. 2
    2
      src/com/vaadin/terminal/gwt/client/ui/dd/VContainsDataFlavor.java
  24. 6
    4
      src/com/vaadin/terminal/gwt/client/ui/dd/VIsDragSource.java
  25. 1
    1
      src/com/vaadin/terminal/gwt/client/ui/dd/VTransferable.java
  26. 1
    1
      src/com/vaadin/terminal/gwt/server/DragAndDropService.java
  27. 44
    14
      src/com/vaadin/ui/AbstractSelect.java
  28. 1
    1
      src/com/vaadin/ui/DragAndDropWrapper.java
  29. 3
    3
      src/com/vaadin/ui/DragDropPane.java
  30. 2
    2
      src/com/vaadin/ui/Table.java
  31. 88
    36
      src/com/vaadin/ui/Tree.java
  32. 1
    1
      tests/src/com/vaadin/tests/dd/AcceptAnythingWindow.java
  33. 1
    1
      tests/src/com/vaadin/tests/dd/CustomDDImplementation.java
  34. 5
    5
      tests/src/com/vaadin/tests/dd/DDTest1.java
  35. 16
    16
      tests/src/com/vaadin/tests/dd/DDTest2.java
  36. 5
    5
      tests/src/com/vaadin/tests/dd/DDTest4.java
  37. 2
    2
      tests/src/com/vaadin/tests/dd/DDTest5.java
  38. 5
    5
      tests/src/com/vaadin/tests/dd/HorizontalLayoutSortableWithWrappers.java
  39. 1
    1
      tests/src/com/vaadin/tests/dd/HorizontalSortableCssLayoutWithWrappers.java

+ 8
- 3
src/com/vaadin/event/Transferable.java View File

@@ -4,13 +4,18 @@ import java.util.Collection;

import com.vaadin.ui.Component;

/**
* TODO Javadoc!
*
* @since 6.3
*/
public interface Transferable {

public Object getData(String dataFlawor);
public Object getData(String dataFlavor);

public void setData(String dataFlawor, Object value);
public void setData(String dataFlavor, Object value);

public Collection<String> getDataFlawors();
public Collection<String> getDataFlavors();

/**
* @return the component that created the Transferable

+ 10
- 5
src/com/vaadin/event/TransferableImpl.java View File

@@ -6,6 +6,11 @@ import java.util.Map;

import com.vaadin.ui.Component;

/**
* TODO Javadoc!
*
* @since 6.3
*/
public class TransferableImpl implements Transferable {
private Map<String, Object> rawVariables = new HashMap<String, Object>();
private Component sourceComponent;
@@ -20,15 +25,15 @@ public class TransferableImpl implements Transferable {
return sourceComponent;
}

public Object getData(String dataFlawor) {
return rawVariables.get(dataFlawor);
public Object getData(String dataFlavor) {
return rawVariables.get(dataFlavor);
}

public void setData(String dataFlawor, Object value) {
rawVariables.put(dataFlawor, value);
public void setData(String dataFlavor, Object value) {
rawVariables.put(dataFlavor, value);
}

public Collection<String> getDataFlawors() {
public Collection<String> getDataFlavors() {
return rawVariables.keySet();
}


+ 14
- 6
src/com/vaadin/event/dd/DragAndDropEvent.java View File

@@ -4,21 +4,29 @@ import java.io.Serializable;

import com.vaadin.event.Transferable;

/**
* TODO Javadoc
*
* @since 6.3
*
*/
public class DragAndDropEvent implements Serializable {
private static final long serialVersionUID = -2232591107911385564L;
private Transferable transferable;
private DropTargetDetails dropDetails;
private DropTargetDetails dropTargetDetails;

public DragAndDropEvent(Transferable tr, DropTargetDetails details) {
transferable = tr;
dropDetails = details;
public DragAndDropEvent(Transferable transferable,
DropTargetDetails dropTargetDetails) {
this.transferable = transferable;
this.dropTargetDetails = dropTargetDetails;
}

public Transferable getTransferable() {
return transferable;
}

public DropTargetDetails getDropTargetData() {
return dropDetails;
public DropTargetDetails getDropTargetDetails() {
return dropTargetDetails;
}

}

+ 12
- 3
src/com/vaadin/event/dd/DragSource.java View File

@@ -5,19 +5,28 @@ import java.util.Map;

import com.vaadin.event.Transferable;

/**
* TODO Javadoc
*
* @since 6.3
*
*/
public interface DragSource extends Serializable {

/**
* DragSource may convert client side variables to meaningful values on
* server side. For example in Selects we convert item identifiers to
* generated string keys for the client side. Translators in Selects should
* convert them back to item identifiers.
* server side. For example Tree converts item identifiers to generated
* string keys for the client side. Translators in Selects should convert
* them back to item identifiers.
*
* <p>
* Translator should remove variables it handled from rawVariables. All non
* handled variables are added to Transferable automatically by terminal.
* </p>
*
* <p>
*
* @since 6.3
* @param rawVariables
* @return the drag source related transferable
*/

+ 6
- 0
src/com/vaadin/event/dd/DropHandler.java View File

@@ -5,6 +5,12 @@ import java.io.Serializable;
import com.vaadin.event.dd.acceptCriteria.AcceptAll;
import com.vaadin.event.dd.acceptCriteria.AcceptCriterion;

/**
* TODO Javadoc
*
* @since 6.3
*
*/
public interface DropHandler extends Serializable {

public void drop(DragAndDropEvent dropEvent);

+ 10
- 11
src/com/vaadin/event/dd/DropTarget.java View File

@@ -5,30 +5,29 @@ import java.util.Map;
import com.vaadin.ui.Component;

/**
* DropTarget is a marker interface for components supporting drop operations. A
* DropTarget is an interface for components supporting drop operations. A
* component that wants to receive drop events should implement this interface
* and provide a DropHandler which will handle the actual drop event.
*
* @since 6.3
*/
public interface DropTarget extends Component {

public DropHandler getDropHandler();

/**
* Called before a drop operation to translate the drop data provided by the
* client widget. Should return a DropData implementation with the new
* values. If null is returned the terminal implementation will
* automatically create a {@link DropTargetDetails} with all the client
* variables.
* <p>
* If this method returns null the data from client side will be passed
* through as-is without conversion.
* Called before a drop operation to translate the drop target details
* provided by the client widget (drop target). Should return a DropData
* implementation with the new values. If null is returned the terminal
* implementation will automatically create a {@link DropTargetDetails} with
* all the client variables.
*
* @param rawVariables
* Parameters passed from the client side widget.
* @return A DropData object with the translated data or null.
* @return A DropTargetDetails object with the translated data or null to
* use a default implementation.
*/
public DropTargetDetails translateDragDropDetails(
public DropTargetDetails translateDropTargetDetails(
Map<String, Object> clientVariables);

}

+ 6
- 0
src/com/vaadin/event/dd/DropTargetDetails.java View File

@@ -2,6 +2,12 @@ package com.vaadin.event.dd;

import java.io.Serializable;

/**
* TODO Javadoc
*
* @since 6.3
*
*/
public interface DropTargetDetails extends Serializable {

public Object getData(String key);

+ 6
- 0
src/com/vaadin/event/dd/DropTargetDetailsImpl.java View File

@@ -5,6 +5,12 @@ import java.util.Map;

import com.vaadin.terminal.gwt.server.DragAndDropService;

/**
* TODO Javadoc
*
* @since 6.3
*
*/
public class DropTargetDetailsImpl implements DropTargetDetails {

private HashMap<String, Object> data = new HashMap<String, Object>();

+ 6
- 0
src/com/vaadin/event/dd/acceptCriteria/AcceptAll.java View File

@@ -6,6 +6,12 @@ package com.vaadin.event.dd.acceptCriteria;
import com.vaadin.event.dd.DragAndDropEvent;
import com.vaadin.terminal.gwt.client.ui.dd.VAcceptAll;

/**
* Criterion that accepts all drops anywhere on the component.
*
* @since 6.3
*
*/
@ClientCriterion(VAcceptAll.class)
public final class AcceptAll extends ClientSideCriterion {


+ 6
- 0
src/com/vaadin/event/dd/acceptCriteria/AcceptCriterion.java View File

@@ -11,6 +11,12 @@ import com.vaadin.event.dd.DropHandler;
import com.vaadin.terminal.PaintException;
import com.vaadin.terminal.PaintTarget;

/**
* TODO Javadoc
*
* @since 6.3
*
*/
public interface AcceptCriterion extends Serializable {

/**

+ 7
- 16
src/com/vaadin/event/dd/acceptCriteria/And.java View File

@@ -8,15 +8,15 @@ import com.vaadin.terminal.PaintException;
import com.vaadin.terminal.PaintTarget;

/**
* TODO consider replacing this with Union
* Criterion that joins two {@link ClientSideCriterion} together and validates
* if both sub criterion validate.
*
* @since 6.3
*
*/
@ClientCriterion(com.vaadin.terminal.gwt.client.ui.dd.VAnd.class)
public class And extends ClientSideCriterion {
/**
*
*/
private static final long serialVersionUID = 1L;

private AcceptCriterion f1;
private AcceptCriterion f2;

@@ -25,20 +25,11 @@ public class And extends ClientSideCriterion {
this.f2 = f2;
}

// @Override
// public boolean isClientSideVerifiable() {
// boolean a1 = f1 instanceof AcceptCriterion ? (f1)
// .isClientSideVerifiable() : false;
// boolean a2 = f2 instanceof AcceptCriterion ? (f2)
// .isClientSideVerifiable() : false;
// return a1 && a2;
// }

@Override
public void paintContent(PaintTarget target) throws PaintException {
super.paintContent(target);
(f1).paint(target);
(f2).paint(target);
f1.paint(target);
f2.paint(target);
}

public boolean accepts(DragAndDropEvent dragEvent) {

+ 1
- 1
src/com/vaadin/event/dd/acceptCriteria/ClientCriterion.java View File

@@ -10,7 +10,7 @@ import com.vaadin.terminal.gwt.client.ui.dd.VAcceptCriterion;
/**
* TODO
*
* @since 6.2
* @since 6.3
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)

+ 37
- 25
src/com/vaadin/event/dd/acceptCriteria/ClientSideCriterion.java View File

@@ -5,34 +5,46 @@ import java.io.Serializable;
import com.vaadin.terminal.PaintException;
import com.vaadin.terminal.PaintTarget;

/**
* Parent class for criteria that can be completely validated on client side.
* All classes that provide criteria that can be completely validated on client
* side should extend this class.
*
* @since 6.3
*/
public abstract class ClientSideCriterion implements Serializable,
AcceptCriterion {
AcceptCriterion {

/**
/*
* All criteria that extend this must be completely validatable on client
* side.
*
* (non-Javadoc)
*
* @see
* com.vaadin.event.dd.acceptCriteria.AcceptCriterion#isClientSideVerifiable
* ()
*/
private static final long serialVersionUID = 1L;

public final boolean isClientSideVerifiable() {
return true;
}

public void paint(PaintTarget target) throws PaintException {
target.startTag("-ac");
target.addAttribute("name", getIdentifier());
paintContent(target);
target.endTag("-ac");
}

public void paintContent(PaintTarget target) throws PaintException {
}

protected String getIdentifier() {
return getClass().getCanonicalName();
}

public final void paintResponse(PaintTarget target) throws PaintException {
// NOP, nothing to do as this is client side verified criterion
}
public final boolean isClientSideVerifiable() {
return true;
}

public void paint(PaintTarget target) throws PaintException {
target.startTag("-ac");
target.addAttribute("name", getIdentifier());
paintContent(target);
target.endTag("-ac");
}

protected void paintContent(PaintTarget target) throws PaintException {
}

protected String getIdentifier() {
return getClass().getCanonicalName();
}

public final void paintResponse(PaintTarget target) throws PaintException {
// NOP, nothing to do as this is client side verified criterion
}

}

src/com/vaadin/event/dd/acceptCriteria/ContainsDataFlawor.java → src/com/vaadin/event/dd/acceptCriteria/ContainsDataFlavor.java View File

@@ -6,12 +6,18 @@ package com.vaadin.event.dd.acceptCriteria;
import com.vaadin.event.dd.DragAndDropEvent;
import com.vaadin.terminal.PaintException;
import com.vaadin.terminal.PaintTarget;
import com.vaadin.terminal.gwt.client.ui.dd.VContainsDataFlawor;
import com.vaadin.terminal.gwt.client.ui.dd.VContainsDataFlavor;

@ClientCriterion(VContainsDataFlawor.class)
public final class ContainsDataFlawor extends ClientSideCriterion {
/**
* TODO Javadoc!
*
* @since 6.3
*
*/
@ClientCriterion(VContainsDataFlavor.class)
public final class ContainsDataFlavor extends ClientSideCriterion {

private String dataFlaworId;
private String dataFlavorId;

/**
* TODO should support basic UIDL data types
@@ -19,18 +25,18 @@ public final class ContainsDataFlawor extends ClientSideCriterion {
* @param dataFlawor
* @param value
*/
public ContainsDataFlawor(String dataFlawor) {
dataFlaworId = dataFlawor;
public ContainsDataFlavor(String dataFlawor) {
dataFlavorId = dataFlawor;
}

@Override
public void paintContent(PaintTarget target) throws PaintException {
super.paintContent(target);
target.addAttribute("p", dataFlaworId);
target.addAttribute("p", dataFlavorId);
}

public boolean accepts(DragAndDropEvent dragEvent) {
return dragEvent.getTransferable().getDataFlawors().contains(
dataFlaworId);
return dragEvent.getTransferable().getDataFlavors().contains(
dataFlavorId);
}
}

src/com/vaadin/event/dd/acceptCriteria/DropDetailEquals.java → src/com/vaadin/event/dd/acceptCriteria/DropTargetDetailEquals.java View File

@@ -8,8 +8,15 @@ import com.vaadin.terminal.PaintException;
import com.vaadin.terminal.PaintTarget;
import com.vaadin.terminal.gwt.client.ui.dd.VDropDetailEquals;

/**
* Criteria for checking if drop target details contain the specific property
* with the specific value.
*
* @since 6.3
*
*/
@ClientCriterion(VDropDetailEquals.class)
public final class DropDetailEquals extends ClientSideCriterion {
public final class DropTargetDetailEquals extends ClientSideCriterion {

private String propertyName;
private String value;
@@ -20,7 +27,7 @@ public final class DropDetailEquals extends ClientSideCriterion {
* @param propertyName
* @param value
*/
public DropDetailEquals(String propertyName, String value) {
public DropTargetDetailEquals(String propertyName, String value) {
this.propertyName = propertyName;
this.value = value;
}
@@ -33,7 +40,7 @@ public final class DropDetailEquals extends ClientSideCriterion {
}

public boolean accepts(DragAndDropEvent dragEvent) {
Object data = dragEvent.getDropTargetData().getData(propertyName);
Object data = dragEvent.getDropTargetDetails().getData(propertyName);
return value.equals(data);
}
}

src/com/vaadin/event/dd/acceptCriteria/IsDatabound.java → src/com/vaadin/event/dd/acceptCriteria/IsDataBound.java View File

@@ -7,14 +7,20 @@ import com.vaadin.event.DataBoundTransferable;
import com.vaadin.event.dd.DragAndDropEvent;
import com.vaadin.terminal.gwt.client.ui.dd.VDataBound;

/**
* TODO Javadoc
*
* @since 6.3
*
*/
@ClientCriterion(VDataBound.class)
public final class IsDatabound extends ClientSideCriterion {
private static IsDatabound singleton = new IsDatabound();
public final class IsDataBound extends ClientSideCriterion {
private static IsDataBound singleton = new IsDataBound();

private IsDatabound() {
private IsDataBound() {
}

public static IsDatabound get() {
public static IsDataBound get() {
return singleton;
}


src/com/vaadin/event/dd/acceptCriteria/ComponentFilter.java → src/com/vaadin/event/dd/acceptCriteria/IsDragSource.java View File

@@ -7,14 +7,21 @@ import com.vaadin.event.TransferableImpl;
import com.vaadin.event.dd.DragAndDropEvent;
import com.vaadin.terminal.PaintException;
import com.vaadin.terminal.PaintTarget;
import com.vaadin.terminal.gwt.client.ui.dd.VComponentFilter;
import com.vaadin.terminal.gwt.client.ui.dd.VIsDragSource;
import com.vaadin.ui.Component;

@ClientCriterion(VComponentFilter.class)
public class ComponentFilter extends ClientSideCriterion {
/**
* Client side criteria that checks if the drag source is one of the given
* components.
*
* @since 6.3
*/
@ClientCriterion(VIsDragSource.class)
public class IsDragSource extends ClientSideCriterion {

private Component[] component;

public ComponentFilter(Component... component) {
public IsDragSource(Component... component) {
this.component = component;
}


src/com/vaadin/event/dd/acceptCriteria/SourceIsSameAsTarget.java → src/com/vaadin/event/dd/acceptCriteria/IsSameSourceAndTarget.java View File

@@ -9,14 +9,20 @@ import com.vaadin.event.dd.DropTarget;
import com.vaadin.terminal.gwt.client.ui.dd.VSourceIsSameAsTarget;
import com.vaadin.ui.Component;

/**
* TODO Javadoc
*
* @since 6.3
*
*/
@ClientCriterion(VSourceIsSameAsTarget.class)
public class SourceIsSameAsTarget extends ClientSideCriterion {
public class IsSameSourceAndTarget extends ClientSideCriterion {

public boolean accepts(DragAndDropEvent dragEvent) {
if (dragEvent.getTransferable() instanceof TransferableImpl) {
Component sourceComponent = ((TransferableImpl) dragEvent
.getTransferable()).getSourceComponent();
DropTarget target = dragEvent.getDropTargetData().getTarget();
DropTarget target = dragEvent.getDropTargetDetails().getTarget();
return sourceComponent == target;
}


+ 6
- 0
src/com/vaadin/event/dd/acceptCriteria/Not.java View File

@@ -8,6 +8,12 @@ import com.vaadin.terminal.PaintException;
import com.vaadin.terminal.PaintTarget;
import com.vaadin.terminal.gwt.client.ui.dd.VNot;

/**
* TODO Javadoc
*
* @since 6.3
*
*/
@ClientCriterion(VNot.class)
public class Not extends ClientSideCriterion {


+ 3
- 1
src/com/vaadin/event/dd/acceptCriteria/Or.java View File

@@ -9,7 +9,9 @@ import com.vaadin.terminal.PaintTarget;
import com.vaadin.terminal.gwt.client.ui.dd.VOr;

/**
* TODO consider replacing this with intersection
* TODO Javadoc
*
* @since 6.3
*
*/
@ClientCriterion(VOr.class)

+ 0
- 41
src/com/vaadin/event/dd/acceptCriteria/OverTreeNode.java View File

@@ -1,41 +0,0 @@
/**
*
*/
package com.vaadin.event.dd.acceptCriteria;

import com.vaadin.event.dd.DragAndDropEvent;
import com.vaadin.terminal.gwt.client.ui.dd.VOverTreeNode;
import com.vaadin.ui.Tree;
import com.vaadin.ui.Tree.Location;
import com.vaadin.ui.Tree.TreeDropDetails;

/**
* Accepts transferable only on tree Node (middle of the node + can has child)
*
* TODO relocate close to {@link Tree} as this is tree specifif
*
*/
@ClientCriterion(VOverTreeNode.class)
public class OverTreeNode extends ClientSideCriterion {

private static final long serialVersionUID = 1L;

public boolean accepts(DragAndDropEvent dragEvent) {
try {
// must be over tree node and in the middle of it (not top or bottom
// part)
TreeDropDetails eventDetails = (TreeDropDetails) dragEvent
.getDropTargetData();

Object itemIdOver = eventDetails.getItemIdOver();
if (!eventDetails.getTarget().areChildrenAllowed(itemIdOver)) {
return false;
}

return eventDetails.getDropLocation() == Location.MIDDLE;
} catch (Exception e) {
return false;
}
}

}

+ 6
- 5
src/com/vaadin/event/dd/acceptCriteria/ServerSideCriterion.java View File

@@ -6,15 +6,16 @@ import com.vaadin.terminal.PaintException;
import com.vaadin.terminal.PaintTarget;
import com.vaadin.terminal.gwt.client.ui.dd.VServerAccept;

/**
* TODO Javadoc
*
* @since 6.3
*
*/
@ClientCriterion(VServerAccept.class)
public abstract class ServerSideCriterion implements Serializable,
AcceptCriterion {

/**
*
*/
private static final long serialVersionUID = 1L;

public final boolean isClientSideVerifiable() {
return false;
}

src/com/vaadin/terminal/gwt/client/ui/dd/VContainsDataFlawor.java → src/com/vaadin/terminal/gwt/client/ui/dd/VContainsDataFlavor.java View File

@@ -5,11 +5,11 @@ package com.vaadin.terminal.gwt.client.ui.dd;

import com.vaadin.terminal.gwt.client.UIDL;

final public class VContainsDataFlawor extends VAcceptCriterion {
final public class VContainsDataFlavor extends VAcceptCriterion {

@Override
public boolean validates(VDragEvent drag, UIDL configuration) {
String name = configuration.getStringAttribute("p");
return drag.getTransferable().getDataFlawors().contains(name);
return drag.getTransferable().getDataFlavors().contains(name);
}
}

src/com/vaadin/terminal/gwt/client/ui/dd/VComponentFilter.java → src/com/vaadin/terminal/gwt/client/ui/dd/VIsDragSource.java View File

@@ -1,12 +1,14 @@
/**
*
*/
package com.vaadin.terminal.gwt.client.ui.dd;

import com.vaadin.terminal.gwt.client.Paintable;
import com.vaadin.terminal.gwt.client.UIDL;

final public class VComponentFilter extends VAcceptCriterion {
/**
* TODO Javadoc!
*
* @since 6.3
*/
final public class VIsDragSource extends VAcceptCriterion {

@Override
public boolean validates(VDragEvent drag, UIDL configuration) {

+ 1
- 1
src/com/vaadin/terminal/gwt/client/ui/dd/VTransferable.java View File

@@ -50,7 +50,7 @@ public class VTransferable {
variables.put(dataFlawor, value);
}

public Collection<String> getDataFlawors() {
public Collection<String> getDataFlavors() {
return variables.keySet();
}


+ 1
- 1
src/com/vaadin/terminal/gwt/server/DragAndDropService.java View File

@@ -141,7 +141,7 @@ public class DragAndDropService implements VariableOwner {
.get("evt");

DropTargetDetails dropData = dropTarget
.translateDragDropDetails(rawDragDropDetails);
.translateDropTargetDetails(rawDragDropDetails);

if (dropData == null) {
// Create a default DragDropDetails with all the raw variables

+ 44
- 14
src/com/vaadin/ui/AbstractSelect.java View File

@@ -20,7 +20,6 @@ import com.vaadin.data.Item;
import com.vaadin.data.Property;
import com.vaadin.data.util.IndexedContainer;
import com.vaadin.event.DataBoundTransferable;
import com.vaadin.event.Transferable;
import com.vaadin.event.dd.DragAndDropEvent;
import com.vaadin.event.dd.DropTargetDetailsImpl;
import com.vaadin.event.dd.acceptCriteria.ClientCriterion;
@@ -1691,24 +1690,33 @@ public abstract class AbstractSelect extends AbstractField implements
}

/**
* Criterion for selects that support drop (Tree and Table). With this
* criterion drop is accepted on given identifier or set of identifiers.
* Criterion which accepts a drop only if the drop target is (one of) the
* given item identifier(s). Meaningful only for drop targets that extends
* AbstractSelect.
*
* @since 6.3
*/
@ClientCriterion(VIsOverId.class)
public static class IsOverId extends AbstractItemSetCriterion {
public static class DropTargetItemId extends AbstractItemSetCriterion {

public IsOverId(AbstractSelect select, Object... itemId) {
public DropTargetItemId(AbstractSelect select, Object... itemId) {
super(select, itemId);
}

public boolean accepts(DragAndDropEvent dragEvent) {
AbstractSelectDropDetails dropTargetData = (AbstractSelectDropDetails) dragEvent
.getDropTargetData();
AbstractSelectDropTargetDetails dropTargetData = (AbstractSelectDropTargetDetails) dragEvent
.getDropTargetDetails();
return itemIds.contains(dropTargetData.getItemIdOver());
}

}

/**
* TODO Javadoc!
*
* @since 6.3
*
*/
private static abstract class AbstractItemSetCriterion extends
ClientSideCriterion {
protected final Collection<Object> itemIds = new HashSet<Object>();
@@ -1738,13 +1746,17 @@ public abstract class AbstractSelect extends AbstractField implements
}

/**
* Criterion for selects that support drop (Tree and Table). With this
* criterion drop is accepted only if {@link Transferable} (from this
* {@link AbstractSelect}) contains given item identifier or identifiers.
* Criterion which accepts a drop only if the transferable contains the
* given item identifier(s). The item ids relate to the drag source
* (AbstractSelect).
*
* @since 6.3
*/
@ClientCriterion(VItemIdIs.class)
public static class ItemIdIs extends AbstractItemSetCriterion {
public ItemIdIs(AbstractSelect select, Object... itemId) {
public static class TransferableContainsItemId extends
AbstractItemSetCriterion {
public TransferableContainsItemId(AbstractSelect select,
Object... itemId) {
super(select, itemId);
}

@@ -1756,11 +1768,20 @@ public abstract class AbstractSelect extends AbstractField implements

}

public class AbstractSelectDropDetails extends DropTargetDetailsImpl {
/**
* TODO Javadoc!
*
* @since 6.3
*/
public class AbstractSelectDropTargetDetails extends DropTargetDetailsImpl {

private Object idOver;

AbstractSelectDropDetails(Map<String, Object> rawVariables) {
/**
* TODO Javadoc!
*
*/
AbstractSelectDropTargetDetails(Map<String, Object> rawVariables) {
super(rawVariables);
// eagar fetch itemid, mapper may be emptied
String keyover = (String) getData("itemIdOver");
@@ -1769,10 +1790,19 @@ public abstract class AbstractSelect extends AbstractField implements
}
}

/**
* TODO Javadoc!
*
*/
public Object getItemIdOver() {
return idOver;
}

/**
* TODO Javadoc!
*
* @since 6.3
*/
public Location getDropLocation() {
String s = (String) getData("detail");
if ("TOP".equals(s)) {

+ 1
- 1
src/com/vaadin/ui/DragAndDropWrapper.java View File

@@ -128,7 +128,7 @@ public class DragAndDropWrapper extends CustomComponent implements DropTarget,
requestRepaint();
}

public DropTargetDetails translateDragDropDetails(
public DropTargetDetails translateDropTargetDetails(
Map<String, Object> clientVariables) {
return new WrapperDropDetails(clientVariables);
}

+ 3
- 3
src/com/vaadin/ui/DragDropPane.java View File

@@ -74,10 +74,10 @@ public class DragDropPane extends AbsoluteLayout implements DropTarget {

public static class ImportPrettyMuchAnything implements DropHandler {
public void drop(DragAndDropEvent event) {
DragDropPane pane = (DragDropPane) event.getDropTargetData()
DragDropPane pane = (DragDropPane) event.getDropTargetDetails()
.getTarget();

DragEventDetails ed = (DragEventDetails) event.getDropTargetData();
DragEventDetails ed = (DragEventDetails) event.getDropTargetDetails();
Transferable transferable = event.getTransferable();
if (transferable instanceof TransferableImpl) {
TransferableImpl ctr = (TransferableImpl) transferable;
@@ -191,7 +191,7 @@ public class DragDropPane extends AbsoluteLayout implements DropTarget {

}

public DropTargetDetails translateDragDropDetails(
public DropTargetDetails translateDropTargetDetails(
Map<String, Object> clientVariables) {
return new DragEventDetails(clientVariables);
}

+ 2
- 2
src/com/vaadin/ui/Table.java View File

@@ -3364,8 +3364,8 @@ public class Table extends AbstractSelect implements Action.Container,
this.dropHandler = dropHandler;
}

public AbstractSelectDropDetails translateDragDropDetails(
public AbstractSelectDropTargetDetails translateDropTargetDetails(
Map<String, Object> clientVariables) {
return new AbstractSelectDropDetails(clientVariables);
return new AbstractSelectDropTargetDetails(clientVariables);
}
}

+ 88
- 36
src/com/vaadin/ui/Tree.java View File

@@ -33,6 +33,7 @@ import com.vaadin.event.dd.DragSource;
import com.vaadin.event.dd.DropHandler;
import com.vaadin.event.dd.DropTarget;
import com.vaadin.event.dd.acceptCriteria.ClientCriterion;
import com.vaadin.event.dd.acceptCriteria.ClientSideCriterion;
import com.vaadin.event.dd.acceptCriteria.ServerSideCriterion;
import com.vaadin.terminal.KeyMapper;
import com.vaadin.terminal.PaintException;
@@ -41,6 +42,7 @@ import com.vaadin.terminal.Resource;
import com.vaadin.terminal.gwt.client.MouseEventDetails;
import com.vaadin.terminal.gwt.client.ui.VTree;
import com.vaadin.terminal.gwt.client.ui.dd.VLazyInitItemIdentifiers;
import com.vaadin.terminal.gwt.client.ui.dd.VOverTreeNode;

/**
* Tree component. A Tree can be used to select an item (or multiple items) from
@@ -121,35 +123,6 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,

}

class TreeTransferable extends DataBoundTransferable {

public TreeTransferable(Component sourceComponent,
Map<String, Object> rawVariables) {
super(sourceComponent, rawVariables);
}

@Override
public Object getItemId() {
return getData("itemId");
}

@Override
public Object getPropertyId() {
return getItemCaptionPropertyId();
}
}

public Transferable getTransferable(Map<String, Object> payload) {
TreeTransferable transferable = new TreeTransferable(this, payload);
// updating drag source variables
Object object = payload.get("itemId");
if (object != null) {
transferable.setData("itemId", itemIdMapper.get((String) object));
}

return transferable;
}

/* Tree constructors */

/**
@@ -1146,9 +1119,14 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
TOP, BOTTOM, MIDDLE;
}

public class TreeDropDetails extends AbstractSelectDropDetails {
/**
* TODO Javadoc!
*
* @since 6.3
*/
public class TreeDropTargetDetails extends AbstractSelectDropTargetDetails {

TreeDropDetails(Map<String, Object> rawVariables) {
TreeDropTargetDetails(Map<String, Object> rawVariables) {
super(rawVariables);
}

@@ -1159,9 +1137,14 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,

}

public TreeDropDetails translateDragDropDetails(
/**
* TODO Javadoc!
*
* @since 6.3
*/
public TreeDropTargetDetails translateDropTargetDetails(
Map<String, Object> clientVariables) {
return new TreeDropDetails(clientVariables);
return new TreeDropTargetDetails(clientVariables);
}

/**
@@ -1174,6 +1157,45 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
return itemIdMapper.key(itemId);
}

/**
* TODO Javadoc!
*
* @since 6.3
*/
public class TreeTransferable extends DataBoundTransferable {

public TreeTransferable(Component sourceComponent,
Map<String, Object> rawVariables) {
super(sourceComponent, rawVariables);
}

@Override
public Object getItemId() {
return getData("itemId");
}

@Override
public Object getPropertyId() {
return getItemCaptionPropertyId();
}
}

/*
* (non-Javadoc)
*
* @see com.vaadin.event.dd.DragSource#getTransferable(java.util.Map)
*/
public Transferable getTransferable(Map<String, Object> payload) {
TreeTransferable transferable = new TreeTransferable(this, payload);
// updating drag source variables
Object object = payload.get("itemId");
if (object != null) {
transferable.setData("itemId", itemIdMapper.get((String) object));
}

return transferable;
}

/**
* An example of lazy initializing criterion. Initially pretty much no data
* is sent to client, on first accepts set (per drag request) the client
@@ -1209,9 +1231,9 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
* .event.dd.DragAndDropEvent)
*/
public boolean accepts(DragAndDropEvent dragEvent) {
AbstractSelectDropDetails dropTargetData = (AbstractSelectDropDetails) dragEvent
.getDropTargetData();
tree = (Tree) dragEvent.getDropTargetData().getTarget();
AbstractSelectDropTargetDetails dropTargetData = (AbstractSelectDropTargetDetails) dragEvent
.getDropTargetDetails();
tree = (Tree) dragEvent.getDropTargetDetails().getTarget();
allowedItemIds = getAllowedItemIds(dragEvent, tree);

return allowedItemIds.contains(dropTargetData.getItemIdOver());
@@ -1243,4 +1265,34 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,

}

/**
* Accepts transferable only on tree Node (middle of the node + can has
* child)
*
* @since 6.3
*/
@ClientCriterion(VOverTreeNode.class)
public static class OverTreeNode extends ClientSideCriterion {

private static final long serialVersionUID = 1L;

public boolean accepts(DragAndDropEvent dragEvent) {
try {
// must be over tree node and in the middle of it (not top or
// bottom part)
TreeDropTargetDetails eventDetails = (TreeDropTargetDetails) dragEvent
.getDropTargetDetails();

Object itemIdOver = eventDetails.getItemIdOver();
if (!eventDetails.getTarget().areChildrenAllowed(itemIdOver)) {
return false;
}

return eventDetails.getDropLocation() == Location.MIDDLE;
} catch (Exception e) {
return false;
}
}

}
}

+ 1
- 1
tests/src/com/vaadin/tests/dd/AcceptAnythingWindow.java View File

@@ -34,7 +34,7 @@ public class AcceptAnythingWindow extends Window {

public void drop(DragAndDropEvent event) {
WrapperDropDetails ed = (WrapperDropDetails) event
.getDropTargetData();
.getDropTargetDetails();
Transferable transferable = event.getTransferable();
TransferableImpl ctr = (TransferableImpl) transferable;
Component component = ctr.getSourceComponent();

+ 1
- 1
tests/src/com/vaadin/tests/dd/CustomDDImplementation.java View File

@@ -55,7 +55,7 @@ public class CustomDDImplementation extends CustomComponent {
};
}

public DropTargetDetails translateDragDropDetails(
public DropTargetDetails translateDropTargetDetails(
Map<String, Object> clientVariables) {
// If component has some special drop details that it needs to
// translate for server side use, developer must return a

+ 5
- 5
tests/src/com/vaadin/tests/dd/DDTest1.java View File

@@ -10,7 +10,7 @@ import com.vaadin.event.Transferable;
import com.vaadin.event.dd.DragAndDropEvent;
import com.vaadin.event.dd.DropHandler;
import com.vaadin.event.dd.acceptCriteria.AcceptCriterion;
import com.vaadin.event.dd.acceptCriteria.IsDatabound;
import com.vaadin.event.dd.acceptCriteria.IsDataBound;
import com.vaadin.event.dd.acceptCriteria.ServerSideCriterion;
import com.vaadin.terminal.ExternalResource;
import com.vaadin.tests.components.TestBase;
@@ -22,7 +22,7 @@ import com.vaadin.ui.Layout;
import com.vaadin.ui.Link;
import com.vaadin.ui.Table;
import com.vaadin.ui.Tree;
import com.vaadin.ui.AbstractSelect.AbstractSelectDropDetails;
import com.vaadin.ui.AbstractSelect.AbstractSelectDropTargetDetails;
import com.vaadin.ui.Table.DragModes;
import com.vaadin.ui.Tree.Location;

@@ -187,8 +187,8 @@ public class DDTest1 extends TestBase {
}

public void drop(DragAndDropEvent event) {
AbstractSelectDropDetails details = (AbstractSelectDropDetails) event
.getDropTargetData();
AbstractSelectDropTargetDetails details = (AbstractSelectDropTargetDetails) event
.getDropTargetDetails();
// TODO set properties, so same sorter could be used in Table
Transferable transferable = event.getTransferable();
if (transferable instanceof DataBoundTransferable) {
@@ -237,7 +237,7 @@ public class DDTest1 extends TestBase {

public AcceptCriterion getAcceptCriterion() {
// TODO should actually check that source is same as target
return IsDatabound.get();
return IsDataBound.get();
}

};

+ 16
- 16
tests/src/com/vaadin/tests/dd/DDTest2.java View File

@@ -13,10 +13,9 @@ import com.vaadin.event.dd.DragAndDropEvent;
import com.vaadin.event.dd.DropHandler;
import com.vaadin.event.dd.acceptCriteria.AcceptCriterion;
import com.vaadin.event.dd.acceptCriteria.And;
import com.vaadin.event.dd.acceptCriteria.ComponentFilter;
import com.vaadin.event.dd.acceptCriteria.IsDatabound;
import com.vaadin.event.dd.acceptCriteria.IsDragSource;
import com.vaadin.event.dd.acceptCriteria.IsDataBound;
import com.vaadin.event.dd.acceptCriteria.Or;
import com.vaadin.event.dd.acceptCriteria.OverTreeNode;
import com.vaadin.event.dd.acceptCriteria.ServerSideCriterion;
import com.vaadin.terminal.Resource;
import com.vaadin.terminal.ThemeResource;
@@ -26,8 +25,9 @@ import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Table;
import com.vaadin.ui.Tree;
import com.vaadin.ui.Window;
import com.vaadin.ui.AbstractSelect.AbstractSelectDropDetails;
import com.vaadin.ui.Tree.TreeDropDetails;
import com.vaadin.ui.AbstractSelect.AbstractSelectDropTargetDetails;
import com.vaadin.ui.Tree.OverTreeNode;
import com.vaadin.ui.Tree.TreeDropTargetDetails;

public class DDTest2 extends TestBase {

@@ -73,8 +73,8 @@ public class DDTest2 extends TestBase {
final AcceptCriterion crit = new ServerSideCriterion() {
public boolean accepts(DragAndDropEvent dragEvent) {

TreeDropDetails dropTargetData = (TreeDropDetails) dragEvent
.getDropTargetData();
TreeDropTargetDetails dropTargetData = (TreeDropTargetDetails) dragEvent
.getDropTargetDetails();

Object itemIdOver = dropTargetData.getItemIdOver();

@@ -94,8 +94,8 @@ public class DDTest2 extends TestBase {
data = "-no Text data flawor-";
}
tree3.addItem(data);
AbstractSelect.AbstractSelectDropDetails dropTargetData = (AbstractSelect.AbstractSelectDropDetails) dropEvent
.getDropTargetData();
AbstractSelect.AbstractSelectDropTargetDetails dropTargetData = (AbstractSelect.AbstractSelectDropTargetDetails) dropEvent
.getDropTargetDetails();
tree3.setParent(data, dropTargetData.getItemIdOver());

}
@@ -113,9 +113,9 @@ public class DDTest2 extends TestBase {
table.setDragMode(Table.DragModes.ROWS);

OverTreeNode onNode = new OverTreeNode();
ComponentFilter fromTable = new ComponentFilter(table);
IsDragSource fromTable = new IsDragSource(table);

ComponentFilter fromTree = new ComponentFilter(tree1);
IsDragSource fromTree = new IsDragSource(tree1);
final Or fromTree1OrTable = new Or(fromTable, fromTree);
final And and = new And(fromTree1OrTable, onNode);

@@ -153,8 +153,8 @@ public class DDTest2 extends TestBase {
* As we also accept only drops on folders, we know dropDetails
* is from Tree and it contains itemIdOver.
*/
AbstractSelectDropDetails details = (AbstractSelectDropDetails) event
.getDropTargetData();
AbstractSelectDropTargetDetails details = (AbstractSelectDropTargetDetails) event
.getDropTargetDetails();
Object idOver = details.getItemIdOver();
tree1.setParent(itemId, idOver);

@@ -178,8 +178,8 @@ public class DDTest2 extends TestBase {

dropHandler = new DropHandler() {
public void drop(DragAndDropEvent event) {
AbstractSelectDropDetails details = (AbstractSelectDropDetails) event
.getDropTargetData();
AbstractSelectDropTargetDetails details = (AbstractSelectDropTargetDetails) event
.getDropTargetDetails();
Transferable transferable = event.getTransferable();

if (transferable instanceof DataBoundTransferable) {
@@ -217,7 +217,7 @@ public class DDTest2 extends TestBase {
}

public AcceptCriterion getAcceptCriterion() {
return IsDatabound.get();
return IsDataBound.get();
}
};


+ 5
- 5
tests/src/com/vaadin/tests/dd/DDTest4.java View File

@@ -8,14 +8,14 @@ import com.vaadin.event.DataBoundTransferable;
import com.vaadin.event.dd.DragAndDropEvent;
import com.vaadin.event.dd.DropHandler;
import com.vaadin.event.dd.acceptCriteria.AcceptCriterion;
import com.vaadin.event.dd.acceptCriteria.ComponentFilter;
import com.vaadin.event.dd.acceptCriteria.IsDragSource;
import com.vaadin.terminal.ThemeResource;
import com.vaadin.tests.components.TestBase;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Table;
import com.vaadin.ui.Tree;
import com.vaadin.ui.Window;
import com.vaadin.ui.AbstractSelect.AbstractSelectDropDetails;
import com.vaadin.ui.AbstractSelect.AbstractSelectDropTargetDetails;
import com.vaadin.ui.Tree.Location;

public class DDTest4 extends TestBase {
@@ -50,15 +50,15 @@ public class DDTest4 extends TestBase {

table.setDropHandler(new DropHandler() {
// accept only drags from this table
AcceptCriterion crit = new ComponentFilter(table);
AcceptCriterion crit = new IsDragSource(table);

public AcceptCriterion getAcceptCriterion() {
return crit;
}

public void drop(DragAndDropEvent dropEvent) {
AbstractSelectDropDetails dropTargetData = (AbstractSelectDropDetails) dropEvent
.getDropTargetData();
AbstractSelectDropTargetDetails dropTargetData = (AbstractSelectDropTargetDetails) dropEvent
.getDropTargetDetails();
DataBoundTransferable transferable = (DataBoundTransferable) dropEvent
.getTransferable();
Object itemIdOver = dropTargetData.getItemIdOver();

+ 2
- 2
tests/src/com/vaadin/tests/dd/DDTest5.java View File

@@ -107,7 +107,7 @@ public class DDTest5 extends TestBase {
Component draggedComponent = transferable
.getDraggedComponent();

DropTarget target = dropEvent.getDropTargetData()
DropTarget target = dropEvent.getDropTargetDetails()
.getTarget();

WrappedLabel wrappedLabel = new WrappedLabel(
@@ -130,7 +130,7 @@ public class DDTest5 extends TestBase {
cssLayout.removeComponent(sourceComponent);
wrappedLabel = (WrappedLabel) sourceComponent;
}
if (dropEvent.getDropTargetData().getData(
if (dropEvent.getDropTargetDetails().getData(
"verticalLocation").equals("TOP")) {
// before reference if dropped on topmost part
i--;

+ 5
- 5
tests/src/com/vaadin/tests/dd/HorizontalLayoutSortableWithWrappers.java View File

@@ -10,9 +10,9 @@ import com.vaadin.event.dd.DropTarget;
import com.vaadin.event.dd.DropTargetDetails;
import com.vaadin.event.dd.acceptCriteria.AcceptCriterion;
import com.vaadin.event.dd.acceptCriteria.And;
import com.vaadin.event.dd.acceptCriteria.DropDetailEquals;
import com.vaadin.event.dd.acceptCriteria.DropTargetDetailEquals;
import com.vaadin.event.dd.acceptCriteria.Not;
import com.vaadin.event.dd.acceptCriteria.SourceIsSameAsTarget;
import com.vaadin.event.dd.acceptCriteria.IsSameSourceAndTarget;
import com.vaadin.ui.Component;
import com.vaadin.ui.DragAndDropWrapper;
import com.vaadin.ui.HorizontalLayout;
@@ -51,9 +51,9 @@ public class HorizontalLayoutSortableWithWrappers extends Window {
}

private DropHandler dh = new DropHandler() {
AcceptCriterion crit = new And(new DropDetailEquals(
AcceptCriterion crit = new And(new DropTargetDetailEquals(
"horizontalLocation", "LEFT"), new Not(
new SourceIsSameAsTarget()));
new IsSameSourceAndTarget()));

public AcceptCriterion getAcceptCriterion() {
return crit;
@@ -70,7 +70,7 @@ public class HorizontalLayoutSortableWithWrappers extends Window {
.getComponentIterator();
Component next = componentIterator.next();
DropTargetDetails dropTargetData = dropEvent
.getDropTargetData();
.getDropTargetDetails();
DropTarget target = dropTargetData.getTarget();
while (next != target) {
if (next != sourceComponent) {

+ 1
- 1
tests/src/com/vaadin/tests/dd/HorizontalSortableCssLayoutWithWrappers.java View File

@@ -63,7 +63,7 @@ public class HorizontalSortableCssLayoutWithWrappers extends Window {
.getComponentIterator();
Component next = componentIterator.next();
DropTargetDetails dropTargetData = dropEvent
.getDropTargetData();
.getDropTargetDetails();
DropTarget target = dropTargetData.getTarget();
while (next != target) {
if (next != sourceComponent) {

Loading…
Cancel
Save