Package org.wicketstuff.jwicket.demo

Source Code of org.wicketstuff.jwicket.demo.DraggableElement$DraggableLink

package org.wicketstuff.jwicket.demo;


import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.wicketstuff.jwicket.CssCursor;
import org.wicketstuff.jwicket.CssPosition;
import org.wicketstuff.jwicket.SpecialKeys;
import org.wicketstuff.jwicket.tooltip.WalterZornTips;
import org.wicketstuff.jwicket.ui.dragdrop.DraggableBehavior;
import org.wicketstuff.jwicket.ui.dragdrop.IDraggable;
import org.wicketstuff.jwicket.ui.effect.Explode;
import org.wicketstuff.jwicket.ui.effect.Puff;


public class DraggableElement extends GenericPanel<String> {

    private static final long serialVersionUID = 1L;

    private final DraggableLink draggable;
    private final Label l;

    private final Puff effects;
    private final Explode explode;
    private final DraggableBehavior dragger;

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

    public DraggableElement(final String id, final IModel<String> model) {
        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");

        dragger
                .setCursor(CssCursor.MOVE)
                .setCursorAt(CssPosition.BOTTOM, 125, CssPosition.RIGHT, 200)
                .setGrid(20, 20)
                .setOpacity(10.50)
                .setSnap(true)
                .setScrollSpeed(200)

        ;

        effects = new Puff();
        effects.setPercen(70);
        effects.setSpeed(1200);
        add(effects);


        explode = new Explode();
        explode.setPieces(16);
        explode.setSpeed(1500);
        explode.setFadeInAfter(500);
        add(explode);

        WalterZornTips tooltip = new WalterZornTips("This rectangle is draggable!")
                .setShadow(true);


        draggable = new DraggableLink("draggableLink", model);
        draggable.add(tooltip);
        draggable.add(dragger);
        draggable.setOutputMarkupId(true);

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


        addOrReplace(draggable);


        //setRenderBodyOnly(true);
    }


    private class DraggableLink extends AjaxFallbackLink<String> implements IDraggable {
        private static final long serialVersionUID = 1L;

        private boolean ignoreClick = false;

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

        @Override
        public void onClick(final AjaxRequestTarget target) {
            if (!ignoreClick) {
                effects.fire(target, draggable);
            }
        }

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

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

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


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


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


    public void test(final AjaxRequestTarget target) {
        target.add(draggable);
        dragger.setCursor(target, CssCursor.MOVE);
        dragger.setCursorAt(target, CssPosition.BOTTOM, 125, CssPosition.RIGHT, 200);
        dragger.setGrid(target, 150, 150);
        dragger.setOpacity(target, 0.3);
        dragger.setRevert(target, DraggableBehavior.DragRevertMode.INVALID);
        dragger.setSnap(target, true);
        dragger.updateBehavior(target);
    }
}
TOP

Related Classes of org.wicketstuff.jwicket.demo.DraggableElement$DraggableLink

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.