forked from amazingfate/loongoffice
117 lines
5.6 KiB
Plaintext
117 lines
5.6 KiB
Plaintext
/*************************************************************************
|
|
*
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* Copyright 2000, 2010 Oracle and/or its affiliates.
|
|
*
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
|
*
|
|
* This file is part of OpenOffice.org.
|
|
*
|
|
* OpenOffice.org is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Lesser General Public License version 3
|
|
* only, as published by the Free Software Foundation.
|
|
*
|
|
* OpenOffice.org 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 Lesser General Public License version 3 for more details
|
|
* (a copy is included in the LICENSE file that accompanied this code).
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
* version 3 along with OpenOffice.org. If not, see
|
|
* <http://www.openoffice.org/license.html>
|
|
* for a copy of the LGPLv3 License.
|
|
*
|
|
************************************************************************/
|
|
#ifndef __com_sun_star_form_component_DatabaseImageControl_idl__
|
|
#define __com_sun_star_form_component_DatabaseImageControl_idl__
|
|
|
|
#include <com/sun/star/awt/UnoControlImageControlModel.idl>
|
|
|
|
#include <com/sun/star/form/DataAwareControlModel.idl>
|
|
|
|
#include <com/sun/star/form/XImageProducerSupplier.idl>
|
|
|
|
|
|
//=============================================================================
|
|
|
|
module com { module sun { module star { module form { module component {
|
|
|
|
//=============================================================================
|
|
|
|
/** specifies the model of a control used for displaying images stored in a database.
|
|
|
|
<p>As every <type scope="com::sun::star::form">DataAwareControlModel</type>, an image control
|
|
can be bound to a database field. This means that for instance with every record change, the content
|
|
of the database field is taken, interpreted as image, and displayed in the control.<br/>
|
|
Unlike other more text-based controls, it does not interpret the content of the field as text or double,
|
|
but as binary stream (see <member scope="com::sun::star::sdb">XColumn::getBinaryStream</member>).</p>
|
|
|
|
<p>Usually, an image control model can be bound to binary columns only, namely
|
|
<member scope="com::sun::star::sdbc">DataType::BINARY</member>,
|
|
<member scope="com::sun::star::sdbc">DataType::VARBINARY</member>,
|
|
<member scope="com::sun::star::sdbc">DataType::LONGVARBINARY</member>,
|
|
<member scope="com::sun::star::sdbc">DataType::OTHER</member>,
|
|
<member scope="com::sun::star::sdbc">DataType::LONGVARCHAR</member></p>
|
|
|
|
<p/>
|
|
|
|
<p>Note that besides taking the image to be displayed from the bound field, there is another option. The
|
|
<member scope="com::sun::star::awt">UnoControlImageControlModel::ImageURL</member> property specifies
|
|
the URL of an image to be displayed. If this property is changed from outside, the respective file
|
|
is loaded and set as image source.</p>
|
|
|
|
<p>In a usual data form, the scenario will be as follows:
|
|
<ul><li>There is a DatabaseImageControl as part of the document model, which acts as
|
|
control model for an <type scope="com::sun::star::form::control">ImageControl</type>.</li>
|
|
|
|
<li>The control is an <type scope="com::sun::star::awt">XImageConsumer</type> for the
|
|
<type scope="com::sun::star::awt">XImageProducer</type> supplied by the model.</li>
|
|
|
|
<li>Whenever the form's cursor is positioned on a new record, the column the control
|
|
model is bound to is examined for a binary data stream. This stream is set as source
|
|
at the image producer, which notifies it's consumers, which leads to the control
|
|
displaying the image.</li>
|
|
|
|
<li>When the user by some interaction tells the control to contain a new image, this is
|
|
exchanged by URL. For example, implementations of the control service may allow the user
|
|
to browse for image. After this, the URL of the image is set as
|
|
<member scope="com::sun::star::awt">UnoControlImageControlModel::ImageURL</member>
|
|
property at the model.<br/>
|
|
Now the control loads the image determined by the property value, and starts producing
|
|
a new data stream, which is displayed by the control (which is a consumer for this stream).<br/>
|
|
From now on, the control and thus the database record counts as modified. If the cursor of the
|
|
form is moved further, the modified record is saved, means the content of the image pointed to
|
|
by <member scope="com::sun::star::awt">UnoControlImageControlModel::ImageURL</member>
|
|
is saved into the column.</li>
|
|
</ul>
|
|
</p>
|
|
*/
|
|
published service DatabaseImageControl
|
|
{
|
|
service com::sun::star::awt::UnoControlImageControlModel;
|
|
|
|
service com::sun::star::form::DataAwareControlModel;
|
|
|
|
/** supplies the caller with an <type scope="com::sun::star::awt">XImageProducer</type>.
|
|
|
|
<p>Other components can register as <type scope="com::sun::star::awt">XImageConsumer</type>
|
|
at this producer. Then they will be notified of any change in the image to be displayed.</p>
|
|
*/
|
|
interface com::sun::star::form::XImageProducerSupplier;
|
|
|
|
//-------------------------------------------------------------------------
|
|
|
|
/** indicates if it is possible to change the image being displayed.
|
|
*/
|
|
[property] boolean ReadOnly;
|
|
|
|
};
|
|
|
|
//=============================================================================
|
|
|
|
}; }; }; }; };
|
|
|
|
#endif
|