de.webplatz.addons.NavbarScrollToAnchorAjaxLink.java Source code

Java tutorial

Introduction

Here is the source code for de.webplatz.addons.NavbarScrollToAnchorAjaxLink.java

Source

/**
 * MIT License.
 */
package de.webplatz.addons;

import de.agilecoders.wicket.core.markup.html.bootstrap.navbar.NavbarAjaxLink;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.model.IModel;

/**
 * NavbarScrollToAnchorAjaxLink.
 * Ajax link that scrolls onclick to given anchor.
 *
 * @param <T> Type of link, p.e. String.
 * @author Christian Senkowski (cs@e-cs.co)
 * @version $Id$
 * @since 31.07.15
 */
@SuppressWarnings("unused")
public class NavbarScrollToAnchorAjaxLink<T> extends NavbarAjaxLink<T> {
    /**
     * Serial Version UID.
     */
    private static final long serialVersionUID = -8827197347714921011L;
    /**
     * Anchor name.
     */
    private String anchor;

    /**
     * Construct with markup id, label and anchor name.
     *
     * @param label Label.
     * @param anchor Anchor which to scroll to.
     */
    public NavbarScrollToAnchorAjaxLink(final IModel<String> label, final String anchor) {
        super(label);
        this.anchor = anchor;
    }

    /**
     * Overriden onclick.
     * Adds javaScript to the request target which scrolls to the anchor.
     *
     * @param target Request target where to add the scroll.
     */
    @Override
    public final void onClick(final AjaxRequestTarget target) {
        target.prependJavaScript(String.format("%1s%2$s%3$s", "$('html,body').animate({scrollTop: $(\"a[name='",
                this.anchor, "']\").offset().top - 50}, 'slow');"));
    }

    /**
     * Get anchor.
     *
     * @return Anchor.
     */
    public final String getAnchor() {
        return this.anchor;
    }

    /**
     * Set anchor.
     *
     * @param value Anchor.
     */
    public final void setAnchor(final String value) {
        this.anchor = value;
    }

}