001// Licensed under the Apache License, Version 2.0 (the "License");
002// you may not use this file except in compliance with the License.
003// You may obtain a copy of the License at
004//
005//     http://www.apache.org/licenses/LICENSE-2.0
006//
007// Unless required by applicable law or agreed to in writing, software
008// distributed under the License is distributed on an "AS IS" BASIS,
009// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
010// See the License for the specific language governing permissions and
011// limitations under the License.
012
013package org.apache.tapestry5.services;
014
015import org.apache.tapestry5.dom.Element;
016import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
017
018/**
019 * Provides some assistance in determining <em>where</em> to place a hidden field based on standard (X)HTML elements.
020 *
021 * The service works based on a mapped service contribution; keys are the element names, values area {@link
022 * org.apache.tapestry5.services.RelativeElementPosition}.
023 */
024@UsesMappedConfiguration(RelativeElementPosition.class)
025public interface HiddenFieldLocationRules
026{
027    /**
028     * Checks the element to see if a hidden field may be placed inside the element.
029     */
030    boolean placeHiddenFieldInside(Element element);
031
032    /**
033     * Checks the element to see if a hidden field may be placed after the element (as a sibling element).
034     */
035    boolean placeHiddenFieldAfter(Element element);
036}