com.servoy.j2db.server.headlessclient.dataui.ServoySubmitPagingNavigationIncrementLink.java Source code

Java tutorial

Introduction

Here is the source code for com.servoy.j2db.server.headlessclient.dataui.ServoySubmitPagingNavigationIncrementLink.java

Source

/*
 This file belongs to the Servoy development and deployment environment, Copyright (C) 1997-2010 Servoy BV
    
 This program is free software; you can redistribute it and/or modify it under
 the terms of the GNU Affero General Public License as published by the Free
 Software Foundation; either version 3 of the License, or (at your option) any
 later version.
    
 This program is distributed in the hope that it will be useful, but WITHOUT
 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
    
 You should have received a copy of the GNU Affero General Public License along
 with this program; if not, see http://www.gnu.org/licenses or write to the Free
 Software Foundation,Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
 */
package com.servoy.j2db.server.headlessclient.dataui;

import org.apache.wicket.Component;
import org.apache.wicket.Page;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.IFormSubmittingComponent;
import org.apache.wicket.markup.html.navigation.paging.IPageable;
import org.apache.wicket.markup.html.navigation.paging.PagingNavigationIncrementLink;
import org.apache.wicket.util.string.PrependingStringBuffer;

import com.servoy.j2db.server.headlessclient.ServoyForm;

/**
 * The none ajax paging increment link (>) of a {@link WebCellBasedView}
 * 
 * @author jcompagner
 */
public class ServoySubmitPagingNavigationIncrementLink extends PagingNavigationIncrementLink
        implements IFormSubmittingComponent {
    private static final long serialVersionUID = 1L;
    private Form form;

    /**
     * @param id
     * @param pageable
     * @param increment
     */
    public ServoySubmitPagingNavigationIncrementLink(String id, IPageable pageable, int increment) {
        super(id, pageable, increment);
    }

    /**
     * @see org.apache.wicket.markup.html.form.IFormSubmittingComponent#getDefaultFormProcessing()
     */
    public boolean getDefaultFormProcessing() {
        return true;
    }

    /**
     * @see org.apache.wicket.markup.html.form.IFormSubmittingComponent#getForm()
     */
    public Form getForm() {
        if (this.form != null) {
            return this.form;
        } else {
            return findParent(ServoyForm.class);
        }
    }

    /**
     * @see org.apache.wicket.markup.html.form.IFormSubmittingComponent#getInputName()
     */
    public String getInputName() {

        // TODO: This is a copy & paste from the FormComponent class. 
        String id = getId();
        final PrependingStringBuffer inputName = new PrependingStringBuffer(id.length());
        Component c = this;
        while (true) {
            inputName.prepend(id);
            c = c.getParent();
            if (c == null || (c instanceof Form && ((Form) c).isRootForm()) || c instanceof Page) {
                break;
            }
            inputName.prepend(Component.PATH_SEPARATOR);
            id = c.getId();
        }
        return inputName.toString();
    }

    /**
     * @see org.apache.wicket.markup.html.form.IFormSubmittingComponent#onSubmit()
     */
    public void onSubmit() {
        onClick();
    }

    /**
     * @inheritDoc
     * @see org.apache.wicket.Component#onComponentTag(org.apache.wicket.markup.ComponentTag)
     */
    @Override
    protected void onComponentTag(ComponentTag tag) {
        super.onComponentTag(tag);
        // If we're disabled
        if (!isLinkEnabled()) {
            disableLink(tag);
        } else {
            if (tag.getName().equalsIgnoreCase("a")) {
                tag.put("href", "#");
            }
            tag.put("onclick", getTriggerJavaScript());
        }
    }

    /**
     * The javascript which trigges this link.
     * 
     * TODO: This is a copy & paste from Button
     * 
     * @return The javascript
     */
    protected final String getTriggerJavaScript() {
        if (getForm() != null) {
            // find the root form - the one we are really going to submit
            ServoyForm root = (ServoyForm) getForm().getRootForm();
            StringBuffer sb = new StringBuffer(100);
            sb.append("var e=document.getElementById('");
            sb.append(root.getHiddenField());
            sb.append("'); e.name=\'");
            sb.append(getInputName());
            sb.append("'; e.value='x';");
            sb.append("var f=document.getElementById('");
            sb.append(root.getMarkupId());
            sb.append("');");
            if (true) {
                if (getForm() != root) {
                    sb.append("var ff=document.getElementById('");
                    sb.append(getForm().getMarkupId());
                    sb.append("');");
                } else {
                    sb.append("var ff=f;");
                }
                sb.append("if (ff.onsubmit != undefined) { if (ff.onsubmit()==false) return false; }");
            }
            sb.append("f.submit();e.value='';e.name='';return false;");
            return sb.toString();
        } else {
            return null;
        }
    }
}