/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
#ifndef __com_sun_star_form_binding_BindableControlModel_idl__
#define __com_sun_star_form_binding_BindableControlModel_idl__
#include Via this service, bindable control models inherit the
com::sun::star::util::XCloneable interface. When a BindableControlModel is bound to an external value,
then every change in the control model's value is immediately reflected
in the external binding. If the binding set via this interface supports the ValueBinding::ReadOnly
and ValueBinding::Relevant properties, they're respected by the control model:
If a bindable control model, at which a binding has been established (via
XBindableValue::setValueBinding()), is being cloned, then the
binding is also established at the clone. Effectively, this means that
both control model instances share the same binding instance.ReadOnly
property (if present) is kept in sync with the
binding's ReadOnly
property. That is, any control using the value
binding is read-only as long as the binding is.Enabled
property (if present) is kept in sync
with the binding's Relevant
property. That is, any control using
the value binding is disabled as long as the binding is not relevant.
In both cases, explicit changes of the model's property are ignored if they would relax
the restriction imposed by the binding.
For instance, if the binding declares its value to
be read-only (indicated by ValueBinding::ReadOnly being `TRUE`), then
any attempt to set the ReadOnly
property of the control model to `FALSE` will
fail. However, if the binding's value is not read-only, then the ReadOnly
property at the control model can be freely set.
The very same holds for the binding's ValueBinding::Relevant and the control
model's Enabled
properties.