Package org.wicketstuff.jwicket.demo

Source Code of org.wicketstuff.jwicket.demo.DraggableAndDroppableElement$DraggableAndDroppableBox

package org.wicketstuff.jwicket.demo;


import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.wicketstuff.jwicket.SpecialKeys;
import org.wicketstuff.jwicket.tooltip.WTooltip;
import org.wicketstuff.jwicket.ui.dragdrop.*;
import org.wicketstuff.jwicket.ui.effect.Pulsate;


public class DraggableAndDroppableElement extends GenericPanel<String> {

    private static final long serialVersionUID = 1L;

    protected final Label l;
    private DraggableAndDroppableBox draggable;
    private final DraggableBehavior dragger;
    private final DroppableBehavior dropper;

    private final Pulsate effect;

    public DraggableAndDroppableElement(final String id) {
        this(id, new Model<String>("Drag me!"), null);
    }

    public DraggableAndDroppableElement(final String id, final IModel<String> model,
                                        final DraggablesAcceptedByDroppable accepted) {
        super(id, model);

        dragger = new DraggableBehavior();
        dragger.setRevert(DraggableBehavior.DragRevertMode.ALWAYS);
        dragger.setDistance(20);
        dragger.setWantOnDragStartNotification(true);
        dragger.setOpacity(0.99);
        dragger.setWantOnDragStopNotification(true);
        dragger.setName("one");


        dropper = new DroppableBehavior();
        dropper.setHoverClass("hoverClass");
        dropper.setActiveClass("activeClass");
        dropper.setTolerance(DroppableBehavior.DropTolerance.TOUCH);
        if (accepted != null)
            dropper.setDraggablesAcceptedByDroppable(accepted);

        effect = new Pulsate();
        effect.setTimes(2);
        effect.setSpeed(250);
        add(effect);


        WTooltip toolTip = new WTooltip("You may drag one of the droppable elements on this page into this rectangle. Otherwise you can drag this rectangle itself and drop it somewhere.").setCssClass("toolTip");


        draggable = new DraggableAndDroppableBox("draggableAndDroppable", model);
        draggable.add(toolTip);
        draggable.add(dragger);
        draggable.add(dropper);

        draggable.add(l = new Label("theModel", model));
        l.setOutputMarkupId(true);
        add(draggable);


        setRenderBodyOnly(true);
    }


    private class DraggableAndDroppableBox extends WebMarkupContainer implements IDraggable, IDroppable {

        private boolean dropped = false;

        public DraggableAndDroppableBox(String id, IModel<?> model) {
            super(id, model);
        }

        private static final long serialVersionUID = 1L;

        @Override
        public void onDragStop(final AjaxRequestTarget target, final SpecialKeys specialKeys) {
            setModelObject("Drag me!");
            target.add(l);
        }

        @Override
        public void onDragStart(final AjaxRequestTarget target, final SpecialKeys specialKeys) {
            setModelObject("dragging...");
            target.add(l);
        }

        @Override
        public void onDrag(final AjaxRequestTarget target, final SpecialKeys specialKeys) {
        }

        @Override
        public void onDrop(final AjaxRequestTarget target, final Component draggedComponent, final SpecialKeys specialKeys) {
            setModelObject("You dropped '" + draggedComponent.getId() + "' into me!");
            target.add(l);
            dropped = true;
            effect.fire(target, draggable);
        }

        @Override
        public void onActivate(final AjaxRequestTarget target, final Component draggedComponent, final SpecialKeys specialKeys) {
            setModelObject("Drop '" + ((draggedComponent == null) ? "<null>" : draggedComponent.getId()) + "' into me!");
            target.add(l);
            dropped = false;
        }

        @Override
        public void onDeactivate(final AjaxRequestTarget target, final Component draggedComponent, final SpecialKeys specialKeys) {
            if (!dropped) {
                setModelObject("Drag me!");
                target.add(l);
            }
        }
    }

    public void disableDraggable(final AjaxRequestTarget target) {
        dragger.disable(target);
    }

    public void enableDraggable(final AjaxRequestTarget target) {
        dragger.enable(target);
    }

    public void disableDroppable(final AjaxRequestTarget target) {
        dropper.disable(target);
    }

    public void enableDroppable(final AjaxRequestTarget target) {
        dropper.enable(target);
    }
}
TOP

Related Classes of org.wicketstuff.jwicket.demo.DraggableAndDroppableElement$DraggableAndDroppableBox

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.