A generic Drag&Drop framework for Wicket:
(see http://code.google.com/p/wicket-dnd for Wicket 1.4 and 1.5)
- operate on any markup element via selectors
- drag and drop between any Wicket components
- vertical, horizontal and hierarchical structured markup
- drag initiators (a.k.a. handles)
- common desktop metaphors with
MOVE
,COPY
andLINK
operations - transfer types
- themeable
- works in Firefox, Safari, Chrome, Opera
See our live examples on http://wicket-dnd-jquery.appspot.com (beware - very slow!).
You have to add a theme (build-in or your own) to your component you want to enable for DnD, e.g.
container.add(new WindowsTheme());
Enable a component as a source of drags:
container.add(new DragSource(Operation.MOVE) {
public void onAfterDrop(AjaxRequestTarget target, Transfer transfer) {
// remove transfer data
}
}.drag("tr"));
In this example only a MOVE operation is allowed. Drags are initiated on <tr>
tags.
Enable a component as a target for drops:
container.add(new DropTarget(Operation.MOVE, Operation.COPY) {
public void onDrop(AjaxRequestTarget target, Transfer transfer, Location location) {
// add transfer data
}
}.dropCenter("tr"));
In this example MOVE and COPY operations are allowed. Drops are performed on center of <tr>
tags,
the location holds a reference to the actual component and the anchor the transfer was dropped on.
Releases are available on Maven central and OSS Sonatype.
<dependency>
<groupId>com.github.svenmeier.wicket-dnd</groupId>
<artifactId>wicket-dnd</artifactId>
<version>0.6.2</version>
</dependency>
<dependency>
<groupId>com.github.svenmeier.wicket-dnd</groupId>
<artifactId>wicket-dnd</artifactId>
<version>0.7.3</version>
</dependency>
For snapshot releases you have to use the OSS Sonatype Snapshot repository:
<dependency>
<groupId>com.github.svenmeier.wicket-dnd</groupId>
<artifactId>wicket-dnd</artifactId>
<version>0.7.4-SNAPSHOT</version>
</dependency>
<repository>
<id>sonatype-snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>