    001// Copyright (c) 2011. The Apache Software Foundation
    002//
    003// Licensed under the Apache License, Version 2.0 (the "License");
    004// you may not use this file except in compliance with the License.
    005// You may obtain a copy of the License at
    006//
    007//     http://www.apache.org/licenses/LICENSE-2.0
    008//
    009// Unless required by applicable law or agreed to in writing, software
    010// distributed under the License is distributed on an "AS IS" BASIS,
    011// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    012// See the License for the specific language governing permissions and
    013// limitations under the License.
    014
    015package org.apache.tapestry5.corelib.mixins;
    016
    017import org.apache.tapestry5.BindingConstants;
    018import org.apache.tapestry5.ClientElement;
    019import org.apache.tapestry5.Field;
    020import org.apache.tapestry5.FieldFocusPriority;
    021import org.apache.tapestry5.annotations.AfterRender;
    022import org.apache.tapestry5.annotations.Environmental;
    023import org.apache.tapestry5.annotations.InjectContainer;
    024import org.apache.tapestry5.annotations.Parameter;
    025import org.apache.tapestry5.corelib.components.Form;
    026import org.apache.tapestry5.ioc.annotations.Inject;
    027import org.apache.tapestry5.services.javascript.JavaScriptSupport;
    028import org.slf4j.Logger;
    029
    030/**
    031 * A mixin that instruments the outer {@link org.apache.tapestry5.corelib.components.Form} on which
    032 * component the focus should be activated.
    033 * <p/>
    034 * This is meant to be used only with {@link org.apache.tapestry5.corelib.components.Form} component.
    035 *
    036 * @since 5.3
    037 * @deprecated As of release 5.4, replaced by {@link org.apache.tapestry5.corelib.mixins.OverrideFieldFocus}
    038 * @tapestrydoc
    039 */
    040@Deprecated
    041public class FormFieldFocus
    042{
    043    @Inject
    044    private Logger logger;
    045
    046    /**
    047     * The outer Form
    048     */
    049    @InjectContainer
    050    private Form form;
    051
    052    /**
    053     * The {@link org.apache.tapestry5.Field} instance that will receive the focus within
    054     * the {@link org.apache.tapestry5.corelib.components.Form}.
    055     */
    056    @Parameter(required = true, defaultPrefix = BindingConstants.COMPONENT, allowNull = false)
    057    private Field focusField;
    058
    059    @Environmental
    060    private JavaScriptSupport javascriptSupport;
    061
    062
    063    @AfterRender
    064    void focusField()
    065    {
    066        javascriptSupport.autofocus(FieldFocusPriority.OVERRIDE, focusField.getClientId());
    067
    068        logger.trace("Focus OVERRIDE done on field {}", focusField.getClientId());
    069    }
    070
    071}