1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_forms.hxx"
26*b1cdbd2cSJim Jagielski #include "richtextunowrapper.hxx"
27*b1cdbd2cSJim Jagielski 
28*b1cdbd2cSJim Jagielski /** === begin UNO includes === **/
29*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XNameContainer.hpp>
30*b1cdbd2cSJim Jagielski /** === end UNO includes === **/
31*b1cdbd2cSJim Jagielski #include <editeng/unofored.hxx>
32*b1cdbd2cSJim Jagielski #include <editeng/editview.hxx>
33*b1cdbd2cSJim Jagielski #include <editeng/unoipset.hxx>
34*b1cdbd2cSJim Jagielski #include <svx/svdpool.hxx>
35*b1cdbd2cSJim Jagielski #include <svx/svdobj.hxx>
36*b1cdbd2cSJim Jagielski #include <editeng/unoprnms.hxx>
37*b1cdbd2cSJim Jagielski 
38*b1cdbd2cSJim Jagielski //........................................................................
39*b1cdbd2cSJim Jagielski namespace frm
40*b1cdbd2cSJim Jagielski {
41*b1cdbd2cSJim Jagielski //........................................................................
42*b1cdbd2cSJim Jagielski 
43*b1cdbd2cSJim Jagielski     using namespace ::com::sun::star::uno;
44*b1cdbd2cSJim Jagielski     using namespace ::com::sun::star::lang;
45*b1cdbd2cSJim Jagielski     using namespace ::com::sun::star::beans;
46*b1cdbd2cSJim Jagielski     using namespace ::com::sun::star::container;
47*b1cdbd2cSJim Jagielski 
48*b1cdbd2cSJim Jagielski     //====================================================================
49*b1cdbd2cSJim Jagielski     namespace
50*b1cdbd2cSJim Jagielski     {
getTextEnginePropertySet()51*b1cdbd2cSJim Jagielski         const SvxItemPropertySet* getTextEnginePropertySet()
52*b1cdbd2cSJim Jagielski         {
53*b1cdbd2cSJim Jagielski             // Propertymap fuer einen Outliner Text
54*b1cdbd2cSJim Jagielski             static const SfxItemPropertyMapEntry aTextEnginePropertyMap[] =
55*b1cdbd2cSJim Jagielski             {
56*b1cdbd2cSJim Jagielski                 SVX_UNOEDIT_CHAR_PROPERTIES,
57*b1cdbd2cSJim Jagielski                 SVX_UNOEDIT_FONT_PROPERTIES,
58*b1cdbd2cSJim Jagielski                 SVX_UNOEDIT_PARA_PROPERTIES,
59*b1cdbd2cSJim Jagielski                 { MAP_CHAR_LEN("TextUserDefinedAttributes"), EE_CHAR_XMLATTRIBS, &::getCppuType( static_cast< const Reference< XNameContainer >* >( NULL ) ), 0, 0 },
60*b1cdbd2cSJim Jagielski                 { MAP_CHAR_LEN("ParaUserDefinedAttributes"), EE_PARA_XMLATTRIBS, &::getCppuType( static_cast< const Reference< XNameContainer >* >( NULL ) ), 0, 0 },
61*b1cdbd2cSJim Jagielski                 { NULL, 0, 0, NULL, 0, 0 }
62*b1cdbd2cSJim Jagielski             };
63*b1cdbd2cSJim Jagielski             static SvxItemPropertySet aTextEnginePropertySet( aTextEnginePropertyMap, SdrObject::GetGlobalDrawObjectItemPool() );
64*b1cdbd2cSJim Jagielski             return &aTextEnginePropertySet;
65*b1cdbd2cSJim Jagielski         }
66*b1cdbd2cSJim Jagielski     }
67*b1cdbd2cSJim Jagielski 
68*b1cdbd2cSJim Jagielski     //====================================================================
69*b1cdbd2cSJim Jagielski 	//= ORichTextUnoWrapper
70*b1cdbd2cSJim Jagielski 	//====================================================================
71*b1cdbd2cSJim Jagielski 	//--------------------------------------------------------------------
ORichTextUnoWrapper(EditEngine & _rEngine,IEngineTextChangeListener * _pTextChangeListener)72*b1cdbd2cSJim Jagielski     ORichTextUnoWrapper::ORichTextUnoWrapper( EditEngine& _rEngine, IEngineTextChangeListener* _pTextChangeListener )
73*b1cdbd2cSJim Jagielski         :SvxUnoText( getTextEnginePropertySet() )
74*b1cdbd2cSJim Jagielski     {
75*b1cdbd2cSJim Jagielski         SetEditSource( new RichTextEditSource( _rEngine, _pTextChangeListener ) );
76*b1cdbd2cSJim Jagielski     }
77*b1cdbd2cSJim Jagielski 
78*b1cdbd2cSJim Jagielski 	//--------------------------------------------------------------------
~ORichTextUnoWrapper()79*b1cdbd2cSJim Jagielski     ORichTextUnoWrapper::~ORichTextUnoWrapper() throw()
80*b1cdbd2cSJim Jagielski     {
81*b1cdbd2cSJim Jagielski     }
82*b1cdbd2cSJim Jagielski 
83*b1cdbd2cSJim Jagielski     //====================================================================
84*b1cdbd2cSJim Jagielski 	//= RichTextEditSource
85*b1cdbd2cSJim Jagielski 	//====================================================================
86*b1cdbd2cSJim Jagielski 	//--------------------------------------------------------------------
RichTextEditSource(EditEngine & _rEngine,IEngineTextChangeListener * _pTextChangeListener)87*b1cdbd2cSJim Jagielski     RichTextEditSource::RichTextEditSource( EditEngine& _rEngine, IEngineTextChangeListener* _pTextChangeListener )
88*b1cdbd2cSJim Jagielski         :m_rEngine              ( _rEngine                               )
89*b1cdbd2cSJim Jagielski         ,m_pTextForwarder       ( new SvxEditEngineForwarder( _rEngine ) )
90*b1cdbd2cSJim Jagielski         ,m_pTextChangeListener  ( _pTextChangeListener                   )
91*b1cdbd2cSJim Jagielski     {
92*b1cdbd2cSJim Jagielski     }
93*b1cdbd2cSJim Jagielski 
94*b1cdbd2cSJim Jagielski 	//--------------------------------------------------------------------
~RichTextEditSource()95*b1cdbd2cSJim Jagielski     RichTextEditSource::~RichTextEditSource()
96*b1cdbd2cSJim Jagielski     {
97*b1cdbd2cSJim Jagielski         delete m_pTextForwarder;
98*b1cdbd2cSJim Jagielski     }
99*b1cdbd2cSJim Jagielski 
100*b1cdbd2cSJim Jagielski 	//--------------------------------------------------------------------
Clone() const101*b1cdbd2cSJim Jagielski     SvxEditSource* RichTextEditSource::Clone() const
102*b1cdbd2cSJim Jagielski     {
103*b1cdbd2cSJim Jagielski         return new RichTextEditSource( m_rEngine, m_pTextChangeListener );
104*b1cdbd2cSJim Jagielski     }
105*b1cdbd2cSJim Jagielski 
106*b1cdbd2cSJim Jagielski 	//--------------------------------------------------------------------
GetTextForwarder()107*b1cdbd2cSJim Jagielski     SvxTextForwarder* RichTextEditSource::GetTextForwarder()
108*b1cdbd2cSJim Jagielski     {
109*b1cdbd2cSJim Jagielski         return m_pTextForwarder;
110*b1cdbd2cSJim Jagielski     }
111*b1cdbd2cSJim Jagielski 
112*b1cdbd2cSJim Jagielski 	//--------------------------------------------------------------------
UpdateData()113*b1cdbd2cSJim Jagielski     void RichTextEditSource::UpdateData()
114*b1cdbd2cSJim Jagielski     {
115*b1cdbd2cSJim Jagielski         // this means that the content of the EditEngine changed via the UNO API
116*b1cdbd2cSJim Jagielski         // to reflect this in the views, we need to update them
117*b1cdbd2cSJim Jagielski         sal_uInt16 viewCount = m_rEngine.GetViewCount();
118*b1cdbd2cSJim Jagielski         for ( sal_uInt16 view = 0; view < viewCount; ++view )
119*b1cdbd2cSJim Jagielski         {
120*b1cdbd2cSJim Jagielski             EditView* pView = m_rEngine.GetView( view );
121*b1cdbd2cSJim Jagielski             if ( pView )
122*b1cdbd2cSJim Jagielski                 pView->ForceUpdate();
123*b1cdbd2cSJim Jagielski         }
124*b1cdbd2cSJim Jagielski 
125*b1cdbd2cSJim Jagielski         if ( m_pTextChangeListener )
126*b1cdbd2cSJim Jagielski             m_pTextChangeListener->potentialTextChange();
127*b1cdbd2cSJim Jagielski     }
128*b1cdbd2cSJim Jagielski 
129*b1cdbd2cSJim Jagielski //........................................................................
130*b1cdbd2cSJim Jagielski }  // namespace frm
131*b1cdbd2cSJim Jagielski //........................................................................
132*b1cdbd2cSJim Jagielski 
133