/**************************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 *************************************************************/


#ifndef __com_sun_star_xforms_Binding_idl__
#define __com_sun_star_xforms_Binding_idl__

#ifndef __com_sun_star_uno_XInterface_idl__
#include <com/sun/star/uno/XInterface.idl>
#endif

#ifndef __com_sun_star_form_binding_ValueBinding_idl__
#include <com/sun/star/form/binding/ValueBinding.idl>
#endif

#ifndef __com_sun_star_form_binding_ListEntrySource_idl__
#include <com/sun/star/form/binding/ListEntrySource.idl>
#endif

#ifndef __com_sun_star_form_validation_XValidator_idl__
#include <com/sun/star/form/validation/XValidator.idl>
#endif

//=============================================================================

module com {  module sun {  module star {  module xforms {

interface XSubmission;

//=============================================================================

/** represent a binding to one or more nodes in the DOM tree of an <type>XModel</type>.
 */
service Binding
{
    /** allows the binding to act as value supplier for a form component

    @see com::sun::star::form::binding::BindableControlModel
    */
    service com::sun::star::form::binding::ValueBinding;

    /** allows external instances to observe the value represented by the binding

        <p>This interface is an optional part of the
        <type scope="com::sun::star::form::binding">ValueBinding</type> servce, but loses
        its optionality here.</p>
    */
    interface com::sun::star::util::XModifyBroadcaster;

    /** allows the binding to act as source for list entries of form controls

        <p>If a binding is associated with more than one node in a DOM tree, it
        does not represent a single value, but a list of values. Using this interface,
        this list can be displayed in form control list and combo boxes.</p>
    */
    service com::sun::star::form::binding::ListEntrySource;

    /** allows the binding to act as validator for a form component

    @see com::sun::star::form::binding::ValidatableControlModel
    */
    interface com::sun::star::form::validation::XValidator;
};

//=============================================================================

}; }; }; };

/*=============================================================================

=============================================================================*/
#endif
