esempio drag&drop [wicket dnd][sc]
TRANSCRIPT
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 */
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 */@SecuredPagepublic 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){
@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); }
}