1b3f79822SAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
3b3f79822SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4b3f79822SAndrew Rist * or more contributor license agreements. See the NOTICE file
5b3f79822SAndrew Rist * distributed with this work for additional information
6b3f79822SAndrew Rist * regarding copyright ownership. The ASF licenses this file
7b3f79822SAndrew Rist * to you under the Apache License, Version 2.0 (the
8b3f79822SAndrew Rist * "License"); you may not use this file except in compliance
9b3f79822SAndrew Rist * with the License. You may obtain a copy of the License at
10cdf0e10cSrcweir *
11b3f79822SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir *
13b3f79822SAndrew Rist * Unless required by applicable law or agreed to in writing,
14b3f79822SAndrew Rist * software distributed under the License is distributed on an
15b3f79822SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16b3f79822SAndrew Rist * KIND, either express or implied. See the License for the
17b3f79822SAndrew Rist * specific language governing permissions and limitations
18b3f79822SAndrew Rist * under the License.
19cdf0e10cSrcweir *
20b3f79822SAndrew Rist *************************************************************/
21b3f79822SAndrew Rist
22b3f79822SAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_sc.hxx"
26cdf0e10cSrcweir
27cdf0e10cSrcweir
28cdf0e10cSrcweir
29cdf0e10cSrcweir //------------------------------------------------------------------
30cdf0e10cSrcweir
31cdf0e10cSrcweir #define _TPHFEDIT_CXX
32cdf0e10cSrcweir #include "scitems.hxx"
33cdf0e10cSrcweir #include <editeng/eeitem.hxx>
34cdf0e10cSrcweir
35cdf0e10cSrcweir
36cdf0e10cSrcweir //CHINA001 #include <svx/chardlg.hxx>
37cdf0e10cSrcweir #include <editeng/editobj.hxx>
38cdf0e10cSrcweir #include <editeng/editstat.hxx>
39cdf0e10cSrcweir #include <editeng/editview.hxx>
40cdf0e10cSrcweir #include <editeng/flditem.hxx>
41cdf0e10cSrcweir #include <editeng/adjitem.hxx>
42cdf0e10cSrcweir #include <sfx2/basedlgs.hxx>
43cdf0e10cSrcweir #include <sfx2/objsh.hxx>
44cdf0e10cSrcweir #include <vcl/msgbox.hxx>
45cdf0e10cSrcweir #include <vcl/svapp.hxx>
46cdf0e10cSrcweir
47cdf0e10cSrcweir #include "tphfedit.hxx"
48cdf0e10cSrcweir #include "editutil.hxx"
49cdf0e10cSrcweir #include "global.hxx"
50cdf0e10cSrcweir #include "attrib.hxx"
51cdf0e10cSrcweir #include "patattr.hxx"
52cdf0e10cSrcweir #include "scresid.hxx"
53cdf0e10cSrcweir #include "sc.hrc"
54cdf0e10cSrcweir #include "globstr.hrc"
55cdf0e10cSrcweir #include "tabvwsh.hxx"
56cdf0e10cSrcweir #include "prevwsh.hxx"
57cdf0e10cSrcweir #include "hfedtdlg.hrc"
58cdf0e10cSrcweir //CHINA001 #include "textdlgs.hxx"
59cdf0e10cSrcweir #include "AccessibleEditObject.hxx"
60cdf0e10cSrcweir
61cdf0e10cSrcweir #include "scabstdlg.hxx" //CHINA001
62cdf0e10cSrcweir
63cdf0e10cSrcweir
64cdf0e10cSrcweir // STATIC DATA -----------------------------------------------------------
65cdf0e10cSrcweir static ScEditWindow* pActiveEdWnd = NULL;
66cdf0e10cSrcweir
GetScEditWindow()67cdf0e10cSrcweir ScEditWindow* GetScEditWindow ()
68cdf0e10cSrcweir {
69cdf0e10cSrcweir return pActiveEdWnd;
70cdf0e10cSrcweir }
71cdf0e10cSrcweir
72cdf0e10cSrcweir //CHINA001
73cdf0e10cSrcweir //CHINA001 static sal_uInt16 pPageRightHeaderRanges[] = { SID_SCATTR_PAGE_HEADERRIGHT,
74cdf0e10cSrcweir //CHINA001 SID_SCATTR_PAGE_HEADERRIGHT,
75cdf0e10cSrcweir //CHINA001 0 };
76cdf0e10cSrcweir //CHINA001
77cdf0e10cSrcweir //CHINA001 static sal_uInt16 pPageRightFooterRanges[] = { SID_SCATTR_PAGE_FOOTERRIGHT,
78cdf0e10cSrcweir //CHINA001 SID_SCATTR_PAGE_FOOTERRIGHT,
79cdf0e10cSrcweir //CHINA001 0 };
80cdf0e10cSrcweir //CHINA001
81cdf0e10cSrcweir //CHINA001 static sal_uInt16 pPageLeftHeaderRanges[] = { SID_SCATTR_PAGE_HEADERLEFT,
82cdf0e10cSrcweir //CHINA001 SID_SCATTR_PAGE_HEADERLEFT,
83cdf0e10cSrcweir //CHINA001 0 };
84cdf0e10cSrcweir //CHINA001
85cdf0e10cSrcweir //CHINA001 static sal_uInt16 pPageLeftFooterRanges[] = { SID_SCATTR_PAGE_FOOTERLEFT,
86cdf0e10cSrcweir //CHINA001 SID_SCATTR_PAGE_FOOTERLEFT,
87cdf0e10cSrcweir //CHINA001 0 };
88cdf0e10cSrcweir //CHINA001
89cdf0e10cSrcweir //CHINA001 static ScEditWindow* pActiveEdWnd = NULL;
90cdf0e10cSrcweir //CHINA001
91cdf0e10cSrcweir //CHINA001
92cdf0e10cSrcweir //CHINA001
93cdf0e10cSrcweir //CHINA001 //========================================================================
94cdf0e10cSrcweir //CHINA001 // class ScHFEditPage
95cdf0e10cSrcweir //CHINA001 //
96cdf0e10cSrcweir //CHINA001
97cdf0e10cSrcweir //CHINA001 ScHFEditPage::ScHFEditPage( Window* pParent,
98cdf0e10cSrcweir //CHINA001 sal_uInt16 nResId,
99cdf0e10cSrcweir //CHINA001 const SfxItemSet& rCoreAttrs,
100cdf0e10cSrcweir //CHINA001 sal_uInt16 nWhichId )
101cdf0e10cSrcweir //CHINA001
102cdf0e10cSrcweir //CHINA001 : SfxTabPage ( pParent, ScResId( nResId ), rCoreAttrs ),
103cdf0e10cSrcweir //CHINA001
104cdf0e10cSrcweir //CHINA001 aWndLeft ( this, ScResId( WND_LEFT ), Left ),
105cdf0e10cSrcweir //CHINA001 aWndCenter ( this, ScResId( WND_CENTER ), Center ),
106cdf0e10cSrcweir //CHINA001 aWndRight ( this, ScResId( WND_RIGHT ), Right ),
107cdf0e10cSrcweir //CHINA001 aFtLeft ( this, ScResId( FT_LEFT ) ),
108cdf0e10cSrcweir //CHINA001 aFtCenter ( this, ScResId( FT_CENTER ) ),
109cdf0e10cSrcweir //CHINA001 aFtRight ( this, ScResId( FT_RIGHT ) ),
110cdf0e10cSrcweir //CHINA001 aFlInfo ( this, ScResId( FL_INFO ) ),
111cdf0e10cSrcweir //CHINA001 aFtInfo ( this, ScResId( FT_INFO ) ),
112cdf0e10cSrcweir //CHINA001 aBtnText ( this, ScResId( BTN_TEXT ) ),
113cdf0e10cSrcweir //CHINA001 aBtnPage ( this, ScResId( BTN_PAGE ) ),
114cdf0e10cSrcweir //CHINA001 aBtnLastPage ( this, ScResId( BTN_PAGES ) ),
115cdf0e10cSrcweir //CHINA001 aBtnDate ( this, ScResId( BTN_DATE ) ),
116cdf0e10cSrcweir //CHINA001 aBtnTime ( this, ScResId( BTN_TIME ) ),
117cdf0e10cSrcweir //CHINA001 aBtnFile ( this, ScResId( BTN_FILE ) ),
118cdf0e10cSrcweir //CHINA001 aBtnTable ( this, ScResId( BTN_TABLE ) ),
119cdf0e10cSrcweir //CHINA001 aPopUpFile ( ScResId( RID_POPUP_FCOMMAND) ),
120cdf0e10cSrcweir //CHINA001 nWhich ( nWhichId )
121cdf0e10cSrcweir //CHINA001 {
122cdf0e10cSrcweir //CHINA001 //! use default style from current document?
123cdf0e10cSrcweir //CHINA001 //! if font color is used, header/footer background color must be set
124cdf0e10cSrcweir //CHINA001
125cdf0e10cSrcweir //CHINA001 ScPatternAttr aPatAttr( rCoreAttrs.GetPool() );
126cdf0e10cSrcweir //CHINA001
127cdf0e10cSrcweir //CHINA001 aBtnFile.SetPopupMenu(&aPopUpFile);
128cdf0e10cSrcweir //CHINA001
129cdf0e10cSrcweir //CHINA001 aBtnFile.SetMenuHdl( LINK( this, ScHFEditPage, MenuHdl ) );
130cdf0e10cSrcweir //CHINA001 aBtnText .SetClickHdl( LINK( this, ScHFEditPage, ClickHdl ) );
131cdf0e10cSrcweir //CHINA001 aBtnPage .SetClickHdl( LINK( this, ScHFEditPage, ClickHdl ) );
132cdf0e10cSrcweir //CHINA001 aBtnLastPage.SetClickHdl( LINK( this, ScHFEditPage, ClickHdl ) );
133cdf0e10cSrcweir //CHINA001 aBtnDate .SetClickHdl( LINK( this, ScHFEditPage, ClickHdl ) );
134cdf0e10cSrcweir //CHINA001 aBtnTime .SetClickHdl( LINK( this, ScHFEditPage, ClickHdl ) );
135cdf0e10cSrcweir //CHINA001 aBtnFile .SetClickHdl( LINK( this, ScHFEditPage, ClickHdl ) );
136cdf0e10cSrcweir //CHINA001 aBtnTable .SetClickHdl( LINK( this, ScHFEditPage, ClickHdl ) );
137cdf0e10cSrcweir //CHINA001
138cdf0e10cSrcweir //CHINA001 aBtnText .SetModeImage( Image( ScResId( IMG_TEXT_H ) ), BMP_COLOR_HIGHCONTRAST );
139cdf0e10cSrcweir //CHINA001 aBtnFile .SetModeImage( Image( ScResId( IMG_FILE_H ) ), BMP_COLOR_HIGHCONTRAST );
140cdf0e10cSrcweir //CHINA001 aBtnTable .SetModeImage( Image( ScResId( IMG_TABLE_H ) ), BMP_COLOR_HIGHCONTRAST );
141cdf0e10cSrcweir //CHINA001 aBtnPage .SetModeImage( Image( ScResId( IMG_PAGE_H ) ), BMP_COLOR_HIGHCONTRAST );
142cdf0e10cSrcweir //CHINA001 aBtnLastPage.SetModeImage( Image( ScResId( IMG_PAGES_H ) ), BMP_COLOR_HIGHCONTRAST );
143cdf0e10cSrcweir //CHINA001 aBtnDate .SetModeImage( Image( ScResId( IMG_DATE_H ) ), BMP_COLOR_HIGHCONTRAST );
144cdf0e10cSrcweir //CHINA001 aBtnTime .SetModeImage( Image( ScResId( IMG_TIME_H ) ), BMP_COLOR_HIGHCONTRAST );
145cdf0e10cSrcweir //CHINA001
146cdf0e10cSrcweir //CHINA001 aWndLeft. SetFont( aPatAttr );
147cdf0e10cSrcweir //CHINA001 aWndCenter. SetFont( aPatAttr );
148cdf0e10cSrcweir //CHINA001 aWndRight. SetFont( aPatAttr );
149cdf0e10cSrcweir //CHINA001
150cdf0e10cSrcweir //CHINA001 FillCmdArr();
151cdf0e10cSrcweir //CHINA001
152cdf0e10cSrcweir //CHINA001 aWndLeft.GrabFocus();
153cdf0e10cSrcweir //CHINA001
154cdf0e10cSrcweir //CHINA001 FreeResource();
155cdf0e10cSrcweir //CHINA001 }
156cdf0e10cSrcweir //CHINA001
157cdf0e10cSrcweir //CHINA001 // -----------------------------------------------------------------------
158cdf0e10cSrcweir //CHINA001
159cdf0e10cSrcweir //CHINA001 __EXPORT ScHFEditPage::~ScHFEditPage()
160cdf0e10cSrcweir //CHINA001 {
161cdf0e10cSrcweir //CHINA001 }
162cdf0e10cSrcweir //CHINA001
163cdf0e10cSrcweir //CHINA001 void ScHFEditPage::SetNumType(SvxNumType eNumType)
164cdf0e10cSrcweir //CHINA001 {
165cdf0e10cSrcweir //CHINA001 aWndLeft.SetNumType(eNumType);
166cdf0e10cSrcweir //CHINA001 aWndCenter.SetNumType(eNumType);
167cdf0e10cSrcweir //CHINA001 aWndRight.SetNumType(eNumType);
168cdf0e10cSrcweir //CHINA001 }
169cdf0e10cSrcweir //CHINA001
170cdf0e10cSrcweir //CHINA001 // -----------------------------------------------------------------------
171cdf0e10cSrcweir //CHINA001
172cdf0e10cSrcweir //CHINA001 #define IS_AVAILABLE(w)(rCoreSet.GetItemState( (w) ) >= SFX_ITEM_AVAILABLE)
173cdf0e10cSrcweir //CHINA001
174cdf0e10cSrcweir //CHINA001 void __EXPORT ScHFEditPage::Reset( const SfxItemSet& rCoreSet )
175cdf0e10cSrcweir //CHINA001 {
176cdf0e10cSrcweir //CHINA001 if ( IS_AVAILABLE( nWhich ) )
177cdf0e10cSrcweir //CHINA001 {
178cdf0e10cSrcweir //CHINA001 const ScPageHFItem& rItem = (const ScPageHFItem&)(rCoreSet.Get( nWhich ));
179cdf0e10cSrcweir //CHINA001
180cdf0e10cSrcweir //CHINA001 const EditTextObject* pLeft = rItem.GetLeftArea();
181cdf0e10cSrcweir //CHINA001 const EditTextObject* pCenter = rItem.GetCenterArea();
182cdf0e10cSrcweir //CHINA001 const EditTextObject* pRight = rItem.GetRightArea();
183cdf0e10cSrcweir //CHINA001
184cdf0e10cSrcweir //CHINA001 if ( pLeft && pCenter && pRight )
185cdf0e10cSrcweir //CHINA001 {
186cdf0e10cSrcweir //CHINA001 aWndLeft .SetText( *pLeft );
187cdf0e10cSrcweir //CHINA001 aWndCenter .SetText( *pCenter );
188cdf0e10cSrcweir //CHINA001 aWndRight .SetText( *pRight );
189cdf0e10cSrcweir //CHINA001 }
190cdf0e10cSrcweir //CHINA001 }
191cdf0e10cSrcweir //CHINA001 }
192cdf0e10cSrcweir //CHINA001
193cdf0e10cSrcweir //CHINA001 #undef IS_AVAILABLE
194cdf0e10cSrcweir //CHINA001
195cdf0e10cSrcweir //CHINA001 // -----------------------------------------------------------------------
196cdf0e10cSrcweir //CHINA001
197cdf0e10cSrcweir //CHINA001 sal_Bool __EXPORT ScHFEditPage::FillItemSet( SfxItemSet& rCoreSet )
198cdf0e10cSrcweir //CHINA001 {
199cdf0e10cSrcweir //CHINA001 ScPageHFItem aItem( nWhich );
200cdf0e10cSrcweir //CHINA001 EditTextObject* pLeft = aWndLeft .CreateTextObject();
201cdf0e10cSrcweir //CHINA001 EditTextObject* pCenter = aWndCenter.CreateTextObject();
202cdf0e10cSrcweir //CHINA001 EditTextObject* pRight = aWndRight .CreateTextObject();
203cdf0e10cSrcweir //CHINA001
204cdf0e10cSrcweir //CHINA001 aItem.SetLeftArea ( *pLeft );
205cdf0e10cSrcweir //CHINA001 aItem.SetCenterArea( *pCenter );
206cdf0e10cSrcweir //CHINA001 aItem.SetRightArea ( *pRight );
207cdf0e10cSrcweir //CHINA001 delete pLeft;
208cdf0e10cSrcweir //CHINA001 delete pCenter;
209cdf0e10cSrcweir //CHINA001 delete pRight;
210cdf0e10cSrcweir //CHINA001
211cdf0e10cSrcweir //CHINA001 rCoreSet.Put( aItem );
212cdf0e10cSrcweir //CHINA001
213cdf0e10cSrcweir //CHINA001 return sal_True;
214cdf0e10cSrcweir //CHINA001 }
215cdf0e10cSrcweir //CHINA001
216cdf0e10cSrcweir //CHINA001 // -----------------------------------------------------------------------
217cdf0e10cSrcweir //CHINA001
218cdf0e10cSrcweir //CHINA001 #define SET_CMD(i,id) x
219cdf0e10cSrcweir //CHINA001 aCmd = aDel; x
220cdf0e10cSrcweir //CHINA001 aCmd += ScGlobal::GetRscString( id ); x
221cdf0e10cSrcweir //CHINA001 aCmd += aDel; x
222cdf0e10cSrcweir //CHINA001 aCmdArr[i] = aCmd;
223cdf0e10cSrcweir //CHINA001
224cdf0e10cSrcweir //CHINA001 // -----------------------------------------------------------------------
225cdf0e10cSrcweir //CHINA001
226cdf0e10cSrcweir //CHINA001 void ScHFEditPage::FillCmdArr()
227cdf0e10cSrcweir //CHINA001 {
228cdf0e10cSrcweir //CHINA001 String aDel( ScGlobal::GetRscString( STR_HFCMD_DELIMITER ) );
229cdf0e10cSrcweir //CHINA001 String aCmd;
230cdf0e10cSrcweir //CHINA001
231cdf0e10cSrcweir //CHINA001 SET_CMD( 0, STR_HFCMD_PAGE )
232cdf0e10cSrcweir //CHINA001 SET_CMD( 1, STR_HFCMD_PAGES )
233cdf0e10cSrcweir //CHINA001 SET_CMD( 2, STR_HFCMD_DATE )
234cdf0e10cSrcweir //CHINA001 SET_CMD( 3, STR_HFCMD_TIME )
235cdf0e10cSrcweir //CHINA001 SET_CMD( 4, STR_HFCMD_FILE )
236cdf0e10cSrcweir //CHINA001 SET_CMD( 5, STR_HFCMD_TABLE )
237cdf0e10cSrcweir //CHINA001 }
238cdf0e10cSrcweir //CHINA001
239cdf0e10cSrcweir //CHINA001 #undef SET_CMD
240cdf0e10cSrcweir //CHINA001
241cdf0e10cSrcweir //CHINA001 //-----------------------------------------------------------------------
242cdf0e10cSrcweir //CHINA001 // Handler:
243cdf0e10cSrcweir //CHINA001 //-----------------------------------------------------------------------
244cdf0e10cSrcweir //CHINA001
245cdf0e10cSrcweir //CHINA001 IMPL_LINK( ScHFEditPage, ClickHdl, ImageButton*, pBtn )
246cdf0e10cSrcweir //CHINA001 {
247cdf0e10cSrcweir //CHINA001 if ( !pActiveEdWnd )
248cdf0e10cSrcweir //CHINA001 return 0;
249cdf0e10cSrcweir //CHINA001
250cdf0e10cSrcweir //CHINA001 if ( pBtn == &aBtnText )
251cdf0e10cSrcweir //CHINA001 {
252cdf0e10cSrcweir //CHINA001 pActiveEdWnd->SetCharAttriutes();
253cdf0e10cSrcweir //CHINA001 }
254cdf0e10cSrcweir //CHINA001 else
255cdf0e10cSrcweir //CHINA001 {
256cdf0e10cSrcweir //CHINA001 if ( pBtn == &aBtnPage )
257cdf0e10cSrcweir //CHINA001 pActiveEdWnd->InsertField( SvxFieldItem(SvxPageField()) );
258cdf0e10cSrcweir //CHINA001 else if ( pBtn == &aBtnLastPage )
259cdf0e10cSrcweir //CHINA001 pActiveEdWnd->InsertField( SvxFieldItem(SvxPagesField()) );
260cdf0e10cSrcweir //CHINA001 else if ( pBtn == &aBtnDate )
261cdf0e10cSrcweir //CHINA001 pActiveEdWnd->InsertField( SvxFieldItem(SvxDateField(Date(),SVXDATETYPE_VAR)) );
262cdf0e10cSrcweir //CHINA001 else if ( pBtn == &aBtnTime )
263cdf0e10cSrcweir //CHINA001 pActiveEdWnd->InsertField( SvxFieldItem(SvxTimeField()) );
264cdf0e10cSrcweir //CHINA001 else if ( pBtn == &aBtnFile )
265cdf0e10cSrcweir //CHINA001 {
266cdf0e10cSrcweir //CHINA001 pActiveEdWnd->InsertField( SvxFieldItem( SvxFileField() ) );
267cdf0e10cSrcweir //CHINA001 }
268cdf0e10cSrcweir //CHINA001 else if ( pBtn == &aBtnTable )
269cdf0e10cSrcweir //CHINA001 pActiveEdWnd->InsertField( SvxFieldItem(SvxTableField()) );
270cdf0e10cSrcweir //CHINA001 }
271cdf0e10cSrcweir //CHINA001 pActiveEdWnd->GrabFocus();
272cdf0e10cSrcweir //CHINA001
273cdf0e10cSrcweir //CHINA001 return 0;
274cdf0e10cSrcweir //CHINA001 }
275cdf0e10cSrcweir //CHINA001
276cdf0e10cSrcweir //CHINA001 IMPL_LINK( ScHFEditPage, MenuHdl, ScExtIButton*, pBtn )
277cdf0e10cSrcweir //CHINA001 {
278cdf0e10cSrcweir //CHINA001 if ( !pActiveEdWnd )
279cdf0e10cSrcweir //CHINA001 return 0;
280cdf0e10cSrcweir //CHINA001
281cdf0e10cSrcweir //CHINA001 if(pBtn!=NULL)
282cdf0e10cSrcweir //CHINA001 {
283cdf0e10cSrcweir //CHINA001 switch(pBtn->GetSelected())
284cdf0e10cSrcweir //CHINA001 {
285cdf0e10cSrcweir //CHINA001 case FILE_COMMAND_TITEL:
286cdf0e10cSrcweir //CHINA001 pActiveEdWnd->InsertField( SvxFieldItem( SvxFileField() ) );
287cdf0e10cSrcweir //CHINA001 break;
288cdf0e10cSrcweir //CHINA001 case FILE_COMMAND_FILENAME:
289cdf0e10cSrcweir //CHINA001 pActiveEdWnd->InsertField( SvxFieldItem( SvxExtFileField(
290cdf0e10cSrcweir //CHINA001 EMPTY_STRING, SVXFILETYPE_VAR, SVXFILEFORMAT_NAME_EXT ) ) );
291cdf0e10cSrcweir //CHINA001 break;
292cdf0e10cSrcweir //CHINA001 case FILE_COMMAND_PATH:
293cdf0e10cSrcweir //CHINA001 pActiveEdWnd->InsertField( SvxFieldItem( SvxExtFileField(
294cdf0e10cSrcweir //CHINA001 EMPTY_STRING, SVXFILETYPE_VAR, SVXFILEFORMAT_FULLPATH ) ) );
295cdf0e10cSrcweir //CHINA001 break;
296cdf0e10cSrcweir //CHINA001 }
297cdf0e10cSrcweir //CHINA001 }
298cdf0e10cSrcweir //CHINA001 return 0;
299cdf0e10cSrcweir //CHINA001 }
300cdf0e10cSrcweir //CHINA001
301cdf0e10cSrcweir //CHINA001 //========================================================================
302cdf0e10cSrcweir //CHINA001 // class ScRightHeaderEditPage
303cdf0e10cSrcweir //CHINA001 //========================================================================
304cdf0e10cSrcweir //CHINA001
305cdf0e10cSrcweir //CHINA001 ScRightHeaderEditPage::ScRightHeaderEditPage( Window* pParent, const SfxItemSet& rCoreSet )
306cdf0e10cSrcweir //CHINA001 : ScHFEditPage( pParent, RID_SCPAGE_HFED_HR, rCoreSet,
307cdf0e10cSrcweir //CHINA001 rCoreSet.GetPool()->GetWhich(SID_SCATTR_PAGE_HEADERRIGHT) )
308cdf0e10cSrcweir //CHINA001 {}
309cdf0e10cSrcweir //CHINA001
310cdf0e10cSrcweir //CHINA001 // -----------------------------------------------------------------------
311cdf0e10cSrcweir //CHINA001
312cdf0e10cSrcweir //CHINA001 sal_uInt16* __EXPORT ScRightHeaderEditPage::GetRanges()
313cdf0e10cSrcweir //CHINA001 { return pPageRightHeaderRanges; }
314cdf0e10cSrcweir //CHINA001
315cdf0e10cSrcweir //CHINA001 // -----------------------------------------------------------------------
316cdf0e10cSrcweir //CHINA001
317cdf0e10cSrcweir //CHINA001 SfxTabPage* __EXPORT ScRightHeaderEditPage::Create( Window* pParent, const SfxItemSet& rCoreSet )
318cdf0e10cSrcweir //CHINA001 { return ( new ScRightHeaderEditPage( pParent, rCoreSet ) ); };
319cdf0e10cSrcweir //CHINA001
320cdf0e10cSrcweir //CHINA001
321cdf0e10cSrcweir //CHINA001 //========================================================================
322cdf0e10cSrcweir //CHINA001 // class ScLeftHeaderEditPage
323cdf0e10cSrcweir //CHINA001 //========================================================================
324cdf0e10cSrcweir //CHINA001
325cdf0e10cSrcweir //CHINA001 ScLeftHeaderEditPage::ScLeftHeaderEditPage( Window* pParent, const SfxItemSet& rCoreSet )
326cdf0e10cSrcweir //CHINA001 : ScHFEditPage( pParent, RID_SCPAGE_HFED_HL, rCoreSet,
327cdf0e10cSrcweir //CHINA001 rCoreSet.GetPool()->GetWhich(SID_SCATTR_PAGE_HEADERLEFT) )
328cdf0e10cSrcweir //CHINA001 {}
329cdf0e10cSrcweir //CHINA001
330cdf0e10cSrcweir //CHINA001 // -----------------------------------------------------------------------
331cdf0e10cSrcweir //CHINA001
332cdf0e10cSrcweir //CHINA001 sal_uInt16* __EXPORT ScLeftHeaderEditPage::GetRanges()
333cdf0e10cSrcweir //CHINA001 { return pPageLeftHeaderRanges; }
334cdf0e10cSrcweir //CHINA001
335cdf0e10cSrcweir //CHINA001 // -----------------------------------------------------------------------
336cdf0e10cSrcweir //CHINA001
337cdf0e10cSrcweir //CHINA001 SfxTabPage* __EXPORT ScLeftHeaderEditPage::Create( Window* pParent, const SfxItemSet& rCoreSet )
338cdf0e10cSrcweir //CHINA001 { return ( new ScLeftHeaderEditPage( pParent, rCoreSet ) ); };
339cdf0e10cSrcweir //CHINA001
340cdf0e10cSrcweir //CHINA001 //========================================================================
341cdf0e10cSrcweir //CHINA001 // class ScRightFooterEditPage
342cdf0e10cSrcweir //CHINA001 //========================================================================
343cdf0e10cSrcweir //CHINA001
344cdf0e10cSrcweir //CHINA001 ScRightFooterEditPage::ScRightFooterEditPage( Window* pParent, const SfxItemSet& rCoreSet )
345cdf0e10cSrcweir //CHINA001 : ScHFEditPage( pParent, RID_SCPAGE_HFED_FR, rCoreSet,
346cdf0e10cSrcweir //CHINA001 rCoreSet.GetPool()->GetWhich(SID_SCATTR_PAGE_FOOTERRIGHT) )
347cdf0e10cSrcweir //CHINA001 {}
348cdf0e10cSrcweir //CHINA001
349cdf0e10cSrcweir //CHINA001 // -----------------------------------------------------------------------
350cdf0e10cSrcweir //CHINA001
351cdf0e10cSrcweir //CHINA001 sal_uInt16* __EXPORT ScRightFooterEditPage::GetRanges()
352cdf0e10cSrcweir //CHINA001 { return pPageRightFooterRanges; }
353cdf0e10cSrcweir //CHINA001
354cdf0e10cSrcweir //CHINA001 // -----------------------------------------------------------------------
355cdf0e10cSrcweir //CHINA001
356cdf0e10cSrcweir //CHINA001 SfxTabPage* __EXPORT ScRightFooterEditPage::Create( Window* pParent, const SfxItemSet& rCoreSet )
357cdf0e10cSrcweir //CHINA001 { return ( new ScRightFooterEditPage( pParent, rCoreSet ) ); };
358cdf0e10cSrcweir //CHINA001
359cdf0e10cSrcweir //CHINA001 //========================================================================
360cdf0e10cSrcweir //CHINA001 // class ScLeftFooterEditPage
361cdf0e10cSrcweir //CHINA001 //========================================================================
362cdf0e10cSrcweir //CHINA001
363cdf0e10cSrcweir //CHINA001 ScLeftFooterEditPage::ScLeftFooterEditPage( Window* pParent, const SfxItemSet& rCoreSet )
364cdf0e10cSrcweir //CHINA001 : ScHFEditPage( pParent, RID_SCPAGE_HFED_FL, rCoreSet,
365cdf0e10cSrcweir //CHINA001 rCoreSet.GetPool()->GetWhich(SID_SCATTR_PAGE_FOOTERLEFT) )
366cdf0e10cSrcweir //CHINA001 {}
367cdf0e10cSrcweir //CHINA001
368cdf0e10cSrcweir //CHINA001 // -----------------------------------------------------------------------
369cdf0e10cSrcweir //CHINA001
370cdf0e10cSrcweir //CHINA001 sal_uInt16* __EXPORT ScLeftFooterEditPage::GetRanges()
371cdf0e10cSrcweir //CHINA001 { return pPageLeftFooterRanges; }
372cdf0e10cSrcweir //CHINA001
373cdf0e10cSrcweir //CHINA001 // -----------------------------------------------------------------------
374cdf0e10cSrcweir //CHINA001
375cdf0e10cSrcweir //CHINA001 SfxTabPage* __EXPORT ScLeftFooterEditPage::Create( Window* pParent, const SfxItemSet& rCoreSet )
376cdf0e10cSrcweir //CHINA001 { return ( new ScLeftFooterEditPage( pParent, rCoreSet ) ); };
377cdf0e10cSrcweir
378cdf0e10cSrcweir //========================================================================
379cdf0e10cSrcweir
lcl_GetFieldData(ScHeaderFieldData & rData)380cdf0e10cSrcweir void lcl_GetFieldData( ScHeaderFieldData& rData )
381cdf0e10cSrcweir {
382cdf0e10cSrcweir SfxViewShell* pShell = SfxViewShell::Current();
383cdf0e10cSrcweir if (pShell)
384cdf0e10cSrcweir {
385cdf0e10cSrcweir if (pShell->ISA(ScTabViewShell))
386cdf0e10cSrcweir ((ScTabViewShell*)pShell)->FillFieldData(rData);
387cdf0e10cSrcweir else if (pShell->ISA(ScPreviewShell))
388cdf0e10cSrcweir ((ScPreviewShell*)pShell)->FillFieldData(rData);
389cdf0e10cSrcweir }
390cdf0e10cSrcweir }
391cdf0e10cSrcweir
392cdf0e10cSrcweir //========================================================================
393cdf0e10cSrcweir // class ScEditWindow
394cdf0e10cSrcweir //========================================================================
395cdf0e10cSrcweir
ScEditWindow(Window * pParent,const ResId & rResId,ScEditWindowLocation eLoc)396cdf0e10cSrcweir ScEditWindow::ScEditWindow( Window* pParent, const ResId& rResId, ScEditWindowLocation eLoc )
397cdf0e10cSrcweir : Control( pParent, rResId ),
398cdf0e10cSrcweir eLocation(eLoc),
399cdf0e10cSrcweir pAcc(NULL)
400cdf0e10cSrcweir {
401cdf0e10cSrcweir EnableRTL(sal_False);
402cdf0e10cSrcweir
403cdf0e10cSrcweir const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
404cdf0e10cSrcweir Color aBgColor = rStyleSettings.GetWindowColor();
405cdf0e10cSrcweir
406cdf0e10cSrcweir SetMapMode( MAP_TWIP );
407cdf0e10cSrcweir SetPointer( POINTER_TEXT );
408cdf0e10cSrcweir SetBackground( aBgColor );
409cdf0e10cSrcweir
410cdf0e10cSrcweir Size aSize( GetOutputSize() );
411cdf0e10cSrcweir aSize.Height() *= 4;
412cdf0e10cSrcweir
413cdf0e10cSrcweir pEdEngine = new ScHeaderEditEngine( EditEngine::CreatePool(), sal_True );
414cdf0e10cSrcweir pEdEngine->SetPaperSize( aSize );
415cdf0e10cSrcweir pEdEngine->SetRefDevice( this );
416cdf0e10cSrcweir
417cdf0e10cSrcweir ScHeaderFieldData aData;
418cdf0e10cSrcweir lcl_GetFieldData( aData );
419cdf0e10cSrcweir
420cdf0e10cSrcweir // Feldbefehle:
421cdf0e10cSrcweir pEdEngine->SetData( aData );
422cdf0e10cSrcweir pEdEngine->SetControlWord( pEdEngine->GetControlWord() | EE_CNTRL_MARKFIELDS );
423cdf0e10cSrcweir mbRTL = ScGlobal::IsSystemRTL();
424cdf0e10cSrcweir if (mbRTL)
425cdf0e10cSrcweir pEdEngine->SetDefaultHorizontalTextDirection(EE_HTEXTDIR_R2L);
426cdf0e10cSrcweir
427cdf0e10cSrcweir pEdView = new EditView( pEdEngine, this );
428cdf0e10cSrcweir pEdView->SetOutputArea( Rectangle( Point(0,0), GetOutputSize() ) );
429cdf0e10cSrcweir
430cdf0e10cSrcweir pEdView->SetBackgroundColor( aBgColor );
431cdf0e10cSrcweir pEdEngine->InsertView( pEdView );
432cdf0e10cSrcweir }
433cdf0e10cSrcweir
434cdf0e10cSrcweir // -----------------------------------------------------------------------
435cdf0e10cSrcweir
~ScEditWindow()436cdf0e10cSrcweir __EXPORT ScEditWindow::~ScEditWindow()
437cdf0e10cSrcweir {
438cdf0e10cSrcweir // delete Accessible object before deleting EditEngine and EditView
439cdf0e10cSrcweir if (pAcc)
440cdf0e10cSrcweir {
441cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > xTemp = xAcc;
442cdf0e10cSrcweir if (xTemp.is())
443cdf0e10cSrcweir pAcc->dispose();
444cdf0e10cSrcweir }
445cdf0e10cSrcweir delete pEdEngine;
446cdf0e10cSrcweir delete pEdView;
447cdf0e10cSrcweir }
448cdf0e10cSrcweir
449cdf0e10cSrcweir // -----------------------------------------------------------------------
450cdf0e10cSrcweir
SetNumType(SvxNumType eNumType)451cdf0e10cSrcweir void ScEditWindow::SetNumType(SvxNumType eNumType)
452cdf0e10cSrcweir {
453cdf0e10cSrcweir pEdEngine->SetNumType(eNumType);
454cdf0e10cSrcweir pEdEngine->UpdateFields();
455cdf0e10cSrcweir }
456cdf0e10cSrcweir
457cdf0e10cSrcweir // -----------------------------------------------------------------------
458cdf0e10cSrcweir
CreateTextObject()459cdf0e10cSrcweir EditTextObject* __EXPORT ScEditWindow::CreateTextObject()
460cdf0e10cSrcweir {
461cdf0e10cSrcweir // wegen #38841# die Absatzattribute zuruecksetzen
462cdf0e10cSrcweir // (GetAttribs beim Format-Dialog-Aufruf gibt immer gesetzte Items zurueck)
463cdf0e10cSrcweir
464cdf0e10cSrcweir const SfxItemSet& rEmpty = pEdEngine->GetEmptyItemSet();
465*c2eaa082SDamjan Jovanovic sal_uInt32 nParCnt = pEdEngine->GetParagraphCount();
466*c2eaa082SDamjan Jovanovic for (sal_uInt32 i=0; i<nParCnt; i++)
467cdf0e10cSrcweir pEdEngine->SetParaAttribs( i, rEmpty );
468cdf0e10cSrcweir
469cdf0e10cSrcweir return pEdEngine->CreateTextObject();
470cdf0e10cSrcweir }
471cdf0e10cSrcweir
472cdf0e10cSrcweir // -----------------------------------------------------------------------
473cdf0e10cSrcweir
SetFont(const ScPatternAttr & rPattern)474cdf0e10cSrcweir void ScEditWindow::SetFont( const ScPatternAttr& rPattern )
475cdf0e10cSrcweir {
476cdf0e10cSrcweir SfxItemSet* pSet = new SfxItemSet( pEdEngine->GetEmptyItemSet() );
477cdf0e10cSrcweir rPattern.FillEditItemSet( pSet );
478cdf0e10cSrcweir // FillEditItemSet adjusts font height to 1/100th mm,
479cdf0e10cSrcweir // but for header/footer twips is needed, as in the PatternAttr:
480cdf0e10cSrcweir pSet->Put( rPattern.GetItem(ATTR_FONT_HEIGHT), EE_CHAR_FONTHEIGHT );
481cdf0e10cSrcweir pSet->Put( rPattern.GetItem(ATTR_CJK_FONT_HEIGHT), EE_CHAR_FONTHEIGHT_CJK );
482cdf0e10cSrcweir pSet->Put( rPattern.GetItem(ATTR_CTL_FONT_HEIGHT), EE_CHAR_FONTHEIGHT_CTL );
483cdf0e10cSrcweir if (mbRTL)
484cdf0e10cSrcweir pSet->Put( SvxAdjustItem( SVX_ADJUST_RIGHT, EE_PARA_JUST ) );
485cdf0e10cSrcweir pEdEngine->SetDefaults( pSet );
486cdf0e10cSrcweir }
487cdf0e10cSrcweir
488cdf0e10cSrcweir // -----------------------------------------------------------------------
489cdf0e10cSrcweir
SetText(const EditTextObject & rTextObject)490cdf0e10cSrcweir void ScEditWindow::SetText( const EditTextObject& rTextObject )
491cdf0e10cSrcweir {
492cdf0e10cSrcweir pEdEngine->SetText( rTextObject );
493cdf0e10cSrcweir }
494cdf0e10cSrcweir
495cdf0e10cSrcweir // -----------------------------------------------------------------------
496cdf0e10cSrcweir
InsertField(const SvxFieldItem & rFld)497cdf0e10cSrcweir void ScEditWindow::InsertField( const SvxFieldItem& rFld )
498cdf0e10cSrcweir {
499cdf0e10cSrcweir pEdView->InsertField( rFld );
500cdf0e10cSrcweir }
501cdf0e10cSrcweir
502cdf0e10cSrcweir // -----------------------------------------------------------------------
503cdf0e10cSrcweir
SetCharAttriutes()504cdf0e10cSrcweir void ScEditWindow::SetCharAttriutes()
505cdf0e10cSrcweir {
506cdf0e10cSrcweir SfxObjectShell* pDocSh = SfxObjectShell::Current();
507cdf0e10cSrcweir
508cdf0e10cSrcweir SfxViewShell* pViewSh = SfxViewShell::Current();
509cdf0e10cSrcweir
510cdf0e10cSrcweir ScTabViewShell* pTabViewSh = PTR_CAST(ScTabViewShell, SfxViewShell::Current());
511cdf0e10cSrcweir
512cdf0e10cSrcweir
513cdf0e10cSrcweir DBG_ASSERT( pDocSh, "Current DocShell not found" );
514cdf0e10cSrcweir DBG_ASSERT( pViewSh, "Current ViewShell not found" );
515cdf0e10cSrcweir
516cdf0e10cSrcweir if ( pDocSh && pViewSh )
517cdf0e10cSrcweir {
518cdf0e10cSrcweir if(pTabViewSh!=NULL) pTabViewSh->SetInFormatDialog(sal_True);
519cdf0e10cSrcweir
520cdf0e10cSrcweir SfxItemSet aSet( pEdView->GetAttribs() );
521cdf0e10cSrcweir
522cdf0e10cSrcweir //CHINA001 ScCharDlg* pDlg = new ScCharDlg( GetParent(), &aSet, pDocSh );
523cdf0e10cSrcweir ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create();
524cdf0e10cSrcweir DBG_ASSERT(pFact, "ScAbstractFactory create fail!");//CHINA001
525cdf0e10cSrcweir
526cdf0e10cSrcweir SfxAbstractTabDialog* pDlg = pFact->CreateScCharDlg( GetParent(), &aSet,
527cdf0e10cSrcweir pDocSh,RID_SCDLG_CHAR );
528cdf0e10cSrcweir DBG_ASSERT(pDlg, "Dialog create fail!");//CHINA001
529cdf0e10cSrcweir pDlg->SetText( ScGlobal::GetRscString( STR_TEXTATTRS ) );
530cdf0e10cSrcweir if ( pDlg->Execute() == RET_OK )
531cdf0e10cSrcweir {
532cdf0e10cSrcweir aSet.ClearItem();
533cdf0e10cSrcweir aSet.Put( *pDlg->GetOutputItemSet() );
534cdf0e10cSrcweir pEdView->SetAttribs( aSet );
535cdf0e10cSrcweir }
536cdf0e10cSrcweir
537cdf0e10cSrcweir if(pTabViewSh!=NULL) pTabViewSh->SetInFormatDialog(sal_False);
538cdf0e10cSrcweir delete pDlg;
539cdf0e10cSrcweir }
540cdf0e10cSrcweir }
541cdf0e10cSrcweir
542cdf0e10cSrcweir // -----------------------------------------------------------------------
543cdf0e10cSrcweir
Paint(const Rectangle & rRec)544cdf0e10cSrcweir void __EXPORT ScEditWindow::Paint( const Rectangle& rRec )
545cdf0e10cSrcweir {
546cdf0e10cSrcweir const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
547cdf0e10cSrcweir Color aBgColor = rStyleSettings.GetWindowColor();
548cdf0e10cSrcweir
549cdf0e10cSrcweir pEdView->SetBackgroundColor( aBgColor );
550cdf0e10cSrcweir
551cdf0e10cSrcweir SetBackground( aBgColor );
552cdf0e10cSrcweir
553cdf0e10cSrcweir Control::Paint( rRec );
554cdf0e10cSrcweir
555cdf0e10cSrcweir pEdView->Paint( rRec );
5560deba7fbSSteve Yin if( HasFocus() )
5570deba7fbSSteve Yin pEdView->ShowCursor(sal_True,sal_True);
558cdf0e10cSrcweir }
559cdf0e10cSrcweir
560cdf0e10cSrcweir // -----------------------------------------------------------------------
561cdf0e10cSrcweir
MouseMove(const MouseEvent & rMEvt)562cdf0e10cSrcweir void __EXPORT ScEditWindow::MouseMove( const MouseEvent& rMEvt )
563cdf0e10cSrcweir {
564cdf0e10cSrcweir pEdView->MouseMove( rMEvt );
565cdf0e10cSrcweir }
566cdf0e10cSrcweir
567cdf0e10cSrcweir // -----------------------------------------------------------------------
568cdf0e10cSrcweir
MouseButtonDown(const MouseEvent & rMEvt)569cdf0e10cSrcweir void __EXPORT ScEditWindow::MouseButtonDown( const MouseEvent& rMEvt )
570cdf0e10cSrcweir {
571cdf0e10cSrcweir if ( !HasFocus() )
572cdf0e10cSrcweir GrabFocus();
573cdf0e10cSrcweir
574cdf0e10cSrcweir pEdView->MouseButtonDown( rMEvt );
575cdf0e10cSrcweir }
576cdf0e10cSrcweir
577cdf0e10cSrcweir // -----------------------------------------------------------------------
578cdf0e10cSrcweir
MouseButtonUp(const MouseEvent & rMEvt)579cdf0e10cSrcweir void __EXPORT ScEditWindow::MouseButtonUp( const MouseEvent& rMEvt )
580cdf0e10cSrcweir {
581cdf0e10cSrcweir pEdView->MouseButtonUp( rMEvt );
582cdf0e10cSrcweir }
583cdf0e10cSrcweir
584cdf0e10cSrcweir // -----------------------------------------------------------------------
585cdf0e10cSrcweir
KeyInput(const KeyEvent & rKEvt)586cdf0e10cSrcweir void __EXPORT ScEditWindow::KeyInput( const KeyEvent& rKEvt )
587cdf0e10cSrcweir {
588cdf0e10cSrcweir sal_uInt16 nKey = rKEvt.GetKeyCode().GetModifier()
589cdf0e10cSrcweir + rKEvt.GetKeyCode().GetCode();
590cdf0e10cSrcweir
591cdf0e10cSrcweir if ( nKey == KEY_TAB || nKey == KEY_TAB + KEY_SHIFT )
592cdf0e10cSrcweir {
593cdf0e10cSrcweir Control::KeyInput( rKEvt );
594cdf0e10cSrcweir }
595cdf0e10cSrcweir else if ( !pEdView->PostKeyEvent( rKEvt ) )
596cdf0e10cSrcweir {
597cdf0e10cSrcweir Control::KeyInput( rKEvt );
598cdf0e10cSrcweir }
5990deba7fbSSteve Yin else if ( !rKEvt.GetKeyCode().IsMod1() && !rKEvt.GetKeyCode().IsShift() &&
6000deba7fbSSteve Yin rKEvt.GetKeyCode().IsMod2() && rKEvt.GetKeyCode().GetCode() == KEY_DOWN )
6010deba7fbSSteve Yin {
6020deba7fbSSteve Yin if (aObjectSelectLink.IsSet() )
6030deba7fbSSteve Yin aObjectSelectLink.Call(this);
6040deba7fbSSteve Yin }
605cdf0e10cSrcweir }
606cdf0e10cSrcweir
607cdf0e10cSrcweir // -----------------------------------------------------------------------
608cdf0e10cSrcweir
Command(const CommandEvent & rCEvt)609cdf0e10cSrcweir void ScEditWindow::Command( const CommandEvent& rCEvt )
610cdf0e10cSrcweir {
611cdf0e10cSrcweir pEdView->Command( rCEvt );
612cdf0e10cSrcweir }
613cdf0e10cSrcweir
614cdf0e10cSrcweir // -----------------------------------------------------------------------
615cdf0e10cSrcweir
GetFocus()616cdf0e10cSrcweir void __EXPORT ScEditWindow::GetFocus()
617cdf0e10cSrcweir {
6180deba7fbSSteve Yin pEdView->ShowCursor(sal_True,sal_True);
619cdf0e10cSrcweir pActiveEdWnd = this;
620cdf0e10cSrcweir
621cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > xTemp = xAcc;
622cdf0e10cSrcweir if (xTemp.is() && pAcc)
623cdf0e10cSrcweir {
624cdf0e10cSrcweir pAcc->GotFocus();
625cdf0e10cSrcweir }
626cdf0e10cSrcweir else
627cdf0e10cSrcweir pAcc = NULL;
628cdf0e10cSrcweir }
629cdf0e10cSrcweir
LoseFocus()630cdf0e10cSrcweir void __EXPORT ScEditWindow::LoseFocus()
631cdf0e10cSrcweir {
632cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > xTemp = xAcc;
633cdf0e10cSrcweir if (xTemp.is() && pAcc)
634cdf0e10cSrcweir {
635cdf0e10cSrcweir pAcc->LostFocus();
636cdf0e10cSrcweir }
637cdf0e10cSrcweir else
638cdf0e10cSrcweir pAcc = NULL;
639cdf0e10cSrcweir }
640cdf0e10cSrcweir
641cdf0e10cSrcweir // -----------------------------------------------------------------------
642cdf0e10cSrcweir
CreateAccessible()643cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > ScEditWindow::CreateAccessible()
644cdf0e10cSrcweir {
645cdf0e10cSrcweir String sName;
646cdf0e10cSrcweir String sDescription(GetHelpText());
647cdf0e10cSrcweir switch (eLocation)
648cdf0e10cSrcweir {
649cdf0e10cSrcweir case Left:
650cdf0e10cSrcweir {
651cdf0e10cSrcweir sName = String(ScResId(STR_ACC_LEFTAREA_NAME));
652cdf0e10cSrcweir // sDescription = String(ScResId(STR_ACC_LEFTAREA_DESCR));
653cdf0e10cSrcweir }
654cdf0e10cSrcweir break;
655cdf0e10cSrcweir case Center:
656cdf0e10cSrcweir {
657cdf0e10cSrcweir sName = String(ScResId(STR_ACC_CENTERAREA_NAME));
658cdf0e10cSrcweir // sDescription = String(ScResId(STR_ACC_CENTERAREA_DESCR));
659cdf0e10cSrcweir }
660cdf0e10cSrcweir break;
661cdf0e10cSrcweir case Right:
662cdf0e10cSrcweir {
663cdf0e10cSrcweir sName = String(ScResId(STR_ACC_RIGHTAREA_NAME));
664cdf0e10cSrcweir // sDescription = String(ScResId(STR_ACC_RIGHTAREA_DESCR));
665cdf0e10cSrcweir }
666cdf0e10cSrcweir break;
667cdf0e10cSrcweir }
668cdf0e10cSrcweir pAcc = new ScAccessibleEditObject(GetAccessibleParentWindow()->GetAccessible(), pEdView, this,
669cdf0e10cSrcweir rtl::OUString(sName), rtl::OUString(sDescription), EditControl);
670cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > xAccessible = pAcc;
671cdf0e10cSrcweir xAcc = xAccessible;
672cdf0e10cSrcweir return pAcc;
673cdf0e10cSrcweir }
674cdf0e10cSrcweir
675cdf0e10cSrcweir /*
676cdf0e10cSrcweir class ScExtIButton : public ImageButton
677cdf0e10cSrcweir {
678cdf0e10cSrcweir private:
679cdf0e10cSrcweir
680cdf0e10cSrcweir Timer aTimer;
681cdf0e10cSrcweir ScPopupMenu* pPopupMenu;
682cdf0e10cSrcweir
683cdf0e10cSrcweir DECL_LINK( TimerHdl, Timer*);
684cdf0e10cSrcweir
685cdf0e10cSrcweir void DrawArrow();
686cdf0e10cSrcweir
687cdf0e10cSrcweir protected:
688cdf0e10cSrcweir
689cdf0e10cSrcweir virtual void MouseButtonDown( const MouseEvent& rMEvt );
690cdf0e10cSrcweir virtual void MouseButtonUp( const MouseEvent& rMEvt);
691cdf0e10cSrcweir
692cdf0e10cSrcweir virtual void StartPopup();
693cdf0e10cSrcweir
694cdf0e10cSrcweir public:
695cdf0e10cSrcweir
696cdf0e10cSrcweir ScExtIButton(Window* pParent, const ResId& rResId );
697cdf0e10cSrcweir
698cdf0e10cSrcweir void SetPopupMenu(ScPopupMenu* pPopUp);
699cdf0e10cSrcweir
700cdf0e10cSrcweir sal_uInt16 GetSelected();
701cdf0e10cSrcweir
702cdf0e10cSrcweir void SetMenuHdl( const Link& rLink ) { aFxLink = rLink; }
703cdf0e10cSrcweir const Link& GetMenuHdl() const { return aFxLink; }
704cdf0e10cSrcweir
705cdf0e10cSrcweir }
706cdf0e10cSrcweir */
ScExtIButton(Window * pParent,const ResId & rResId)707cdf0e10cSrcweir ScExtIButton::ScExtIButton(Window* pParent, const ResId& rResId )
708cdf0e10cSrcweir : ImageButton(pParent,rResId),
709cdf0e10cSrcweir pPopupMenu(NULL)
710cdf0e10cSrcweir {
711cdf0e10cSrcweir nSelected=0;
712cdf0e10cSrcweir aTimer.SetTimeout(600);
713cdf0e10cSrcweir SetDropDown( sal_True);
714cdf0e10cSrcweir
715cdf0e10cSrcweir // DrawArrow();
716cdf0e10cSrcweir }
717cdf0e10cSrcweir
SetPopupMenu(ScPopupMenu * pPopUp)718cdf0e10cSrcweir void ScExtIButton::SetPopupMenu(ScPopupMenu* pPopUp)
719cdf0e10cSrcweir {
720cdf0e10cSrcweir pPopupMenu=pPopUp;
721cdf0e10cSrcweir }
722cdf0e10cSrcweir
GetSelected()723cdf0e10cSrcweir sal_uInt16 ScExtIButton::GetSelected()
724cdf0e10cSrcweir {
725cdf0e10cSrcweir return nSelected;
726cdf0e10cSrcweir }
727cdf0e10cSrcweir
MouseButtonDown(const MouseEvent & rMEvt)728cdf0e10cSrcweir void ScExtIButton::MouseButtonDown( const MouseEvent& rMEvt )
729cdf0e10cSrcweir {
730cdf0e10cSrcweir if(!aTimer.IsActive())
731cdf0e10cSrcweir {
732cdf0e10cSrcweir aTimer.Start();
733cdf0e10cSrcweir aTimer.SetTimeoutHdl(LINK( this, ScExtIButton, TimerHdl));
734cdf0e10cSrcweir }
735cdf0e10cSrcweir
736cdf0e10cSrcweir ImageButton::MouseButtonDown(rMEvt );
737cdf0e10cSrcweir }
MouseButtonUp(const MouseEvent & rMEvt)738cdf0e10cSrcweir void ScExtIButton::MouseButtonUp( const MouseEvent& rMEvt)
739cdf0e10cSrcweir {
740cdf0e10cSrcweir aTimer.Stop();
741cdf0e10cSrcweir aTimer.SetTimeoutHdl(Link());
742cdf0e10cSrcweir ImageButton::MouseButtonUp(rMEvt );
743cdf0e10cSrcweir }
744cdf0e10cSrcweir
Click()745cdf0e10cSrcweir void ScExtIButton::Click()
746cdf0e10cSrcweir {
747cdf0e10cSrcweir aTimer.Stop();
748cdf0e10cSrcweir aTimer.SetTimeoutHdl(Link());
749cdf0e10cSrcweir ImageButton::Click();
750cdf0e10cSrcweir }
751cdf0e10cSrcweir
StartPopup()752cdf0e10cSrcweir void ScExtIButton::StartPopup()
753cdf0e10cSrcweir {
754cdf0e10cSrcweir nSelected=0;
755cdf0e10cSrcweir
756cdf0e10cSrcweir if(pPopupMenu!=NULL)
757cdf0e10cSrcweir {
758cdf0e10cSrcweir SetPressed( sal_True );
759cdf0e10cSrcweir EndSelection();
760cdf0e10cSrcweir Point aPoint(0,0);
761cdf0e10cSrcweir aPoint.Y()=GetOutputSizePixel().Height();
762cdf0e10cSrcweir
763cdf0e10cSrcweir nSelected=pPopupMenu->Execute( this, aPoint );
764cdf0e10cSrcweir
765cdf0e10cSrcweir if(nSelected)
766cdf0e10cSrcweir {
767cdf0e10cSrcweir aMLink.Call(this);
768cdf0e10cSrcweir }
769cdf0e10cSrcweir SetPressed( sal_False);
770cdf0e10cSrcweir }
771cdf0e10cSrcweir }
772cdf0e10cSrcweir
PreNotify(NotifyEvent & rNEvt)773cdf0e10cSrcweir long ScExtIButton::PreNotify( NotifyEvent& rNEvt )
774cdf0e10cSrcweir {
775cdf0e10cSrcweir sal_uInt16 nSwitch=rNEvt.GetType();
776cdf0e10cSrcweir if(nSwitch==EVENT_MOUSEBUTTONUP)
777cdf0e10cSrcweir {
778cdf0e10cSrcweir MouseButtonUp(*rNEvt.GetMouseEvent());
779cdf0e10cSrcweir }
780cdf0e10cSrcweir
781cdf0e10cSrcweir return ImageButton::PreNotify(rNEvt );
782cdf0e10cSrcweir }
783cdf0e10cSrcweir
IMPL_LINK(ScExtIButton,TimerHdl,Timer *,EMPTYARG)784cdf0e10cSrcweir IMPL_LINK( ScExtIButton, TimerHdl, Timer*, EMPTYARG )
785cdf0e10cSrcweir {
786cdf0e10cSrcweir StartPopup();
787cdf0e10cSrcweir return 0;
788cdf0e10cSrcweir }
789cdf0e10cSrcweir
790cdf0e10cSrcweir /*
791cdf0e10cSrcweir static void ImplDrawToolArrow( ToolBox* pBox, long nX, long nY, sal_Bool bBlack,
792cdf0e10cSrcweir sal_Bool bLeft = sal_False, sal_Bool bTop = sal_False )
793cdf0e10cSrcweir {
794cdf0e10cSrcweir Color aOldFillColor = pBox->GetFillColor();
795cdf0e10cSrcweir WindowAlign eAlign = pBox->meAlign;
796cdf0e10cSrcweir if ( bLeft )
797cdf0e10cSrcweir eAlign = WINDOWALIGN_RIGHT;
798cdf0e10cSrcweir else if ( bTop )
799cdf0e10cSrcweir eAlign = WINDOWALIGN_BOTTOM;
800cdf0e10cSrcweir
801cdf0e10cSrcweir switch ( eAlign )
802cdf0e10cSrcweir {
803cdf0e10cSrcweir case WINDOWALIGN_LEFT:
804cdf0e10cSrcweir if ( bBlack )
805cdf0e10cSrcweir pBox->SetFillColor( Color( COL_BLACK ) );
806cdf0e10cSrcweir pBox->DrawRect( Rectangle( nX+0, nY+0, nX+0, nY+6 ) );
807cdf0e10cSrcweir pBox->DrawRect( Rectangle( nX+1, nY+1, nX+1, nY+5 ) );
808cdf0e10cSrcweir pBox->DrawRect( Rectangle( nX+2, nY+2, nX+2, nY+4 ) );
809cdf0e10cSrcweir pBox->DrawRect( Rectangle( nX+3, nY+3, nX+3, nY+3 ) );
810cdf0e10cSrcweir if ( bBlack )
811cdf0e10cSrcweir {
812cdf0e10cSrcweir pBox->SetFillColor( aOldFillColor );
813cdf0e10cSrcweir pBox->DrawRect( Rectangle( nX+1, nY+2, nX+1, nY+4 ) );
814cdf0e10cSrcweir pBox->DrawRect( Rectangle( nX+2, nY+3, nX+2, nY+3 ) );
815cdf0e10cSrcweir }
816cdf0e10cSrcweir break;
817cdf0e10cSrcweir case WINDOWALIGN_TOP:
818cdf0e10cSrcweir if ( bBlack )
819cdf0e10cSrcweir pBox->SetFillColor( Color( COL_BLACK ) );
820cdf0e10cSrcweir pBox->DrawRect( Rectangle( nX+0, nY+0, nX+6, nY+0 ) );
821cdf0e10cSrcweir pBox->DrawRect( Rectangle( nX+1, nY+1, nX+5, nY+1 ) );
822cdf0e10cSrcweir pBox->DrawRect( Rectangle( nX+2, nY+2, nX+4, nY+2 ) );
823cdf0e10cSrcweir pBox->DrawRect( Rectangle( nX+3, nY+3, nX+3, nY+3 ) );
824cdf0e10cSrcweir if ( bBlack )
825cdf0e10cSrcweir {
826cdf0e10cSrcweir pBox->SetFillColor( aOldFillColor );
827cdf0e10cSrcweir pBox->DrawRect( Rectangle( nX+2, nY+1, nX+4, nY+1 ) );
828cdf0e10cSrcweir pBox->DrawRect( Rectangle( nX+3, nY+2, nX+3, nY+2 ) );
829cdf0e10cSrcweir }
830cdf0e10cSrcweir break;
831cdf0e10cSrcweir case WINDOWALIGN_RIGHT:
832cdf0e10cSrcweir if ( bBlack )
833cdf0e10cSrcweir pBox->SetFillColor( Color( COL_BLACK ) );
834cdf0e10cSrcweir pBox->DrawRect( Rectangle( nX+3, nY+0, nX+3, nY+6 ) );
835cdf0e10cSrcweir pBox->DrawRect( Rectangle( nX+2, nY+1, nX+2, nY+5 ) );
836cdf0e10cSrcweir pBox->DrawRect( Rectangle( nX+1, nY+2, nX+1, nY+4 ) );
837cdf0e10cSrcweir pBox->DrawRect( Rectangle( nX+0, nY+3, nX+0, nY+3 ) );
838cdf0e10cSrcweir if ( bBlack )
839cdf0e10cSrcweir {
840cdf0e10cSrcweir pBox->SetFillColor( aOldFillColor );
841cdf0e10cSrcweir pBox->DrawRect( Rectangle( nX+2, nY+2, nX+2, nY+4 ) );
842cdf0e10cSrcweir pBox->DrawRect( Rectangle( nX+1, nY+3, nX+1, nY+3 ) );
843cdf0e10cSrcweir }
844cdf0e10cSrcweir break;
845cdf0e10cSrcweir case WINDOWALIGN_BOTTOM:
846cdf0e10cSrcweir if ( bBlack )
847cdf0e10cSrcweir pBox->SetFillColor( Color( COL_BLACK ) );
848cdf0e10cSrcweir pBox->DrawRect( Rectangle( nX+0, nY+3, nX+6, nY+3 ) );
849cdf0e10cSrcweir pBox->DrawRect( Rectangle( nX+1, nY+2, nX+5, nY+2 ) );
850cdf0e10cSrcweir pBox->DrawRect( Rectangle( nX+2, nY+1, nX+4, nY+1 ) );
851cdf0e10cSrcweir pBox->DrawRect( Rectangle( nX+3, nY+0, nX+3, nY+0 ) );
852cdf0e10cSrcweir if ( bBlack )
853cdf0e10cSrcweir {
854cdf0e10cSrcweir pBox->SetFillColor( aOldFillColor );
855cdf0e10cSrcweir pBox->DrawRect( Rectangle( nX+2, nY+2, nX+4, nY+2 ) );
856cdf0e10cSrcweir pBox->DrawRect( Rectangle( nX+3, nY+1, nX+3, nY+1 ) );
857cdf0e10cSrcweir }
858cdf0e10cSrcweir break;
859cdf0e10cSrcweir }
860cdf0e10cSrcweir }
861cdf0e10cSrcweir Down
862cdf0e10cSrcweir - Timer starten
863cdf0e10cSrcweir
864cdf0e10cSrcweir Click
865cdf0e10cSrcweir - Timer abbrechen
866cdf0e10cSrcweir
867cdf0e10cSrcweir Timer
868cdf0e10cSrcweir if ( ??? )
869cdf0e10cSrcweir {
870cdf0e10cSrcweir - SetPressed( sal_True );
871cdf0e10cSrcweir - EndSelection();
872cdf0e10cSrcweir - Menu anzeigen
873cdf0e10cSrcweir - SetPressed( sal_False );
874cdf0e10cSrcweir }
875cdf0e10cSrcweir
876cdf0e10cSrcweir
877cdf0e10cSrcweir */
878