xref: /AOO41X/main/sw/source/ui/fmtui/tmpdlg.cxx (revision 707fc0d4d52eb4f69d89a98ffec6918ca5de6326)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_sw.hxx"
26 
27 #ifdef SW_DLLIMPLEMENTATION
28 #undef SW_DLLIMPLEMENTATION
29 #endif
30 
31 
32 #include <hintids.hxx>
33 
34 #ifndef _SVSTDARR_STRINGSSORTDTOR
35 #define _SVSTDARR_STRINGSSORTDTOR
36 #include <svl/svstdarr.hxx>
37 #endif
38 #include <vcl/msgbox.hxx>
39 #include <sfx2/viewfrm.hxx>
40 #include <svx/hdft.hxx>
41 #include <editeng/flstitem.hxx>
42 #include <svx/htmlmode.hxx>
43 #include <svtools/htmlcfg.hxx>
44 #include <svl/cjkoptions.hxx>
45 #include <numpara.hxx>
46 #include <fmtclds.hxx>
47 #include <swtypes.hxx>
48 #include <swmodule.hxx>
49 #include <errhdl.hxx>       // fuer Create-Methoden
50 #include <wrtsh.hxx>
51 #ifndef _VIEW_HXX
52 #include <view.hxx>
53 #endif
54 #include <wdocsh.hxx>
55 #include <viewopt.hxx>
56 #include <pgfnote.hxx>
57 #ifndef _PGFGRID_HXX
58 #include <pggrid.hxx>
59 #endif
60 #ifndef _TMPDLG_HXX
61 #include <tmpdlg.hxx>       // der Dialog
62 #endif
63 #include <column.hxx>       // Spalten
64 #include <drpcps.hxx>       // Initialen
65 #include <frmpage.hxx>      // Rahmen
66 #include <wrap.hxx>         // Rahmen
67 #include <frmmgr.hxx>       // Rahmen
68 #include <ccoll.hxx>        // CondColl
69 #include <swuiccoll.hxx>
70 #include <docstyle.hxx>     //
71 #include <fmtcol.hxx>       //
72 #include <macassgn.hxx>     //
73 #include <poolfmt.hxx>
74 #include <uitool.hxx>
75 #include <shellres.hxx>
76 
77 #ifndef _CMDID_H
78 #include <cmdid.h>
79 #endif
80 #ifndef _HELPID_H
81 #include <helpid.h>
82 #endif
83 #ifndef _GLOBALS_HRC
84 #include <globals.hrc>
85 #endif
86 #ifndef _FMTUI_HRC
87 #include <fmtui.hrc>
88 #endif
89 #include <SwStyleNameMapper.hxx>
90 #include <svx/svxids.hrc>
91 #include <svl/stritem.hxx>
92 #include <svl/aeitem.hxx>
93 #include <svl/slstitm.hxx>
94 #include <svl/eitem.hxx>
95 #include <svl/intitem.hxx>
96 #include <svx/svxdlg.hxx>
97 #include <svx/dialogs.hrc>
98 #include <svx/flagsdef.hxx>
99 
100 extern SW_DLLPUBLIC SwWrtShell* GetActiveWrtShell();
101 
102 /*--------------------------------------------------------------------
103     Beschreibung:   Der Traeger des Dialoges
104  --------------------------------------------------------------------*/
105 
106 SwTemplateDlg::SwTemplateDlg(Window*            pParent,
107                              SfxStyleSheetBase& rBase,
108                              sal_uInt16             nRegion,
109                              sal_Bool               bColumn,
110                              SwWrtShell*        pActShell,
111                              sal_Bool               bNew ) :
112     SfxStyleDialog( pParent,
113                     SW_RES(DLG_TEMPLATE_BASE + nRegion),
114                     rBase,
115                     sal_False,
116                     0 ),
117     nType( nRegion ),
118     pWrtShell(pActShell),
119     bNewStyle(bNew)
120 {
121     FreeResource();
122 
123     nHtmlMode = ::GetHtmlMode(pWrtShell->GetView().GetDocShell());
124     SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
125     DBG_ASSERT(pFact, "Dialogdiet fail!");
126     // TabPages zusammenfieseln
127     switch( nRegion )
128     {
129         // Zeichenvorlagen
130         case SFX_STYLE_FAMILY_CHAR:
131         {
132             DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_NAME ), "GetTabPageCreatorFunc fail!");
133             DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_NAME ) , "GetTabPageRangesFunc fail!");
134             AddTabPage(TP_CHAR_STD, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_NAME ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_NAME ) );
135 
136             DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_EFFECTS ), "GetTabPageCreatorFunc fail!");
137             DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_EFFECTS ) , "GetTabPageRangesFunc fail!");
138             AddTabPage(TP_CHAR_EXT, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_EFFECTS ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_EFFECTS ) );
139 
140             DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_POSITION ), "GetTabPageCreatorFunc fail!");
141             DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_POSITION ) , "GetTabPageRangesFunc fail!");
142             AddTabPage(TP_CHAR_POS, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_POSITION ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_POSITION ) );
143 
144             DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_TWOLINES ), "GetTabPageCreatorFunc fail!");
145             DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_TWOLINES ) , "GetTabPageRangesFunc fail!");
146             AddTabPage(TP_CHAR_TWOLN, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_TWOLINES ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_TWOLINES ) );
147 
148             DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageCreatorFunc fail!");
149             DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ) , "GetTabPageRangesFunc fail!");
150             AddTabPage(TP_BACKGROUND, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ) );
151 
152             SvtCJKOptions aCJKOptions;
153             if(nHtmlMode & HTMLMODE_ON || !aCJKOptions.IsDoubleLinesEnabled())
154                 RemoveTabPage(TP_CHAR_TWOLN);
155         }
156         break;
157         // Absatzvorlagen
158         case SFX_STYLE_FAMILY_PARA:
159         {
160                 DBG_ASSERT(pFact->GetTabPageCreatorFunc(RID_SVXPAGE_STD_PARAGRAPH), "GetTabPageCreatorFunc fail!");
161                 DBG_ASSERT(pFact->GetTabPageRangesFunc(RID_SVXPAGE_STD_PARAGRAPH), "GetTabPageRangesFunc fail!");
162                 AddTabPage( TP_PARA_STD,    pFact->GetTabPageCreatorFunc(RID_SVXPAGE_STD_PARAGRAPH),        pFact->GetTabPageRangesFunc(RID_SVXPAGE_STD_PARAGRAPH) );
163 
164                 DBG_ASSERT(pFact->GetTabPageCreatorFunc(RID_SVXPAGE_ALIGN_PARAGRAPH), "GetTabPageCreatorFunc fail!");
165                 DBG_ASSERT(pFact->GetTabPageRangesFunc(RID_SVXPAGE_ALIGN_PARAGRAPH), "GetTabPageRangesFunc fail!");
166                 AddTabPage( TP_PARA_ALIGN,  pFact->GetTabPageCreatorFunc(RID_SVXPAGE_ALIGN_PARAGRAPH),      pFact->GetTabPageRangesFunc(RID_SVXPAGE_ALIGN_PARAGRAPH) );
167 
168                 DBG_ASSERT(pFact->GetTabPageCreatorFunc(RID_SVXPAGE_EXT_PARAGRAPH), "GetTabPageCreatorFunc fail!");
169                 DBG_ASSERT(pFact->GetTabPageRangesFunc(RID_SVXPAGE_EXT_PARAGRAPH), "GetTabPageRangesFunc fail!");
170                 AddTabPage( TP_PARA_EXT,    pFact->GetTabPageCreatorFunc(RID_SVXPAGE_EXT_PARAGRAPH),        pFact->GetTabPageRangesFunc(RID_SVXPAGE_EXT_PARAGRAPH) );
171 
172                 DBG_ASSERT(pFact->GetTabPageCreatorFunc(RID_SVXPAGE_PARA_ASIAN), "GetTabPageCreatorFunc fail!");
173                 DBG_ASSERT(pFact->GetTabPageRangesFunc(RID_SVXPAGE_PARA_ASIAN), "GetTabPageRangesFunc fail!");
174                 AddTabPage( TP_PARA_ASIAN,  pFact->GetTabPageCreatorFunc(RID_SVXPAGE_PARA_ASIAN),       pFact->GetTabPageRangesFunc(RID_SVXPAGE_PARA_ASIAN) );
175 
176                 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_NAME ), "GetTabPageCreatorFunc fail!");
177                 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_NAME ), "GetTabPageRangesFunc fail!");
178                 AddTabPage(TP_CHAR_STD, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_NAME ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_NAME ) );
179 
180                 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_EFFECTS ), "GetTabPageCreatorFunc fail!");
181                 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_EFFECTS ), "GetTabPageRangesFunc fail!");
182                 AddTabPage(TP_CHAR_EXT, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_EFFECTS ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_EFFECTS ) );
183 
184                 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_POSITION ), "GetTabPageCreatorFunc fail!");
185                 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_POSITION ) , "GetTabPageRangesFunc fail!");
186                 AddTabPage(TP_CHAR_POS, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_POSITION ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_POSITION ) );
187 
188                 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_TWOLINES ), "GetTabPageCreatorFunc fail!");
189                 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_TWOLINES ) , "GetTabPageRangesFunc fail!");
190                 AddTabPage(TP_CHAR_TWOLN, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_TWOLINES ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_CHAR_TWOLINES ) );
191 
192 
193             DBG_ASSERT(pFact->GetTabPageCreatorFunc(RID_SVXPAGE_TABULATOR), "GetTabPageCreatorFunc fail!");
194             DBG_ASSERT(pFact->GetTabPageRangesFunc(RID_SVXPAGE_TABULATOR), "GetTabPageRangesFunc fail!");
195             AddTabPage( TP_TABULATOR,   pFact->GetTabPageCreatorFunc(RID_SVXPAGE_TABULATOR),        pFact->GetTabPageRangesFunc(RID_SVXPAGE_TABULATOR) );
196 
197 
198             AddTabPage(TP_NUMPARA,   SwParagraphNumTabPage::Create,
199                                     SwParagraphNumTabPage::GetRanges);
200             AddTabPage(TP_DROPCAPS,     SwDropCapsPage::Create,
201                                         SwDropCapsPage::GetRanges );
202             DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageCreatorFunc fail!");
203             DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageRangesFunc fail!");
204             AddTabPage(TP_BACKGROUND, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ) );
205             DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), "GetTabPageCreatorFunc fail!");
206             DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BORDER ), "GetTabPageRangesFunc fail!");
207             AddTabPage(TP_BORDER, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BORDER ) );
208 
209             AddTabPage( TP_CONDCOLL,    SwCondCollPage::Create,
210                                         SwCondCollPage::GetRanges );
211             if( (!bNewStyle && RES_CONDTXTFMTCOLL != ((SwDocStyleSheet&)rBase).GetCollection()->Which())
212             || nHtmlMode & HTMLMODE_ON )
213                 RemoveTabPage(TP_CONDCOLL);
214 
215             SvtCJKOptions aCJKOptions;
216             if(nHtmlMode & HTMLMODE_ON)
217             {
218                 SvxHtmlOptions* pHtmlOpt = SvxHtmlOptions::Get();
219                 if (!pHtmlOpt->IsPrintLayoutExtension())
220                     RemoveTabPage(TP_PARA_EXT);
221                 RemoveTabPage(TP_PARA_ASIAN);
222                 RemoveTabPage(TP_TABULATOR);
223                 RemoveTabPage(TP_NUMPARA);
224                 RemoveTabPage(TP_CHAR_TWOLN);
225                 if(!(nHtmlMode & HTMLMODE_FULL_STYLES))
226                 {
227                     RemoveTabPage(TP_BACKGROUND);
228                     RemoveTabPage(TP_DROPCAPS);
229                 }
230                 if(!(nHtmlMode & HTMLMODE_PARA_BORDER))
231                     RemoveTabPage(TP_BORDER);
232             }
233             else
234             {
235                 if(!aCJKOptions.IsAsianTypographyEnabled())
236                     RemoveTabPage(TP_PARA_ASIAN);
237                 if(!aCJKOptions.IsDoubleLinesEnabled())
238                     RemoveTabPage(TP_CHAR_TWOLN);
239             }
240         }
241         break;
242         // Rahmenvorlagen
243         case SFX_STYLE_FAMILY_FRAME:
244         {
245             AddTabPage(TP_FRM_STD,      SwFrmPage::Create,
246                                         SwFrmPage::GetRanges );
247             AddTabPage(TP_FRM_ADD,      SwFrmAddPage::Create,
248                                         SwFrmAddPage::GetRanges );
249             AddTabPage(TP_FRM_WRAP,     SwWrapTabPage::Create,
250                                         SwWrapTabPage::GetRanges );
251             DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageCreatorFunc fail!");
252             DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageRangesFunc fail!");
253             AddTabPage(TP_BACKGROUND, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ) );
254             DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), "GetTabPageCreatorFunc fail!");
255             DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BORDER ), "GetTabPageRangesFunc fail!");
256             AddTabPage(TP_BORDER, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BORDER ) );
257 
258             AddTabPage(TP_COLUMN,       SwColumnPage::Create,
259                                         SwColumnPage::GetRanges );
260 
261             AddTabPage( TP_MACRO_ASSIGN, pFact->GetTabPageCreatorFunc(RID_SVXPAGE_MACROASSIGN), 0);
262 
263             // Auskommentiert wegen Bug #45776 (per default keine Breite&Groesse in Rahmenvorlagen)
264 /*          SwFmtFrmSize aSize( (const SwFmtFrmSize&)rBase.
265                                             GetItemSet().Get(RES_FRM_SIZE));
266             if( !aSize.GetWidth() )
267             {
268                 aSize.SetWidth( DFLT_WIDTH );
269                 aSize.SetHeight( DFLT_HEIGHT );
270                 rBase.GetItemSet().Put( aSize );
271             }*/
272         break;
273         }
274         // Seitenvorlagen
275         case SFX_STYLE_FAMILY_PAGE:
276         {
277             DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageCreatorFunc fail!");
278             DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ), "GetTabPageRangesFunc fail!");
279             AddTabPage(TP_BACKGROUND, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BACKGROUND ) );
280             AddTabPage(TP_HEADER_PAGE,      String(SW_RES(STR_PAGE_HEADER)),
281                                             SvxHeaderPage::Create,
282                                             SvxHeaderPage::GetRanges );
283             AddTabPage(TP_FOOTER_PAGE,      String(SW_RES(STR_PAGE_FOOTER)),
284                                             SvxFooterPage::Create,
285                                             SvxFooterPage::GetRanges );
286             if(bColumn)
287                 SetCurPageId(TP_COLUMN);
288 
289             DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_PAGE ), "GetTabPageCreatorFunc fail!");
290             DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_PAGE ), "GetTabPageRangesFunc fail!");
291             AddTabPage(TP_PAGE_STD,         String(SW_RES(STR_PAGE_STD)),
292                                             pFact->GetTabPageCreatorFunc( RID_SVXPAGE_PAGE ),
293                                             pFact->GetTabPageRangesFunc( RID_SVXPAGE_PAGE ),
294                                             sal_False,
295                                             1 ); // nach der Verwalten-Page
296             if(!pActShell || 0 == ::GetHtmlMode(pWrtShell->GetView().GetDocShell()))
297             {
298                 DBG_ASSERT(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), "GetTabPageCreatorFunc fail!");
299                 DBG_ASSERT(pFact->GetTabPageRangesFunc( RID_SVXPAGE_BORDER ), "GetTabPageRangesFunc fail!");
300                 AddTabPage(TP_BORDER,           String(SW_RES(STR_PAGE_BORDER)),
301                                 pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), pFact->GetTabPageRangesFunc( RID_SVXPAGE_BORDER ) );
302                 AddTabPage(TP_COLUMN,           String(SW_RES(STR_PAGE_COLUMN)),
303                                                 SwColumnPage::Create,
304                                                 SwColumnPage::GetRanges );
305                 AddTabPage(TP_FOOTNOTE_PAGE,    String(SW_RES(STR_PAGE_FOOTNOTE)),
306                                                 SwFootNotePage::Create,
307                                                 SwFootNotePage::GetRanges );
308                 AddTabPage(TP_TEXTGRID_PAGE,    String(SW_RES(STR_PAGE_TEXTGRID)),
309                                                 SwTextGridPage::Create,
310                                                 SwTextGridPage::GetRanges );
311                 SvtCJKOptions aCJKOptions;
312                 if(!aCJKOptions.IsAsianTypographyEnabled())
313                     RemoveTabPage(TP_TEXTGRID_PAGE);
314             }
315 
316 
317         }
318         break;
319         // Numerierungsvorlagen
320         case SFX_STYLE_FAMILY_PSEUDO:
321         {
322             AddTabPage( RID_SVXPAGE_PICK_SINGLE_NUM );
323             AddTabPage( RID_SVXPAGE_PICK_BULLET );
324             AddTabPage( RID_SVXPAGE_PICK_NUM );
325             AddTabPage( RID_SVXPAGE_PICK_BMP);
326             AddTabPage( RID_SVXPAGE_NUM_OPTIONS );
327             AddTabPage( RID_SVXPAGE_NUM_POSITION );
328 
329 
330 /*          const SfxPoolItem* pItem;
331             if(SFX_ITEM_SET == rBase.GetItemSet().GetItemState(
332                 FN_PARAM_ACT_NUMBER, sal_False, &pItem ))
333             {
334 //              pActNum = (ActNumberFormat*)((const SwPtrItem*)pItem)->GetValue();
335             }
336 */
337         }
338         break;
339 
340         default:
341             ASSERT(!this, "Falsche Familie");
342 
343     }
344 }
345 
346 /*--------------------------------------------------------------------
347     Beschreibung:
348  --------------------------------------------------------------------*/
349 
350 SwTemplateDlg::~SwTemplateDlg()
351 {
352 }
353 
354 /*--------------------------------------------------------------------
355     Beschreibung:
356  --------------------------------------------------------------------*/
357 
358 short SwTemplateDlg::Ok()
359 {
360     short nRet = SfxTabDialog::Ok();
361     if( RET_OK == nRet )
362     {
363         const SfxPoolItem *pOutItem, *pExItem;
364         if( SFX_ITEM_SET == pExampleSet->GetItemState(
365             SID_ATTR_NUMBERING_RULE, sal_False, &pExItem ) &&
366             ( !GetOutputItemSet() ||
367             SFX_ITEM_SET != GetOutputItemSet()->GetItemState(
368             SID_ATTR_NUMBERING_RULE, sal_False, &pOutItem ) ||
369             *pExItem != *pOutItem ))
370         {
371             if( GetOutputItemSet() )
372                 ((SfxItemSet*)GetOutputItemSet())->Put( *pExItem );
373             else
374                 nRet = RET_CANCEL;
375         }
376     }
377     else
378         //JP 09.01.98 Bug #46446#:
379         // das ist der Ok - Handler also muss auf OK defaultet werden!
380         nRet = RET_OK;
381     return nRet;
382 }
383 
384 /*--------------------------------------------------------------------
385     Beschreibung:
386  --------------------------------------------------------------------*/
387 
388 const SfxItemSet* SwTemplateDlg::GetRefreshedSet()
389 {
390     SfxItemSet* pInSet = GetInputSetImpl();
391     pInSet->ClearItem();
392     pInSet->SetParent( &GetStyleSheet().GetItemSet() );
393     return pInSet;
394 }
395 
396 /*--------------------------------------------------------------------
397     Beschreibung:
398  --------------------------------------------------------------------*/
399 
400 void SwTemplateDlg::PageCreated( sal_uInt16 nId, SfxTabPage &rPage )
401 {
402     //Namen der Vorlagen und Metric setzen
403     String sNumCharFmt, sBulletCharFmt;
404     SwStyleNameMapper::FillUIName( RES_POOLCHR_NUM_LEVEL, sNumCharFmt);
405     SwStyleNameMapper::FillUIName( RES_POOLCHR_BUL_LEVEL, sBulletCharFmt);
406     SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool()));
407 
408     switch( nId )
409     {
410         case TP_CHAR_STD:
411             {
412                 ASSERT(::GetActiveView(), "keine View aktiv");
413 
414                 SvxFontListItem aFontListItem( *( (SvxFontListItem*)::GetActiveView()->
415                     GetDocShell()->GetItem( SID_ATTR_CHAR_FONTLIST ) ) );
416 
417                 aSet.Put (SvxFontListItem( aFontListItem.GetFontList(), SID_ATTR_CHAR_FONTLIST));
418                 sal_uInt32 nFlags = 0;
419                 if(rPage.GetItemSet().GetParent() && 0 == (nHtmlMode & HTMLMODE_ON ))
420                     nFlags = SVX_RELATIVE_MODE;
421                 if( SFX_STYLE_FAMILY_CHAR == nType )
422                     nFlags = nFlags|SVX_PREVIEW_CHARACTER;
423                 aSet.Put (SfxUInt32Item(SID_FLAG_TYPE, nFlags));
424                 rPage.PageCreated(aSet);
425             }
426             break;
427 
428         case TP_CHAR_EXT:
429             {
430             sal_uInt32 nFlags = SVX_ENABLE_FLASH;
431             if( SFX_STYLE_FAMILY_CHAR == nType )
432                 nFlags = nFlags|SVX_PREVIEW_CHARACTER;
433             aSet.Put (SfxUInt32Item(SID_FLAG_TYPE, nFlags));
434             rPage.PageCreated(aSet);
435             }
436             break;
437 
438         case TP_CHAR_POS:
439             if( SFX_STYLE_FAMILY_CHAR == nType )
440             {
441                 aSet.Put (SfxUInt32Item(SID_FLAG_TYPE, SVX_PREVIEW_CHARACTER));
442                 rPage.PageCreated(aSet);
443             }
444         break;
445 
446         case TP_CHAR_TWOLN:
447             if( SFX_STYLE_FAMILY_CHAR == nType )
448             {
449                 aSet.Put (SfxUInt32Item(SID_FLAG_TYPE, SVX_PREVIEW_CHARACTER));
450                 rPage.PageCreated(aSet);
451             }
452         break;
453 
454         case TP_PARA_STD:
455             {
456                 if( rPage.GetItemSet().GetParent() )
457                 {
458                     aSet.Put(SfxUInt32Item(SID_SVXSTDPARAGRAPHTABPAGE_ABSLINEDIST,MM50/10));
459                     aSet.Put(SfxUInt32Item(SID_SVXSTDPARAGRAPHTABPAGE_FLAGSET,0x000F));
460                     rPage.PageCreated(aSet);
461                 }
462 
463             }
464             break;
465         case TP_NUMPARA:
466             {
467                 //-->#outlinelevel added by zhaojianwei
468                 //  handle if the current paragraph style is assigned to a list level of outline style,
469                 SwTxtFmtColl* pTmpColl = pWrtShell->FindTxtFmtCollByName( GetStyleSheet().GetName() );
470                 if( pTmpColl && pTmpColl->IsAssignedToListLevelOfOutlineStyle() )
471                 {
472                     ((SwParagraphNumTabPage&)rPage).DisableOutline() ;
473                     ((SwParagraphNumTabPage&)rPage).DisableNumbering();
474                 }//<-end
475                 ListBox & rBox = ((SwParagraphNumTabPage&)rPage).GetStyleBox();
476                 SfxStyleSheetBasePool* pPool = pWrtShell->GetView().GetDocShell()->GetStyleSheetPool();
477                 pPool->SetSearchMask(SFX_STYLE_FAMILY_PSEUDO, SFXSTYLEBIT_ALL);
478                 const SfxStyleSheetBase* pBase = pPool->First();
479                 SvStringsSortDtor aNames;
480                 while(pBase)
481                 {
482                     aNames.Insert(new String(pBase->GetName()));
483                     pBase = pPool->Next();
484                 }
485                 for(sal_uInt16 i = 0; i < aNames.Count(); i++)
486                     rBox.InsertEntry(*aNames.GetObject(i));
487         }
488         break;
489         case TP_PARA_ALIGN:
490             {
491                 aSet.Put(SfxBoolItem(SID_SVXPARAALIGNTABPAGE_ENABLEJUSTIFYEXT,sal_True));
492                 rPage.PageCreated(aSet);
493             }
494             break;
495 
496         case TP_FRM_STD:
497             ((SwFrmPage&)rPage).SetNewFrame( sal_True );
498             ((SwFrmPage&)rPage).SetFormatUsed( sal_True );
499             break;
500 
501         case TP_FRM_ADD:
502             ((SwFrmAddPage&)rPage).SetFormatUsed(sal_True);
503             ((SwFrmAddPage&)rPage).SetNewFrame(sal_True);
504             break;
505 
506         case TP_FRM_WRAP:
507             ((SwWrapTabPage&)rPage).SetFormatUsed( sal_True, sal_False );
508             break;
509 
510         case TP_COLUMN:
511             if( nType == SFX_STYLE_FAMILY_FRAME )
512                 ((SwColumnPage&)rPage).SetFrmMode(sal_True);
513             ((SwColumnPage&)rPage).SetFormatUsed( sal_True );
514             break;
515 
516         case TP_BACKGROUND:
517         {
518             sal_Int32 nFlagType = 0;
519             if( SFX_STYLE_FAMILY_PARA == nType )
520                 nFlagType |= SVX_SHOW_PARACTL;
521             if( SFX_STYLE_FAMILY_CHAR != nType )
522                 nFlagType |= SVX_SHOW_SELECTOR;
523             if( SFX_STYLE_FAMILY_FRAME == nType )
524                 nFlagType |= SVX_ENABLE_TRANSPARENCY;
525             aSet.Put (SfxUInt32Item(SID_FLAG_TYPE, nFlagType));
526             rPage.PageCreated(aSet);
527         }
528         break;
529         case TP_CONDCOLL:
530             ((SwCondCollPage&)rPage).SetCollection(
531                 ((SwDocStyleSheet&)GetStyleSheet()).GetCollection(), bNewStyle );
532             break;
533 
534         case TP_PAGE_STD:
535             if(0 == (nHtmlMode & HTMLMODE_ON ))
536             {
537                 List aList;
538                 String* pNew = new String;
539                 SwStyleNameMapper::FillUIName( RES_POOLCOLL_TEXT, *pNew );
540                 aList.Insert( pNew, (sal_uLong)0 );
541                 if( pWrtShell )
542                 {
543                     SfxStyleSheetBasePool* pStyleSheetPool = pWrtShell->
544                                 GetView().GetDocShell()->GetStyleSheetPool();
545                     pStyleSheetPool->SetSearchMask(SFX_STYLE_FAMILY_PARA);
546                     SfxStyleSheetBase *pFirstStyle = pStyleSheetPool->First();
547                     while(pFirstStyle)
548                     {
549                         aList.Insert( new String(pFirstStyle->GetName()),
550                                         aList.Count());
551                         pFirstStyle = pStyleSheetPool->Next();
552                     }
553                 }
554                 aSet.Put (SfxStringListItem(SID_COLLECT_LIST, &aList));
555                 rPage.PageCreated(aSet);
556                 for( sal_uInt16 i = (sal_uInt16)aList.Count(); i; --i )
557                     delete (String*)aList.Remove(i);
558             }
559             break;
560 
561         case TP_MACRO_ASSIGN:
562         {
563             SfxAllItemSet aNewSet(*aSet.GetPool());
564             aNewSet.Put( SwMacroAssignDlg::AddEvents(MACASSGN_ALLFRM) );
565             if ( pWrtShell )
566                 rPage.SetFrame( pWrtShell->GetView().GetViewFrame()->GetFrame().GetFrameInterface() );
567             rPage.PageCreated(aNewSet);
568             break;
569         }
570 
571         case RID_SVXPAGE_PICK_NUM:
572             {
573                 aSet.Put (SfxStringItem(SID_NUM_CHAR_FMT,sNumCharFmt));
574                 aSet.Put (SfxStringItem(SID_BULLET_CHAR_FMT,sBulletCharFmt));
575                 rPage.PageCreated(aSet);
576             }
577         break;
578         case RID_SVXPAGE_NUM_OPTIONS:
579         {
580 
581             aSet.Put (SfxStringItem(SID_NUM_CHAR_FMT,sNumCharFmt));
582             aSet.Put (SfxStringItem(SID_BULLET_CHAR_FMT,sBulletCharFmt));
583             // Zeichenvorlagen sammeln
584             ListBox rCharFmtLB(this);
585             rCharFmtLB.Clear();
586             rCharFmtLB.InsertEntry( ViewShell::GetShellRes()->aStrNone );
587             SwDocShell* pDocShell = ::GetActiveWrtShell()->GetView().GetDocShell();
588             ::FillCharStyleListBox(rCharFmtLB,  pDocShell);
589             List aList;
590             for(sal_uInt16 j = 0; j < rCharFmtLB.GetEntryCount(); j++)
591             {
592 
593                  aList.Insert( new XubString(rCharFmtLB.GetEntry(j)), LIST_APPEND );
594             }
595             aSet.Put( SfxStringListItem( SID_CHAR_FMT_LIST_BOX,&aList ) ) ;
596             FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebDocShell, pDocShell));
597             aSet.Put ( SfxAllEnumItem(SID_METRIC_ITEM, static_cast< sal_uInt16 >(eMetric)));
598             rPage.PageCreated(aSet);
599             for( sal_uInt16 i = (sal_uInt16)aList.Count(); i; --i )
600                     delete (XubString*)aList.Remove(i);
601             aList.Clear();
602         }
603         break;
604         case RID_SVXPAGE_NUM_POSITION:
605         {
606             SwDocShell* pDocShell = ::GetActiveWrtShell()->GetView().GetDocShell();
607             FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebDocShell, pDocShell));
608 
609             aSet.Put ( SfxAllEnumItem(SID_METRIC_ITEM, static_cast< sal_uInt16 >(eMetric)));
610             rPage.PageCreated(aSet);
611         }
612         break;
613         case  RID_SVXPAGE_PICK_BULLET :
614             {
615                 aSet.Put (SfxStringItem(SID_BULLET_CHAR_FMT,sBulletCharFmt));
616                 rPage.PageCreated(aSet);
617             }
618         break;
619         case  TP_HEADER_PAGE:
620             if(0 == (nHtmlMode & HTMLMODE_ON ))
621                 ((SvxHeaderPage&)rPage).EnableDynamicSpacing();
622         break;
623         case  TP_FOOTER_PAGE:
624             if(0 == (nHtmlMode & HTMLMODE_ON ))
625                 ((SvxFooterPage&)rPage).EnableDynamicSpacing();
626         break;
627         case TP_BORDER :
628             if( SFX_STYLE_FAMILY_PARA == nType )
629             {
630                 aSet.Put (SfxUInt16Item(SID_SWMODE_TYPE,SW_BORDER_MODE_PARA));
631             }
632             else if( SFX_STYLE_FAMILY_FRAME == nType )
633             {
634                 aSet.Put (SfxUInt16Item(SID_SWMODE_TYPE,SW_BORDER_MODE_FRAME));
635             }
636             rPage.PageCreated(aSet);
637 
638         break;
639     }
640 }
641 
642 
643 
644