1. DRAG&DROP CON WICKET DnD [Santi Caltabiano]
--------------------------------------------------------------------------------
--------------------------------------------------
Libreria: wicket-dnd
--------------------------------------------------------------------------------
--------------------------------------------------
- https://code.google.com/p/wicket-dnd/
Wicket DnD per wicket 1.5 e 1.6
- https://github.com/svenmeier/wicket-dnd
Wicket DnD per wicket 1.7
> https://github.com/svenmeier/wicket-dnd
--------------------------------------------------------------------------------
--------------------------------------------------
HTML: Homepage.html
--------------------------------------------------------------------------------
--------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<html>
<head>
<title>osanet</title>
</head>
<body>
<wicket:extend>
<table wicket:id="container01" style="background: red;">
<tr style="background: green;">
<td><span wicket:id="label01">CCC</span></td>
</tr>
<tr>
<td>BBBB</td>
</tr>
<tr style="background: yellow;">
<td><span wicket:id="label02">CCC</span></td>
</tr>
</table>
</wicket:extend>
</body>
</html>
--------------------------------------------------------------------------------
--------------------------------------------------
Homepage.java
--------------------------------------------------------------------------------
--------------------------------------------------
/*
* HomePage.java
*
* Created on 3 settembre 2008, 14.46
*/
2. package com.osanet.pages.secured;
import com.osanet.application.annotations.SecuredPage;
import com.osanet.pages.templates.TemplatePageWithMenubar;
import static com.osanet.application.log.Log.appLog;
import com.osanet.application.log.Log;
import com.osanet.components.Label;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.WebMarkupContainer;
import wicketdnd.DragSource;
import wicketdnd.DropTarget;
import wicketdnd.Location;
import wicketdnd.Operation;
import wicketdnd.Reject;
import wicketdnd.Transfer;
import wicketdnd.theme.HumanTheme;
import wicketdnd.theme.WindowsTheme;
/**
* Homepage per l'utente standard
* @author Santino
*/
@SecuredPage
public class HomePage extends TemplatePageWithMenubar {
private WebMarkupContainer container01;
private Label label01;
private Label label02;
public HomePage() {
// Container contenente i componenti interessati dal D&D
container01=new WebMarkupContainer("container01");
container01.setOutputMarkupId(true);
add(container01);
// Tema per il drag&drop
container01.add(new HumanTheme());
// Oggetto per la gestione dei drag. Operazioni previste: move e copy
DragSource dragSource=new DragSource(Operation.MOVE, Operation.COPY){
@Override
public void onAfterDrop(AjaxRequestTarget target, Transfer transfer)
{
System.out.println("After Drop");
}
@Override
public void onBeforeDrop(Component drag, Transfer transfer) throws
Reject {
System.out.println("Before Drop");
}
};
container01.add(dragSource);
// Il tag da trascinare è di tipo span
dragSource.drag("span");
// Container per la gestione dei drop. Operazioni consentite: move e copy
DropTarget dropTarget=new DropTarget(Operation.MOVE, Operation.COPY){
3. @Override
public void onDrop(AjaxRequestTarget target, Transfer transfer,
Location location) throws Reject {
System.out.println("XXXXX03:"+location.getModel().toString());
}
};
container01.add(dropTarget);
// Il interessato dal drop è di tipo span
dropTarget.dropCenter("span");
// Oggetto interessato dal D&D
label01=new Label("label01","AAAAA");
label01.setOutputMarkupId(true);
container01.add(label01);
// Oggetto interessato dal D&D
label02=new Label("label02","CCCCC");
label02.setOutputMarkupId(true);
container01.add(label02);
}
}