xref: /aoo4110/main/sw/source/ui/ribbar/workctrl.cxx (revision b1cdbd2c)
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_sw.hxx"
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski 
28*b1cdbd2cSJim Jagielski 
29*b1cdbd2cSJim Jagielski #include <string> // HACK: prevent conflict between STLPORT and Workshop headers
30*b1cdbd2cSJim Jagielski #include <svl/eitem.hxx>
31*b1cdbd2cSJim Jagielski #include <svx/htmlmode.hxx>
32*b1cdbd2cSJim Jagielski #include <sfx2/dispatch.hxx>
33*b1cdbd2cSJim Jagielski #include <sfx2/bindings.hxx>
34*b1cdbd2cSJim Jagielski #ifndef _SFX_IMAGEMGR_HXX
35*b1cdbd2cSJim Jagielski #include <sfx2/imagemgr.hxx>
36*b1cdbd2cSJim Jagielski #endif
37*b1cdbd2cSJim Jagielski #include <swmodule.hxx>
38*b1cdbd2cSJim Jagielski #ifndef _VIEW_HXX
39*b1cdbd2cSJim Jagielski #include <view.hxx>
40*b1cdbd2cSJim Jagielski #endif
41*b1cdbd2cSJim Jagielski #include <initui.hxx>
42*b1cdbd2cSJim Jagielski #include <viewopt.hxx>
43*b1cdbd2cSJim Jagielski #ifndef _DOCSH_HXX
44*b1cdbd2cSJim Jagielski #include <docsh.hxx>
45*b1cdbd2cSJim Jagielski #endif
46*b1cdbd2cSJim Jagielski #include <gloshdl.hxx>
47*b1cdbd2cSJim Jagielski #include <glosdoc.hxx>
48*b1cdbd2cSJim Jagielski #include <gloslst.hxx>
49*b1cdbd2cSJim Jagielski #include <workctrl.hxx>
50*b1cdbd2cSJim Jagielski #ifndef _WORKCTRL_HRC
51*b1cdbd2cSJim Jagielski #include <workctrl.hrc>
52*b1cdbd2cSJim Jagielski #endif
53*b1cdbd2cSJim Jagielski #ifndef _CMDID_H
54*b1cdbd2cSJim Jagielski #include <cmdid.h>
55*b1cdbd2cSJim Jagielski #endif
56*b1cdbd2cSJim Jagielski #ifndef _HELPID_H
57*b1cdbd2cSJim Jagielski #include <helpid.h>
58*b1cdbd2cSJim Jagielski #endif
59*b1cdbd2cSJim Jagielski #include <wrtsh.hxx>
60*b1cdbd2cSJim Jagielski #include <svl/imageitm.hxx>
61*b1cdbd2cSJim Jagielski #include <vcl/lstbox.hxx>
62*b1cdbd2cSJim Jagielski #include <rtl/ustring.hxx>
63*b1cdbd2cSJim Jagielski #include "swabstdlg.hxx"
64*b1cdbd2cSJim Jagielski #include <misc.hrc>
65*b1cdbd2cSJim Jagielski 
66*b1cdbd2cSJim Jagielski #include <vcl/svapp.hxx>
67*b1cdbd2cSJim Jagielski 
68*b1cdbd2cSJim Jagielski //JP 14.01.99: Size Abpruefung
69*b1cdbd2cSJim Jagielski #define NAVI_ENTRIES 20
70*b1cdbd2cSJim Jagielski #if NAVI_ENTRIES != NID_COUNT
71*b1cdbd2cSJim Jagielski #error SwScrollNaviPopup-CTOR static Array falsche Size. Wurden neue IDs zugefuegt ??
72*b1cdbd2cSJim Jagielski #endif
73*b1cdbd2cSJim Jagielski 
74*b1cdbd2cSJim Jagielski using ::rtl::OUString;
75*b1cdbd2cSJim Jagielski using namespace ::com::sun::star;
76*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::uno;
77*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::beans;
78*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::frame;
79*b1cdbd2cSJim Jagielski 
80*b1cdbd2cSJim Jagielski SFX_IMPL_TOOLBOX_CONTROL( SwTbxInsertCtrl, SfxImageItem);
81*b1cdbd2cSJim Jagielski SFX_IMPL_TOOLBOX_CONTROL( SwTbxAutoTextCtrl, SfxBoolItem );
82*b1cdbd2cSJim Jagielski 
83*b1cdbd2cSJim Jagielski /**********************************************************************
84*b1cdbd2cSJim Jagielski 
85*b1cdbd2cSJim Jagielski **********************************************************************/
SwTbxInsertCtrl(sal_uInt16 nSlotId,sal_uInt16 nId,ToolBox & rTbx)86*b1cdbd2cSJim Jagielski SwTbxInsertCtrl::SwTbxInsertCtrl(
87*b1cdbd2cSJim Jagielski     sal_uInt16 nSlotId,
88*b1cdbd2cSJim Jagielski     sal_uInt16 nId,
89*b1cdbd2cSJim Jagielski 	ToolBox& rTbx ) :
90*b1cdbd2cSJim Jagielski         SfxToolBoxControl( nSlotId, nId, rTbx ),
91*b1cdbd2cSJim Jagielski 		nLastSlotId(FN_INSERT_CTRL == nSlotId ? FN_INSERT_TABLE : SID_INSERT_DIAGRAM)
92*b1cdbd2cSJim Jagielski {
93*b1cdbd2cSJim Jagielski 	rTbx.SetItemBits( nId, TIB_DROPDOWN | rTbx.GetItemBits( nId ) );
94*b1cdbd2cSJim Jagielski }
95*b1cdbd2cSJim Jagielski /**********************************************************************
96*b1cdbd2cSJim Jagielski 
97*b1cdbd2cSJim Jagielski **********************************************************************/
~SwTbxInsertCtrl()98*b1cdbd2cSJim Jagielski SwTbxInsertCtrl::~SwTbxInsertCtrl()
99*b1cdbd2cSJim Jagielski {
100*b1cdbd2cSJim Jagielski }
101*b1cdbd2cSJim Jagielski 
update()102*b1cdbd2cSJim Jagielski void SAL_CALL SwTbxInsertCtrl::update() throw (uno::RuntimeException)
103*b1cdbd2cSJim Jagielski {
104*b1cdbd2cSJim Jagielski     ToolBox& rTbx = GetToolBox();
105*b1cdbd2cSJim Jagielski     rtl::OUString aSlotURL( RTL_CONSTASCII_USTRINGPARAM( "slot:" ));
106*b1cdbd2cSJim Jagielski     aSlotURL += rtl::OUString::valueOf( sal_Int32( nLastSlotId ));
107*b1cdbd2cSJim Jagielski     Image aImage = GetImage( m_xFrame,
108*b1cdbd2cSJim Jagielski                              aSlotURL,
109*b1cdbd2cSJim Jagielski                              hasBigImages(),
110*b1cdbd2cSJim Jagielski                              rTbx.GetSettings().GetStyleSettings().GetHighContrastMode() );
111*b1cdbd2cSJim Jagielski 
112*b1cdbd2cSJim Jagielski 	rTbx.SetItemImage(GetId(), aImage);
113*b1cdbd2cSJim Jagielski     rTbx.Invalidate();
114*b1cdbd2cSJim Jagielski 
115*b1cdbd2cSJim Jagielski     SfxToolBoxControl::update();
116*b1cdbd2cSJim Jagielski }
117*b1cdbd2cSJim Jagielski 
118*b1cdbd2cSJim Jagielski /**********************************************************************
119*b1cdbd2cSJim Jagielski 
120*b1cdbd2cSJim Jagielski **********************************************************************/
121*b1cdbd2cSJim Jagielski 
122*b1cdbd2cSJim Jagielski 
StateChanged(sal_uInt16,SfxItemState eState,const SfxPoolItem * pState)123*b1cdbd2cSJim Jagielski void SwTbxInsertCtrl::StateChanged( sal_uInt16 /*nSID*/,
124*b1cdbd2cSJim Jagielski 									  SfxItemState eState,
125*b1cdbd2cSJim Jagielski 									  const SfxPoolItem* pState )
126*b1cdbd2cSJim Jagielski {
127*b1cdbd2cSJim Jagielski 	sal_uInt16 nId = GetId();
128*b1cdbd2cSJim Jagielski 	GetToolBox().EnableItem( nId, (GetItemState(pState) != SFX_ITEM_DISABLED) );
129*b1cdbd2cSJim Jagielski 
130*b1cdbd2cSJim Jagielski 	if( eState == SFX_ITEM_AVAILABLE )
131*b1cdbd2cSJim Jagielski 	{
132*b1cdbd2cSJim Jagielski         const SfxImageItem* pItem = PTR_CAST( SfxImageItem, pState );
133*b1cdbd2cSJim Jagielski         if(pItem)
134*b1cdbd2cSJim Jagielski 		{
135*b1cdbd2cSJim Jagielski 			nLastSlotId = pItem->GetValue();
136*b1cdbd2cSJim Jagielski 			if( nLastSlotId )
137*b1cdbd2cSJim Jagielski 				nId = nLastSlotId;
138*b1cdbd2cSJim Jagielski 
139*b1cdbd2cSJim Jagielski             rtl::OUString aSlotURL( RTL_CONSTASCII_USTRINGPARAM( "slot:" ));
140*b1cdbd2cSJim Jagielski             aSlotURL += rtl::OUString::valueOf( sal_Int32( nId ));
141*b1cdbd2cSJim Jagielski             ToolBox& rBox = GetToolBox();
142*b1cdbd2cSJim Jagielski             Image aImage = GetImage( m_xFrame,
143*b1cdbd2cSJim Jagielski                                      aSlotURL,
144*b1cdbd2cSJim Jagielski                                      hasBigImages(),
145*b1cdbd2cSJim Jagielski                                      rBox.GetSettings().GetStyleSettings().GetHighContrastMode() );
146*b1cdbd2cSJim Jagielski             rBox.SetItemImage(GetId(), aImage);
147*b1cdbd2cSJim Jagielski             rBox.SetItemImageMirrorMode( GetId(), sal_False );
148*b1cdbd2cSJim Jagielski 			rBox.SetItemImageAngle( GetId(), pItem->GetRotation() );
149*b1cdbd2cSJim Jagielski             rBox.SetItemImageMirrorMode( GetId(), pItem->IsMirrored() );
150*b1cdbd2cSJim Jagielski         }
151*b1cdbd2cSJim Jagielski 	}
152*b1cdbd2cSJim Jagielski 
153*b1cdbd2cSJim Jagielski }
154*b1cdbd2cSJim Jagielski /**********************************************************************
155*b1cdbd2cSJim Jagielski 
156*b1cdbd2cSJim Jagielski **********************************************************************/
157*b1cdbd2cSJim Jagielski 
158*b1cdbd2cSJim Jagielski 
CreatePopupWindow()159*b1cdbd2cSJim Jagielski SfxPopupWindow* SwTbxInsertCtrl::CreatePopupWindow()
160*b1cdbd2cSJim Jagielski {
161*b1cdbd2cSJim Jagielski 	if(GetSlotId() == FN_INSERT_CTRL)
162*b1cdbd2cSJim Jagielski 	{
163*b1cdbd2cSJim Jagielski         OUString aToolBarResStr( RTL_CONSTASCII_USTRINGPARAM( "private:resource/toolbar/insertbar" ));
164*b1cdbd2cSJim Jagielski         createAndPositionSubToolBar( aToolBarResStr );
165*b1cdbd2cSJim Jagielski 	}
166*b1cdbd2cSJim Jagielski 	else /* FN_INSERT_OBJ_CTRL */
167*b1cdbd2cSJim Jagielski 	{
168*b1cdbd2cSJim Jagielski         OUString aToolBarResStr( RTL_CONSTASCII_USTRINGPARAM( "private:resource/toolbar/insertobjectbar" ));
169*b1cdbd2cSJim Jagielski         createAndPositionSubToolBar( aToolBarResStr );
170*b1cdbd2cSJim Jagielski 	}
171*b1cdbd2cSJim Jagielski     return NULL;
172*b1cdbd2cSJim Jagielski }
173*b1cdbd2cSJim Jagielski 
174*b1cdbd2cSJim Jagielski /**********************************************************************
175*b1cdbd2cSJim Jagielski 
176*b1cdbd2cSJim Jagielski **********************************************************************/
177*b1cdbd2cSJim Jagielski 
178*b1cdbd2cSJim Jagielski 
GetPopupWindowType() const179*b1cdbd2cSJim Jagielski SfxPopupWindowType	SwTbxInsertCtrl::GetPopupWindowType() const
180*b1cdbd2cSJim Jagielski {
181*b1cdbd2cSJim Jagielski 	return nLastSlotId ? SFX_POPUPWINDOW_ONTIMEOUT : SFX_POPUPWINDOW_ONCLICK;
182*b1cdbd2cSJim Jagielski }
183*b1cdbd2cSJim Jagielski 
184*b1cdbd2cSJim Jagielski 
185*b1cdbd2cSJim Jagielski /**********************************************************************
186*b1cdbd2cSJim Jagielski 
187*b1cdbd2cSJim Jagielski **********************************************************************/
188*b1cdbd2cSJim Jagielski 
189*b1cdbd2cSJim Jagielski 
Select(sal_Bool)190*b1cdbd2cSJim Jagielski void SwTbxInsertCtrl::Select( sal_Bool /*bMod1*/ )
191*b1cdbd2cSJim Jagielski {
192*b1cdbd2cSJim Jagielski 	if( nLastSlotId )
193*b1cdbd2cSJim Jagielski     {
194*b1cdbd2cSJim Jagielski         SfxViewShell*   pCurSh( SfxViewShell::Current() );
195*b1cdbd2cSJim Jagielski         SfxDispatcher*  pDispatch( 0 );
196*b1cdbd2cSJim Jagielski 
197*b1cdbd2cSJim Jagielski         if ( pCurSh )
198*b1cdbd2cSJim Jagielski         {
199*b1cdbd2cSJim Jagielski             SfxViewFrame*   pViewFrame = pCurSh->GetViewFrame();
200*b1cdbd2cSJim Jagielski             if ( pViewFrame )
201*b1cdbd2cSJim Jagielski                 pDispatch = pViewFrame->GetDispatcher();
202*b1cdbd2cSJim Jagielski         }
203*b1cdbd2cSJim Jagielski 
204*b1cdbd2cSJim Jagielski         if ( pDispatch )
205*b1cdbd2cSJim Jagielski             pDispatch->Execute(nLastSlotId);
206*b1cdbd2cSJim Jagielski     }
207*b1cdbd2cSJim Jagielski }
208*b1cdbd2cSJim Jagielski 
209*b1cdbd2cSJim Jagielski /**********************************************************************
210*b1cdbd2cSJim Jagielski 
211*b1cdbd2cSJim Jagielski **********************************************************************/
212*b1cdbd2cSJim Jagielski 
213*b1cdbd2cSJim Jagielski 
SwTbxAutoTextCtrl(sal_uInt16 nSlotId,sal_uInt16 nId,ToolBox & rTbx)214*b1cdbd2cSJim Jagielski SwTbxAutoTextCtrl::SwTbxAutoTextCtrl(
215*b1cdbd2cSJim Jagielski     sal_uInt16 nSlotId,
216*b1cdbd2cSJim Jagielski     sal_uInt16 nId,
217*b1cdbd2cSJim Jagielski 	ToolBox& rTbx ) :
218*b1cdbd2cSJim Jagielski 	SfxToolBoxControl( nSlotId, nId, rTbx ),
219*b1cdbd2cSJim Jagielski     pPopup(0),
220*b1cdbd2cSJim Jagielski     pView(0)
221*b1cdbd2cSJim Jagielski {
222*b1cdbd2cSJim Jagielski 	rTbx.SetItemBits( nId, TIB_DROPDOWN | rTbx.GetItemBits( nId ) );
223*b1cdbd2cSJim Jagielski }
224*b1cdbd2cSJim Jagielski /**********************************************************************
225*b1cdbd2cSJim Jagielski 
226*b1cdbd2cSJim Jagielski **********************************************************************/
227*b1cdbd2cSJim Jagielski 
228*b1cdbd2cSJim Jagielski 
~SwTbxAutoTextCtrl()229*b1cdbd2cSJim Jagielski SwTbxAutoTextCtrl::~SwTbxAutoTextCtrl()
230*b1cdbd2cSJim Jagielski {
231*b1cdbd2cSJim Jagielski 	DelPopup();
232*b1cdbd2cSJim Jagielski }
233*b1cdbd2cSJim Jagielski 
234*b1cdbd2cSJim Jagielski /**********************************************************************
235*b1cdbd2cSJim Jagielski 
236*b1cdbd2cSJim Jagielski **********************************************************************/
237*b1cdbd2cSJim Jagielski 
238*b1cdbd2cSJim Jagielski 
CreatePopupWindow()239*b1cdbd2cSJim Jagielski SfxPopupWindow* SwTbxAutoTextCtrl::CreatePopupWindow()
240*b1cdbd2cSJim Jagielski {
241*b1cdbd2cSJim Jagielski 	pView = ::GetActiveView();
242*b1cdbd2cSJim Jagielski 	if(pView && !pView->GetDocShell()->IsReadOnly() &&
243*b1cdbd2cSJim Jagielski 	   !pView->GetWrtShell().HasReadonlySel() )
244*b1cdbd2cSJim Jagielski 	{
245*b1cdbd2cSJim Jagielski 		ToolBox& rBox = GetToolBox();
246*b1cdbd2cSJim Jagielski 
247*b1cdbd2cSJim Jagielski         Rectangle aItemRect( rBox.GetItemRect( GetId() ) );
248*b1cdbd2cSJim Jagielski         Point aPt(rBox.OutputToScreenPixel(aItemRect.TopLeft()));
249*b1cdbd2cSJim Jagielski         aPt.X() += aItemRect.GetWidth()/2;
250*b1cdbd2cSJim Jagielski         aPt.Y() += aItemRect.GetHeight()/2;
251*b1cdbd2cSJim Jagielski         if(pView)
252*b1cdbd2cSJim Jagielski 		{
253*b1cdbd2cSJim Jagielski 			Link aLnk = LINK(this, SwTbxAutoTextCtrl, PopupHdl);
254*b1cdbd2cSJim Jagielski 
255*b1cdbd2cSJim Jagielski 			if (GetSlotId() == FN_INSERT_FIELD_CTRL)
256*b1cdbd2cSJim Jagielski 			{
257*b1cdbd2cSJim Jagielski 				pPopup = new PopupMenu(SW_RES(RID_INSERT_FIELD_CTRL));
258*b1cdbd2cSJim Jagielski 				pPopup->SetSelectHdl(aLnk);
259*b1cdbd2cSJim Jagielski 
260*b1cdbd2cSJim Jagielski 				if (::GetHtmlMode(pView->GetDocShell()) & HTMLMODE_ON)
261*b1cdbd2cSJim Jagielski 				{
262*b1cdbd2cSJim Jagielski 					pPopup->RemoveItem(pPopup->GetItemPos(FN_INSERT_FLD_PGCOUNT));
263*b1cdbd2cSJim Jagielski 					pPopup->RemoveItem(pPopup->GetItemPos(FN_INSERT_FLD_TOPIC));
264*b1cdbd2cSJim Jagielski 				}
265*b1cdbd2cSJim Jagielski 			}
266*b1cdbd2cSJim Jagielski 			else
267*b1cdbd2cSJim Jagielski 			{
268*b1cdbd2cSJim Jagielski 				pPopup = new PopupMenu;
269*b1cdbd2cSJim Jagielski 				SwGlossaryList* pGlossaryList = ::GetGlossaryList();
270*b1cdbd2cSJim Jagielski 				sal_uInt16 nGroupCount = pGlossaryList->GetGroupCount();
271*b1cdbd2cSJim Jagielski 				for(sal_uInt16 i = 1; i <= nGroupCount; i++)
272*b1cdbd2cSJim Jagielski 				{
273*b1cdbd2cSJim Jagielski 					// Gruppenname mit Pfad-Extension besorgen
274*b1cdbd2cSJim Jagielski 					String sTitle;
275*b1cdbd2cSJim Jagielski 					String sGroupName = pGlossaryList->GetGroupName(i - 1, sal_False, &sTitle);
276*b1cdbd2cSJim Jagielski 					sal_uInt16 nBlockCount = pGlossaryList->GetBlockCount(i -1);
277*b1cdbd2cSJim Jagielski 					if(nBlockCount)
278*b1cdbd2cSJim Jagielski 					{
279*b1cdbd2cSJim Jagielski 						sal_uInt16 nIndex = 100 * (i);
280*b1cdbd2cSJim Jagielski 						// aber ohne extension einfuegen
281*b1cdbd2cSJim Jagielski 						pPopup->InsertItem( i, sTitle);//sGroupName.GetToken(0, GLOS_DELIM));
282*b1cdbd2cSJim Jagielski 						PopupMenu* pSub = new PopupMenu;
283*b1cdbd2cSJim Jagielski 						pSub->SetSelectHdl(aLnk);
284*b1cdbd2cSJim Jagielski 						pPopup->SetPopupMenu(i, pSub);
285*b1cdbd2cSJim Jagielski 						for(sal_uInt16 j = 0; j < nBlockCount; j++)
286*b1cdbd2cSJim Jagielski 						{
287*b1cdbd2cSJim Jagielski 							String sEntry;
288*b1cdbd2cSJim Jagielski 							String sLongName(pGlossaryList->GetBlockName(i - 1, j, sEntry));
289*b1cdbd2cSJim Jagielski 							sEntry.AppendAscii(" - ");
290*b1cdbd2cSJim Jagielski 							sEntry += sLongName;
291*b1cdbd2cSJim Jagielski 							pSub->InsertItem(++nIndex, sEntry);
292*b1cdbd2cSJim Jagielski 						}
293*b1cdbd2cSJim Jagielski 					}
294*b1cdbd2cSJim Jagielski 				}
295*b1cdbd2cSJim Jagielski 			}
296*b1cdbd2cSJim Jagielski 		}
297*b1cdbd2cSJim Jagielski 		ToolBox* pToolBox = &GetToolBox();
298*b1cdbd2cSJim Jagielski 		sal_uInt16 nId = GetId();
299*b1cdbd2cSJim Jagielski 		pToolBox->SetItemDown( nId, sal_True );
300*b1cdbd2cSJim Jagielski 
301*b1cdbd2cSJim Jagielski 		pPopup->Execute( pToolBox, pToolBox->GetItemRect( nId ),
302*b1cdbd2cSJim Jagielski             (pToolBox->GetAlign() == WINDOWALIGN_TOP || pToolBox->GetAlign() == WINDOWALIGN_BOTTOM) ?
303*b1cdbd2cSJim Jagielski                 POPUPMENU_EXECUTE_DOWN : POPUPMENU_EXECUTE_RIGHT );
304*b1cdbd2cSJim Jagielski 
305*b1cdbd2cSJim Jagielski 		pToolBox->SetItemDown( nId, sal_False );
306*b1cdbd2cSJim Jagielski 	}
307*b1cdbd2cSJim Jagielski 	GetToolBox().EndSelection();
308*b1cdbd2cSJim Jagielski 	DelPopup();
309*b1cdbd2cSJim Jagielski 	return 0;
310*b1cdbd2cSJim Jagielski 
311*b1cdbd2cSJim Jagielski }
312*b1cdbd2cSJim Jagielski 
313*b1cdbd2cSJim Jagielski 
314*b1cdbd2cSJim Jagielski /**********************************************************************
315*b1cdbd2cSJim Jagielski 
316*b1cdbd2cSJim Jagielski **********************************************************************/
317*b1cdbd2cSJim Jagielski 
318*b1cdbd2cSJim Jagielski 
GetPopupWindowType() const319*b1cdbd2cSJim Jagielski SfxPopupWindowType SwTbxAutoTextCtrl::GetPopupWindowType() const
320*b1cdbd2cSJim Jagielski {
321*b1cdbd2cSJim Jagielski 	return SFX_POPUPWINDOW_ONTIMEOUT;
322*b1cdbd2cSJim Jagielski }
323*b1cdbd2cSJim Jagielski 
324*b1cdbd2cSJim Jagielski /**********************************************************************
325*b1cdbd2cSJim Jagielski 
326*b1cdbd2cSJim Jagielski **********************************************************************/
327*b1cdbd2cSJim Jagielski 
328*b1cdbd2cSJim Jagielski 
StateChanged(sal_uInt16 nSID,SfxItemState eState,const SfxPoolItem * pState)329*b1cdbd2cSJim Jagielski void SwTbxAutoTextCtrl::StateChanged( sal_uInt16 nSID,
330*b1cdbd2cSJim Jagielski 											  SfxItemState eState,
331*b1cdbd2cSJim Jagielski 											  const SfxPoolItem* pState )
332*b1cdbd2cSJim Jagielski {
333*b1cdbd2cSJim Jagielski 	GetToolBox().EnableItem( GetId(), (GetItemState(pState) != SFX_ITEM_DISABLED) );
334*b1cdbd2cSJim Jagielski 	if(FN_INSERT_FIELD_CTRL == nSID && eState >= SFX_ITEM_DEFAULT)
335*b1cdbd2cSJim Jagielski 	{
336*b1cdbd2cSJim Jagielski 		GetToolBox().CheckItem( GetId(), ((SfxBoolItem*)pState)->GetValue() );
337*b1cdbd2cSJim Jagielski 	}
338*b1cdbd2cSJim Jagielski }
339*b1cdbd2cSJim Jagielski 
340*b1cdbd2cSJim Jagielski /**********************************************************************
341*b1cdbd2cSJim Jagielski 
342*b1cdbd2cSJim Jagielski **********************************************************************/
343*b1cdbd2cSJim Jagielski 
344*b1cdbd2cSJim Jagielski 
IMPL_LINK(SwTbxAutoTextCtrl,PopupHdl,PopupMenu *,pMenu)345*b1cdbd2cSJim Jagielski IMPL_LINK(SwTbxAutoTextCtrl, PopupHdl, PopupMenu*, pMenu)
346*b1cdbd2cSJim Jagielski {
347*b1cdbd2cSJim Jagielski     sal_uInt16 nId = pMenu->GetCurItemId();
348*b1cdbd2cSJim Jagielski 
349*b1cdbd2cSJim Jagielski 	if ( GetSlotId() == FN_INSERT_FIELD_CTRL)
350*b1cdbd2cSJim Jagielski 	{
351*b1cdbd2cSJim Jagielski 		Sequence< PropertyValue > aArgs;
352*b1cdbd2cSJim Jagielski         const char* pChar = 0;
353*b1cdbd2cSJim Jagielski         switch(nId)
354*b1cdbd2cSJim Jagielski         {
355*b1cdbd2cSJim Jagielski             case FN_INSERT_FLD_DATE:
356*b1cdbd2cSJim Jagielski                 pChar = ".uno:InsertDateField";
357*b1cdbd2cSJim Jagielski             break;
358*b1cdbd2cSJim Jagielski             case FN_INSERT_FLD_TIME:
359*b1cdbd2cSJim Jagielski                 pChar = ".uno:InsertTimeField";
360*b1cdbd2cSJim Jagielski             break;
361*b1cdbd2cSJim Jagielski             case FN_INSERT_FLD_PGNUMBER:
362*b1cdbd2cSJim Jagielski                 pChar = ".uno:InsertPageNumberField";
363*b1cdbd2cSJim Jagielski             break;
364*b1cdbd2cSJim Jagielski             case FN_INSERT_FLD_PGCOUNT:
365*b1cdbd2cSJim Jagielski                 pChar = ".uno:InsertPageCountField";
366*b1cdbd2cSJim Jagielski             break;
367*b1cdbd2cSJim Jagielski             case FN_INSERT_FLD_TOPIC:
368*b1cdbd2cSJim Jagielski                 pChar = ".uno:InsertTopicField";
369*b1cdbd2cSJim Jagielski             break;
370*b1cdbd2cSJim Jagielski             case FN_INSERT_FLD_TITLE:
371*b1cdbd2cSJim Jagielski                 pChar = ".uno:InsertTitleField";
372*b1cdbd2cSJim Jagielski             break;
373*b1cdbd2cSJim Jagielski             case FN_INSERT_FLD_AUTHOR:
374*b1cdbd2cSJim Jagielski                 pChar = ".uno:InsertAuthorField";
375*b1cdbd2cSJim Jagielski             break;
376*b1cdbd2cSJim Jagielski             default:
377*b1cdbd2cSJim Jagielski                 pChar = ".uno:InsertFieldCtrl";
378*b1cdbd2cSJim Jagielski         }
379*b1cdbd2cSJim Jagielski         Dispatch( rtl::OUString::createFromAscii( pChar ),aArgs );
380*b1cdbd2cSJim Jagielski 	}
381*b1cdbd2cSJim Jagielski 	else
382*b1cdbd2cSJim Jagielski 	{
383*b1cdbd2cSJim Jagielski         sal_uInt16 nBlock = nId / 100;
384*b1cdbd2cSJim Jagielski 
385*b1cdbd2cSJim Jagielski 		SwGlossaryList* pGlossaryList = ::GetGlossaryList();
386*b1cdbd2cSJim Jagielski 		String sShortName;
387*b1cdbd2cSJim Jagielski 		String sGroup = pGlossaryList->GetGroupName(nBlock - 1, sal_False);
388*b1cdbd2cSJim Jagielski 		String sLongName(pGlossaryList->GetBlockName(nBlock - 1, nId - (100 * nBlock) - 1, sShortName));
389*b1cdbd2cSJim Jagielski 
390*b1cdbd2cSJim Jagielski 		SwGlossaryHdl* pGlosHdl = pView->GetGlosHdl();
391*b1cdbd2cSJim Jagielski 		SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
392*b1cdbd2cSJim Jagielski 		DBG_ASSERT(pFact, "Dialogdiet fail!");
393*b1cdbd2cSJim Jagielski 		::GlossarySetActGroup fnSetActGroup = pFact->SetGlossaryActGroupFunc( DLG_RENAME_GLOS );
394*b1cdbd2cSJim Jagielski 		if ( fnSetActGroup )
395*b1cdbd2cSJim Jagielski 			(*fnSetActGroup)( sGroup );
396*b1cdbd2cSJim Jagielski 		pGlosHdl->SetCurGroup(sGroup, sal_True);
397*b1cdbd2cSJim Jagielski 		pGlosHdl->InsertGlossary(sShortName);
398*b1cdbd2cSJim Jagielski 	}
399*b1cdbd2cSJim Jagielski 	return 0;
400*b1cdbd2cSJim Jagielski }
401*b1cdbd2cSJim Jagielski 
402*b1cdbd2cSJim Jagielski /**********************************************************************
403*b1cdbd2cSJim Jagielski 
404*b1cdbd2cSJim Jagielski **********************************************************************/
405*b1cdbd2cSJim Jagielski 
406*b1cdbd2cSJim Jagielski 
DelPopup()407*b1cdbd2cSJim Jagielski void SwTbxAutoTextCtrl::DelPopup()
408*b1cdbd2cSJim Jagielski {
409*b1cdbd2cSJim Jagielski 	if(pPopup)
410*b1cdbd2cSJim Jagielski 	{
411*b1cdbd2cSJim Jagielski 		if (GetSlotId() != FN_INSERT_FIELD_CTRL)
412*b1cdbd2cSJim Jagielski 		{
413*b1cdbd2cSJim Jagielski 			for( sal_uInt16 i = 0; i < pPopup->GetItemCount(); i ++ )
414*b1cdbd2cSJim Jagielski 			{
415*b1cdbd2cSJim Jagielski 				PopupMenu* pSubPopup = pPopup->GetPopupMenu(pPopup->GetItemId(i));
416*b1cdbd2cSJim Jagielski 				delete pSubPopup;
417*b1cdbd2cSJim Jagielski 			}
418*b1cdbd2cSJim Jagielski 		}
419*b1cdbd2cSJim Jagielski 		delete pPopup;
420*b1cdbd2cSJim Jagielski 		pPopup = 0;
421*b1cdbd2cSJim Jagielski 	}
422*b1cdbd2cSJim Jagielski }
423*b1cdbd2cSJim Jagielski 
424*b1cdbd2cSJim Jagielski /*-----------------19.02.97 10.52-------------------
425*b1cdbd2cSJim Jagielski 	Navigations-Popup
426*b1cdbd2cSJim Jagielski --------------------------------------------------*/
427*b1cdbd2cSJim Jagielski // determine the order of the toolbox items
428*b1cdbd2cSJim Jagielski static sal_uInt16 __READONLY_DATA aNavigationInsertIds[ NAVI_ENTRIES ] =
429*b1cdbd2cSJim Jagielski {
430*b1cdbd2cSJim Jagielski     // -- first line
431*b1cdbd2cSJim Jagielski     NID_TBL,
432*b1cdbd2cSJim Jagielski     NID_FRM,
433*b1cdbd2cSJim Jagielski     NID_GRF,
434*b1cdbd2cSJim Jagielski     NID_OLE,
435*b1cdbd2cSJim Jagielski     NID_PGE,
436*b1cdbd2cSJim Jagielski     NID_OUTL,
437*b1cdbd2cSJim Jagielski     NID_MARK,
438*b1cdbd2cSJim Jagielski     NID_DRW,
439*b1cdbd2cSJim Jagielski     NID_CTRL,
440*b1cdbd2cSJim Jagielski     NID_PREV,
441*b1cdbd2cSJim Jagielski     // -- second line
442*b1cdbd2cSJim Jagielski     NID_REG,
443*b1cdbd2cSJim Jagielski     NID_BKM,
444*b1cdbd2cSJim Jagielski     NID_SEL,
445*b1cdbd2cSJim Jagielski     NID_FTN,
446*b1cdbd2cSJim Jagielski     NID_POSTIT,
447*b1cdbd2cSJim Jagielski     NID_SRCH_REP,
448*b1cdbd2cSJim Jagielski     NID_INDEX_ENTRY,
449*b1cdbd2cSJim Jagielski     NID_TABLE_FORMULA,
450*b1cdbd2cSJim Jagielski     NID_TABLE_FORMULA_ERROR,
451*b1cdbd2cSJim Jagielski     NID_NEXT
452*b1cdbd2cSJim Jagielski };
453*b1cdbd2cSJim Jagielski static const char* __READONLY_DATA aNavigationHelpIds[ NAVI_ENTRIES ] =
454*b1cdbd2cSJim Jagielski {
455*b1cdbd2cSJim Jagielski     // -- first line
456*b1cdbd2cSJim Jagielski     HID_NID_TBL,
457*b1cdbd2cSJim Jagielski     HID_NID_FRM,
458*b1cdbd2cSJim Jagielski     HID_NID_GRF,
459*b1cdbd2cSJim Jagielski     HID_NID_OLE,
460*b1cdbd2cSJim Jagielski     HID_NID_PGE,
461*b1cdbd2cSJim Jagielski     HID_NID_OUTL,
462*b1cdbd2cSJim Jagielski     HID_NID_MARK,
463*b1cdbd2cSJim Jagielski     HID_NID_DRW,
464*b1cdbd2cSJim Jagielski     HID_NID_CTRL,
465*b1cdbd2cSJim Jagielski     HID_NID_PREV,
466*b1cdbd2cSJim Jagielski     // -- second line
467*b1cdbd2cSJim Jagielski     HID_NID_REG,
468*b1cdbd2cSJim Jagielski     HID_NID_BKM,
469*b1cdbd2cSJim Jagielski     HID_NID_SEL,
470*b1cdbd2cSJim Jagielski     HID_NID_FTN,
471*b1cdbd2cSJim Jagielski     HID_NID_POSTIT,
472*b1cdbd2cSJim Jagielski     HID_NID_SRCH_REP,
473*b1cdbd2cSJim Jagielski     HID_NID_INDEX_ENTRY,
474*b1cdbd2cSJim Jagielski     HID_NID_TABLE_FORMULA,
475*b1cdbd2cSJim Jagielski     HID_NID_TABLE_FORMULA_ERROR,
476*b1cdbd2cSJim Jagielski     HID_NID_NEXT
477*b1cdbd2cSJim Jagielski };
478*b1cdbd2cSJim Jagielski 
SwScrollNaviPopup(sal_uInt16 nId,const Reference<XFrame> & rFrame)479*b1cdbd2cSJim Jagielski SwScrollNaviPopup::SwScrollNaviPopup( sal_uInt16 nId, const Reference< XFrame >& rFrame )
480*b1cdbd2cSJim Jagielski     : SfxPopupWindow(nId, rFrame, SW_RES(RID_SCROLL_NAVIGATION_WIN) ),
481*b1cdbd2cSJim Jagielski     aToolBox(this, 0),
482*b1cdbd2cSJim Jagielski     aSeparator(this, SW_RES(FL_SEP)),
483*b1cdbd2cSJim Jagielski     aInfoField(this, SW_RES(FI_INFO)),
484*b1cdbd2cSJim Jagielski 	aIList(SW_RES(IL_VALUES)),
485*b1cdbd2cSJim Jagielski     aIListH(SW_RES(ILH_VALUES)),
486*b1cdbd2cSJim Jagielski 	nFwdId(FN_START_OF_NEXT_PAGE),
487*b1cdbd2cSJim Jagielski 	nBackId(FN_START_OF_PREV_PAGE)
488*b1cdbd2cSJim Jagielski {
489*b1cdbd2cSJim Jagielski     sal_uInt16 i;
490*b1cdbd2cSJim Jagielski 
491*b1cdbd2cSJim Jagielski     aToolBox.SetHelpId(HID_NAVI_VS);
492*b1cdbd2cSJim Jagielski     aToolBox.SetLineCount( 2 );
493*b1cdbd2cSJim Jagielski     aToolBox.SetOutStyle(TOOLBOX_STYLE_FLAT);
494*b1cdbd2cSJim Jagielski     for( i = 0; i < NID_COUNT; i++)
495*b1cdbd2cSJim Jagielski 	{
496*b1cdbd2cSJim Jagielski         sal_uInt16 nNaviId = aNavigationInsertIds[i];
497*b1cdbd2cSJim Jagielski         String sText;
498*b1cdbd2cSJim Jagielski         ToolBoxItemBits  nTbxBits = 0;
499*b1cdbd2cSJim Jagielski         if((NID_PREV != nNaviId) && (NID_NEXT != nNaviId))
500*b1cdbd2cSJim Jagielski         {
501*b1cdbd2cSJim Jagielski             // -2, there's no string for Next/Prev
502*b1cdbd2cSJim Jagielski             sal_uInt16 nResStr = ST_TBL - 2 + nNaviId - NID_START;
503*b1cdbd2cSJim Jagielski             sText = String(SW_RES(nResStr));
504*b1cdbd2cSJim Jagielski             nTbxBits = TIB_CHECKABLE;
505*b1cdbd2cSJim Jagielski         }
506*b1cdbd2cSJim Jagielski 		else
507*b1cdbd2cSJim Jagielski 		{
508*b1cdbd2cSJim Jagielski 			if (nNaviId == NID_PREV)
509*b1cdbd2cSJim Jagielski 				sText = String(SW_RES(STR_IMGBTN_PGE_UP));
510*b1cdbd2cSJim Jagielski 			else if (nNaviId == NID_NEXT)
511*b1cdbd2cSJim Jagielski 				sText = String(SW_RES(STR_IMGBTN_PGE_DOWN));
512*b1cdbd2cSJim Jagielski 		}
513*b1cdbd2cSJim Jagielski         aToolBox.InsertItem(nNaviId, sText, nTbxBits);
514*b1cdbd2cSJim Jagielski         aToolBox.SetHelpId( nNaviId, aNavigationHelpIds[i] );
515*b1cdbd2cSJim Jagielski     }
516*b1cdbd2cSJim Jagielski     ApplyImageList();
517*b1cdbd2cSJim Jagielski     aToolBox.InsertBreak(NID_COUNT/2);
518*b1cdbd2cSJim Jagielski     // don't call it before!
519*b1cdbd2cSJim Jagielski 	FreeResource();
520*b1cdbd2cSJim Jagielski 
521*b1cdbd2cSJim Jagielski     // these are global strings
522*b1cdbd2cSJim Jagielski 	for( i = 0; i < 2 * NID_COUNT; i++)
523*b1cdbd2cSJim Jagielski 	{
524*b1cdbd2cSJim Jagielski 		sQuickHelp[i] = String(SW_RES(STR_IMGBTN_START + i));
525*b1cdbd2cSJim Jagielski 	}
526*b1cdbd2cSJim Jagielski 
527*b1cdbd2cSJim Jagielski 	Size aImgSize = aIList.GetImageSize();
528*b1cdbd2cSJim Jagielski 	aImgSize.Width() += 5;
529*b1cdbd2cSJim Jagielski 	aImgSize.Height() += 5;
530*b1cdbd2cSJim Jagielski     Size aSz = aToolBox.CalcWindowSizePixel(2);
531*b1cdbd2cSJim Jagielski     aToolBox.SetPosSizePixel( Point(), aSz );
532*b1cdbd2cSJim Jagielski     sal_uInt16 nItemId = SwView::GetMoveType();
533*b1cdbd2cSJim Jagielski     aInfoField.SetText(aToolBox.GetItemText(nItemId));
534*b1cdbd2cSJim Jagielski     aToolBox.CheckItem( nItemId, sal_True );
535*b1cdbd2cSJim Jagielski     Size aFTSize(aInfoField.GetSizePixel());
536*b1cdbd2cSJim Jagielski     Size aSepSize(aSeparator.GetSizePixel());
537*b1cdbd2cSJim Jagielski     aSepSize.Width() = aSz.Width();
538*b1cdbd2cSJim Jagielski 
539*b1cdbd2cSJim Jagielski     aSz.Height() += aFTSize.Height() + aSepSize.Height();
540*b1cdbd2cSJim Jagielski     aInfoField.SetPosSizePixel(
541*b1cdbd2cSJim Jagielski         Point(0, aSz.Height() - aFTSize.Height()), Size(aSz.Width(), aFTSize.Height()));
542*b1cdbd2cSJim Jagielski 
543*b1cdbd2cSJim Jagielski     aSeparator.SetSizePixel(aSepSize);
544*b1cdbd2cSJim Jagielski     aSeparator.SetPosPixel(Point(0, aSz.Height() - aFTSize.Height() - aSepSize.Height()));
545*b1cdbd2cSJim Jagielski 
546*b1cdbd2cSJim Jagielski     SetOutputSizePixel(aSz);
547*b1cdbd2cSJim Jagielski     aToolBox.SetSelectHdl(LINK(this, SwScrollNaviPopup, SelectHdl));
548*b1cdbd2cSJim Jagielski     aToolBox.StartSelection();
549*b1cdbd2cSJim Jagielski     aToolBox.Show();
550*b1cdbd2cSJim Jagielski }
551*b1cdbd2cSJim Jagielski /*-----------------19.02.97 12.45-------------------
552*b1cdbd2cSJim Jagielski 
553*b1cdbd2cSJim Jagielski --------------------------------------------------*/
554*b1cdbd2cSJim Jagielski 
~SwScrollNaviPopup()555*b1cdbd2cSJim Jagielski SwScrollNaviPopup::~SwScrollNaviPopup()
556*b1cdbd2cSJim Jagielski {
557*b1cdbd2cSJim Jagielski }
558*b1cdbd2cSJim Jagielski /* -----------------------------08.05.2002 14:00------------------------------
559*b1cdbd2cSJim Jagielski 
560*b1cdbd2cSJim Jagielski  ---------------------------------------------------------------------------*/
DataChanged(const DataChangedEvent & rDCEvt)561*b1cdbd2cSJim Jagielski void SwScrollNaviPopup::DataChanged( const DataChangedEvent& rDCEvt )
562*b1cdbd2cSJim Jagielski {
563*b1cdbd2cSJim Jagielski 	if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) &&
564*b1cdbd2cSJim Jagielski          (rDCEvt.GetFlags() & SETTINGS_STYLE) )
565*b1cdbd2cSJim Jagielski             ApplyImageList();
566*b1cdbd2cSJim Jagielski 
567*b1cdbd2cSJim Jagielski     Window::DataChanged( rDCEvt );
568*b1cdbd2cSJim Jagielski }
569*b1cdbd2cSJim Jagielski /* -----------------------------08.05.2002 14:02------------------------------
570*b1cdbd2cSJim Jagielski 
571*b1cdbd2cSJim Jagielski  ---------------------------------------------------------------------------*/
ApplyImageList()572*b1cdbd2cSJim Jagielski void SwScrollNaviPopup::ApplyImageList()
573*b1cdbd2cSJim Jagielski {
574*b1cdbd2cSJim Jagielski     ImageList& rImgLst = aToolBox.GetSettings().GetStyleSettings().GetHighContrastMode() ?
575*b1cdbd2cSJim Jagielski         aIListH : aIList;
576*b1cdbd2cSJim Jagielski     for(sal_uInt16 i = 0; i < NID_COUNT; i++)
577*b1cdbd2cSJim Jagielski 	{
578*b1cdbd2cSJim Jagielski         sal_uInt16 nNaviId = aNavigationInsertIds[i];
579*b1cdbd2cSJim Jagielski         aToolBox.SetItemImage(nNaviId, rImgLst.GetImage(nNaviId));
580*b1cdbd2cSJim Jagielski     }
581*b1cdbd2cSJim Jagielski }
582*b1cdbd2cSJim Jagielski /*-----------------19.02.97 13.58-------------------
583*b1cdbd2cSJim Jagielski 
584*b1cdbd2cSJim Jagielski --------------------------------------------------*/
585*b1cdbd2cSJim Jagielski 
Clone() const586*b1cdbd2cSJim Jagielski SfxPopupWindow* SwScrollNaviPopup::Clone() const
587*b1cdbd2cSJim Jagielski {
588*b1cdbd2cSJim Jagielski     return new SwScrollNaviPopup( GetId(), GetFrame() );
589*b1cdbd2cSJim Jagielski }
590*b1cdbd2cSJim Jagielski 
591*b1cdbd2cSJim Jagielski /*-----------------19.02.97 14.10-------------------
592*b1cdbd2cSJim Jagielski 
593*b1cdbd2cSJim Jagielski --------------------------------------------------*/
594*b1cdbd2cSJim Jagielski 
IMPL_LINK(SwScrollNaviPopup,SelectHdl,ToolBox *,pSet)595*b1cdbd2cSJim Jagielski IMPL_LINK(SwScrollNaviPopup, SelectHdl, ToolBox*, pSet)
596*b1cdbd2cSJim Jagielski {
597*b1cdbd2cSJim Jagielski     sal_uInt16 nSet = pSet->GetCurItemId();
598*b1cdbd2cSJim Jagielski 	if( nSet != NID_PREV && nSet != NID_NEXT )
599*b1cdbd2cSJim Jagielski 	{
600*b1cdbd2cSJim Jagielski 		SwView::SetMoveType(nSet);
601*b1cdbd2cSJim Jagielski         aToolBox.SetItemText(NID_NEXT, sQuickHelp[nSet - NID_START]);
602*b1cdbd2cSJim Jagielski         aToolBox.SetItemText(NID_PREV, sQuickHelp[nSet - NID_START + NID_COUNT]);
603*b1cdbd2cSJim Jagielski         aInfoField.SetText(aToolBox.GetItemText(nSet));
604*b1cdbd2cSJim Jagielski         //check the current button only
605*b1cdbd2cSJim Jagielski         for(sal_uInt16 i = 0; i < NID_COUNT; i++)
606*b1cdbd2cSJim Jagielski         {
607*b1cdbd2cSJim Jagielski             sal_uInt16 nItemId = aToolBox.GetItemId( i );
608*b1cdbd2cSJim Jagielski             aToolBox.CheckItem( nItemId, nItemId == nSet );
609*b1cdbd2cSJim Jagielski         }
610*b1cdbd2cSJim Jagielski     }
611*b1cdbd2cSJim Jagielski 	else
612*b1cdbd2cSJim Jagielski 	{
613*b1cdbd2cSJim Jagielski         SfxBoolItem aNext(FN_SCROLL_NEXT_PREV, NID_NEXT == nSet);
614*b1cdbd2cSJim Jagielski         Any a;
615*b1cdbd2cSJim Jagielski         Sequence< PropertyValue > aArgs( 1 );
616*b1cdbd2cSJim Jagielski         aArgs[0].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ScrollNextPrev" ));
617*b1cdbd2cSJim Jagielski         aNext.QueryValue( a );
618*b1cdbd2cSJim Jagielski         aArgs[0].Value = a;
619*b1cdbd2cSJim Jagielski         SfxToolBoxControl::Dispatch( Reference< XDispatchProvider >( GetFrame()->getController(), UNO_QUERY ),
620*b1cdbd2cSJim Jagielski                                      rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:ScrollNextPrev" )),
621*b1cdbd2cSJim Jagielski                                      aArgs );
622*b1cdbd2cSJim Jagielski     }
623*b1cdbd2cSJim Jagielski 	return 0;
624*b1cdbd2cSJim Jagielski }
625*b1cdbd2cSJim Jagielski /*-----------------23.02.97 18.21-------------------
626*b1cdbd2cSJim Jagielski 
627*b1cdbd2cSJim Jagielski --------------------------------------------------*/
628*b1cdbd2cSJim Jagielski 
MouseButtonUp(const MouseEvent & rMEvt)629*b1cdbd2cSJim Jagielski void SwScrollNaviToolBox::MouseButtonUp( const MouseEvent& rMEvt )
630*b1cdbd2cSJim Jagielski {
631*b1cdbd2cSJim Jagielski     ToolBox::MouseButtonUp(rMEvt);
632*b1cdbd2cSJim Jagielski 	if ( ((SwScrollNaviPopup*)GetParent())->IsInPopupMode() )
633*b1cdbd2cSJim Jagielski 		((SwScrollNaviPopup*)GetParent())->EndPopupMode( FLOATWIN_POPUPMODEEND_CLOSEALL );
634*b1cdbd2cSJim Jagielski }
635*b1cdbd2cSJim Jagielski 
636*b1cdbd2cSJim Jagielski /*-----------------20.06.97 13:28-------------------
637*b1cdbd2cSJim Jagielski 
638*b1cdbd2cSJim Jagielski --------------------------------------------------*/
RequestHelp(const HelpEvent & rHEvt)639*b1cdbd2cSJim Jagielski void  SwScrollNaviToolBox::RequestHelp( const HelpEvent& rHEvt )
640*b1cdbd2cSJim Jagielski {
641*b1cdbd2cSJim Jagielski 	SetItemText(NID_NEXT, SwScrollNaviPopup::GetQuickHelpText(sal_True));
642*b1cdbd2cSJim Jagielski 	SetItemText(NID_PREV, SwScrollNaviPopup::GetQuickHelpText(sal_False));
643*b1cdbd2cSJim Jagielski     ToolBox::RequestHelp( rHEvt );
644*b1cdbd2cSJim Jagielski 
645*b1cdbd2cSJim Jagielski }
646*b1cdbd2cSJim Jagielski 
647*b1cdbd2cSJim Jagielski /*-----------------20.06.97 13:41-------------------
648*b1cdbd2cSJim Jagielski 
649*b1cdbd2cSJim Jagielski --------------------------------------------------*/
GetQuickHelpText(sal_Bool bNext)650*b1cdbd2cSJim Jagielski String	SwScrollNaviPopup::GetQuickHelpText(sal_Bool bNext)
651*b1cdbd2cSJim Jagielski {
652*b1cdbd2cSJim Jagielski 	sal_uInt16 nResId = STR_IMGBTN_START;
653*b1cdbd2cSJim Jagielski 	nResId += SwView::GetMoveType() - NID_START;
654*b1cdbd2cSJim Jagielski 	if(!bNext)
655*b1cdbd2cSJim Jagielski 		nResId += NID_COUNT;
656*b1cdbd2cSJim Jagielski 	return String(SW_RES(nResId));
657*b1cdbd2cSJim Jagielski }
658*b1cdbd2cSJim Jagielski /* -----------------------------05.09.2002 13:53------------------------------
659*b1cdbd2cSJim Jagielski 
660*b1cdbd2cSJim Jagielski  ---------------------------------------------------------------------------*/
Click()661*b1cdbd2cSJim Jagielski void SwNaviImageButton::Click()
662*b1cdbd2cSJim Jagielski {
663*b1cdbd2cSJim Jagielski //    SfxBindings& rBind = SfxViewFrame::Current()->GetBindings();
664*b1cdbd2cSJim Jagielski //    rBind.ENTERREGISTRATIONS();
665*b1cdbd2cSJim Jagielski     pPopup = new
666*b1cdbd2cSJim Jagielski         SwScrollNaviPopup( FN_SCROLL_NAVIGATION,
667*b1cdbd2cSJim Jagielski                            m_xFrame );
668*b1cdbd2cSJim Jagielski //    rBind.LEAVEREGISTRATIONS();
669*b1cdbd2cSJim Jagielski     Point aPos = OutputToScreenPixel(Point(0,0));
670*b1cdbd2cSJim Jagielski     Rectangle aRect(aPos, GetSizePixel());
671*b1cdbd2cSJim Jagielski     SetPopupWindow( pPopup );
672*b1cdbd2cSJim Jagielski     pPopup->StartPopupMode(aRect, FLOATWIN_POPUPMODE_LEFT|FLOATWIN_POPUPMODE_ALLOWTEAROFF);
673*b1cdbd2cSJim Jagielski }
674*b1cdbd2cSJim Jagielski 
675*b1cdbd2cSJim Jagielski //--------------------------------------------------------------------
676*b1cdbd2cSJim Jagielski 
SetPopupWindow(SfxPopupWindow * pWindow)677*b1cdbd2cSJim Jagielski void SwNaviImageButton::SetPopupWindow( SfxPopupWindow* pWindow )
678*b1cdbd2cSJim Jagielski {
679*b1cdbd2cSJim Jagielski     pPopupWindow = pWindow;
680*b1cdbd2cSJim Jagielski     pPopupWindow->SetPopupModeEndHdl( LINK( this, SwNaviImageButton, PopupModeEndHdl ));
681*b1cdbd2cSJim Jagielski     pPopupWindow->SetDeleteLink_Impl( LINK( this, SwNaviImageButton, ClosePopupWindow ));
682*b1cdbd2cSJim Jagielski }
683*b1cdbd2cSJim Jagielski 
684*b1cdbd2cSJim Jagielski //--------------------------------------------------------------------
685*b1cdbd2cSJim Jagielski 
IMPL_LINK(SwNaviImageButton,PopupModeEndHdl,void *,EMPTYARG)686*b1cdbd2cSJim Jagielski IMPL_LINK( SwNaviImageButton, PopupModeEndHdl, void *, EMPTYARG )
687*b1cdbd2cSJim Jagielski {
688*b1cdbd2cSJim Jagielski 	if ( pPopupWindow->IsVisible() )
689*b1cdbd2cSJim Jagielski     {
690*b1cdbd2cSJim Jagielski         // Replace floating window with popup window and destroy
691*b1cdbd2cSJim Jagielski         // floating window instance.
692*b1cdbd2cSJim Jagielski         delete pFloatingWindow;
693*b1cdbd2cSJim Jagielski         pFloatingWindow = pPopupWindow;
694*b1cdbd2cSJim Jagielski         pPopupWindow    = 0;
695*b1cdbd2cSJim Jagielski     }
696*b1cdbd2cSJim Jagielski     else
697*b1cdbd2cSJim Jagielski     {
698*b1cdbd2cSJim Jagielski         // Popup window has been closed by the user. No replacement, instance
699*b1cdbd2cSJim Jagielski         // will destroy itself.
700*b1cdbd2cSJim Jagielski         pPopupWindow = 0;
701*b1cdbd2cSJim Jagielski     }
702*b1cdbd2cSJim Jagielski 
703*b1cdbd2cSJim Jagielski     return 1;
704*b1cdbd2cSJim Jagielski }
705*b1cdbd2cSJim Jagielski 
706*b1cdbd2cSJim Jagielski //--------------------------------------------------------------------
IMPL_LINK(SwNaviImageButton,ClosePopupWindow,SfxPopupWindow *,pWindow)707*b1cdbd2cSJim Jagielski IMPL_LINK( SwNaviImageButton, ClosePopupWindow, SfxPopupWindow *, pWindow )
708*b1cdbd2cSJim Jagielski {
709*b1cdbd2cSJim Jagielski     if ( pWindow == pFloatingWindow )
710*b1cdbd2cSJim Jagielski         pFloatingWindow = 0;
711*b1cdbd2cSJim Jagielski     else
712*b1cdbd2cSJim Jagielski         pPopupWindow = 0;
713*b1cdbd2cSJim Jagielski 
714*b1cdbd2cSJim Jagielski     return 1;
715*b1cdbd2cSJim Jagielski }
716*b1cdbd2cSJim Jagielski 
717*b1cdbd2cSJim Jagielski /*-----------------21.02.97 09:41-------------------
718*b1cdbd2cSJim Jagielski 
719*b1cdbd2cSJim Jagielski --------------------------------------------------*/
720*b1cdbd2cSJim Jagielski 
RequestHelp(const HelpEvent & rHEvt)721*b1cdbd2cSJim Jagielski void SwHlpImageButton::RequestHelp( const HelpEvent& rHEvt )
722*b1cdbd2cSJim Jagielski {
723*b1cdbd2cSJim Jagielski 
724*b1cdbd2cSJim Jagielski 	SetQuickHelpText(SwScrollNaviPopup::GetQuickHelpText(!bUp));
725*b1cdbd2cSJim Jagielski 
726*b1cdbd2cSJim Jagielski 	ImageButton::RequestHelp(rHEvt);
727*b1cdbd2cSJim Jagielski }
728*b1cdbd2cSJim Jagielski 
729*b1cdbd2cSJim Jagielski /*-----------------25.02.97 12:38-------------------
730*b1cdbd2cSJim Jagielski 
731*b1cdbd2cSJim Jagielski --------------------------------------------------*/
732*b1cdbd2cSJim Jagielski 
SwNaviImageButton(Window * pParent,const Reference<XFrame> & rFrame)733*b1cdbd2cSJim Jagielski SwNaviImageButton::SwNaviImageButton(
734*b1cdbd2cSJim Jagielski     Window* pParent,
735*b1cdbd2cSJim Jagielski     const Reference< XFrame >& rFrame ) :
736*b1cdbd2cSJim Jagielski     ImageButton(pParent, SW_RES(BTN_NAVI)),
737*b1cdbd2cSJim Jagielski         pPopup(0),
738*b1cdbd2cSJim Jagielski         aImage(SW_RES(IMG_BTN)),
739*b1cdbd2cSJim Jagielski         aImageH(SW_RES(IMG_BTN_H)),
740*b1cdbd2cSJim Jagielski         sQuickText(SW_RES(ST_QUICK)),
741*b1cdbd2cSJim Jagielski         pPopupWindow(0),
742*b1cdbd2cSJim Jagielski         pFloatingWindow(0),
743*b1cdbd2cSJim Jagielski         m_xFrame( rFrame )
744*b1cdbd2cSJim Jagielski {
745*b1cdbd2cSJim Jagielski 	FreeResource();
746*b1cdbd2cSJim Jagielski 	SetStyle(GetStyle()|WB_NOPOINTERFOCUS);
747*b1cdbd2cSJim Jagielski 	SetQuickHelpText(sQuickText);
748*b1cdbd2cSJim Jagielski     SetModeImage( GetSettings().GetStyleSettings().GetHighContrastMode() ? aImageH : aImage);
749*b1cdbd2cSJim Jagielski }
750*b1cdbd2cSJim Jagielski /* -----------------------------2002/07/05 9:41-------------------------------
751*b1cdbd2cSJim Jagielski 
752*b1cdbd2cSJim Jagielski  ---------------------------------------------------------------------------*/
DataChanged(const DataChangedEvent & rDCEvt)753*b1cdbd2cSJim Jagielski void SwNaviImageButton::DataChanged( const DataChangedEvent& rDCEvt )
754*b1cdbd2cSJim Jagielski {
755*b1cdbd2cSJim Jagielski 	if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) &&
756*b1cdbd2cSJim Jagielski          (rDCEvt.GetFlags() & SETTINGS_STYLE) )
757*b1cdbd2cSJim Jagielski             SetModeImage( GetSettings().GetStyleSettings().GetHighContrastMode() ? aImageH : aImage);
758*b1cdbd2cSJim Jagielski 
759*b1cdbd2cSJim Jagielski     Window::DataChanged( rDCEvt );
760*b1cdbd2cSJim Jagielski }
761*b1cdbd2cSJim Jagielski /* -----------------26.11.2002 09:28-----------------
762*b1cdbd2cSJim Jagielski  *
763*b1cdbd2cSJim Jagielski  * --------------------------------------------------*/
764*b1cdbd2cSJim Jagielski class SwZoomBox_Impl : public ComboBox
765*b1cdbd2cSJim Jagielski {
766*b1cdbd2cSJim Jagielski     sal_uInt16          nSlotId;
767*b1cdbd2cSJim Jagielski     sal_Bool            bRelease;
768*b1cdbd2cSJim Jagielski     uno::Reference< frame::XDispatchProvider > m_xDispatchProvider;
769*b1cdbd2cSJim Jagielski 
770*b1cdbd2cSJim Jagielski public:
771*b1cdbd2cSJim Jagielski     SwZoomBox_Impl(
772*b1cdbd2cSJim Jagielski         Window* pParent,
773*b1cdbd2cSJim Jagielski         sal_uInt16 nSlot,
774*b1cdbd2cSJim Jagielski         const Reference< XDispatchProvider >& rDispatchProvider );
775*b1cdbd2cSJim Jagielski     ~SwZoomBox_Impl();
776*b1cdbd2cSJim Jagielski 
777*b1cdbd2cSJim Jagielski protected:
778*b1cdbd2cSJim Jagielski     virtual void    Select();
779*b1cdbd2cSJim Jagielski     virtual long    Notify( NotifyEvent& rNEvt );
780*b1cdbd2cSJim Jagielski 
781*b1cdbd2cSJim Jagielski     void ReleaseFocus();
782*b1cdbd2cSJim Jagielski 
783*b1cdbd2cSJim Jagielski };
784*b1cdbd2cSJim Jagielski /* -----------------26.11.2002 09:29-----------------
785*b1cdbd2cSJim Jagielski  *
786*b1cdbd2cSJim Jagielski  * --------------------------------------------------*/
SwZoomBox_Impl(Window * pParent,sal_uInt16 nSlot,const Reference<XDispatchProvider> & rDispatchProvider)787*b1cdbd2cSJim Jagielski SwZoomBox_Impl::SwZoomBox_Impl(
788*b1cdbd2cSJim Jagielski     Window* pParent,
789*b1cdbd2cSJim Jagielski     sal_uInt16 nSlot,
790*b1cdbd2cSJim Jagielski     const Reference< XDispatchProvider >& rDispatchProvider ):
791*b1cdbd2cSJim Jagielski     ComboBox( pParent, SW_RES(RID_PVIEW_ZOOM_LB)),
792*b1cdbd2cSJim Jagielski     nSlotId(nSlot),
793*b1cdbd2cSJim Jagielski     bRelease(sal_True),
794*b1cdbd2cSJim Jagielski     m_xDispatchProvider( rDispatchProvider )
795*b1cdbd2cSJim Jagielski {
796*b1cdbd2cSJim Jagielski     EnableAutocomplete( sal_False );
797*b1cdbd2cSJim Jagielski     sal_uInt16 aZoomValues[] =
798*b1cdbd2cSJim Jagielski     {   25, 50, 75, 100, 150, 200 };
799*b1cdbd2cSJim Jagielski     for(sal_uInt16 i = 0; i < sizeof(aZoomValues)/sizeof(sal_uInt16); i++)
800*b1cdbd2cSJim Jagielski     {
801*b1cdbd2cSJim Jagielski         String sEntry = String::CreateFromInt32(aZoomValues[i]);
802*b1cdbd2cSJim Jagielski         sEntry.AppendAscii( " %" );
803*b1cdbd2cSJim Jagielski         InsertEntry(sEntry);
804*b1cdbd2cSJim Jagielski     }
805*b1cdbd2cSJim Jagielski }
806*b1cdbd2cSJim Jagielski /* -----------------26.11.2002 09:29-----------------
807*b1cdbd2cSJim Jagielski  *
808*b1cdbd2cSJim Jagielski  * --------------------------------------------------*/
~SwZoomBox_Impl()809*b1cdbd2cSJim Jagielski SwZoomBox_Impl::~SwZoomBox_Impl()
810*b1cdbd2cSJim Jagielski {}
811*b1cdbd2cSJim Jagielski /* -----------------26.11.2002 09:34-----------------
812*b1cdbd2cSJim Jagielski  *
813*b1cdbd2cSJim Jagielski  * --------------------------------------------------*/
Select()814*b1cdbd2cSJim Jagielski void    SwZoomBox_Impl::Select()
815*b1cdbd2cSJim Jagielski {
816*b1cdbd2cSJim Jagielski     if ( !IsTravelSelect() )
817*b1cdbd2cSJim Jagielski     {
818*b1cdbd2cSJim Jagielski         String sEntry(GetText());
819*b1cdbd2cSJim Jagielski         sEntry.EraseAllChars( '%' );
820*b1cdbd2cSJim Jagielski         sal_uInt16 nZoom = (sal_uInt16)sEntry.ToInt32();
821*b1cdbd2cSJim Jagielski         if(nZoom < MINZOOM)
822*b1cdbd2cSJim Jagielski             nZoom = MINZOOM;
823*b1cdbd2cSJim Jagielski         if(nZoom > MAXZOOM)
824*b1cdbd2cSJim Jagielski             nZoom = MAXZOOM;
825*b1cdbd2cSJim Jagielski 
826*b1cdbd2cSJim Jagielski         SfxUInt16Item aItem( nSlotId, nZoom );
827*b1cdbd2cSJim Jagielski         if ( FN_PREVIEW_ZOOM == nSlotId )
828*b1cdbd2cSJim Jagielski         {
829*b1cdbd2cSJim Jagielski             Any a;
830*b1cdbd2cSJim Jagielski             Sequence< PropertyValue > aArgs( 1 );
831*b1cdbd2cSJim Jagielski             aArgs[0].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PreviewZoom" ));
832*b1cdbd2cSJim Jagielski             aItem.QueryValue( a );
833*b1cdbd2cSJim Jagielski             aArgs[0].Value = a;
834*b1cdbd2cSJim Jagielski             SfxToolBoxControl::Dispatch(
835*b1cdbd2cSJim Jagielski                 m_xDispatchProvider,
836*b1cdbd2cSJim Jagielski                 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:PreviewZoom" )),
837*b1cdbd2cSJim Jagielski                 aArgs );
838*b1cdbd2cSJim Jagielski         }
839*b1cdbd2cSJim Jagielski 
840*b1cdbd2cSJim Jagielski         ReleaseFocus();
841*b1cdbd2cSJim Jagielski     }
842*b1cdbd2cSJim Jagielski }
843*b1cdbd2cSJim Jagielski /* -----------------02.12.2002 07:49-----------------
844*b1cdbd2cSJim Jagielski  *
845*b1cdbd2cSJim Jagielski  * --------------------------------------------------*/
Notify(NotifyEvent & rNEvt)846*b1cdbd2cSJim Jagielski long SwZoomBox_Impl::Notify( NotifyEvent& rNEvt )
847*b1cdbd2cSJim Jagielski {
848*b1cdbd2cSJim Jagielski     long nHandled = 0;
849*b1cdbd2cSJim Jagielski 
850*b1cdbd2cSJim Jagielski     if ( rNEvt.GetType() == EVENT_KEYINPUT )
851*b1cdbd2cSJim Jagielski     {
852*b1cdbd2cSJim Jagielski         sal_uInt16 nCode = rNEvt.GetKeyEvent()->GetKeyCode().GetCode();
853*b1cdbd2cSJim Jagielski 
854*b1cdbd2cSJim Jagielski         switch ( nCode )
855*b1cdbd2cSJim Jagielski         {
856*b1cdbd2cSJim Jagielski             case KEY_RETURN:
857*b1cdbd2cSJim Jagielski             case KEY_TAB:
858*b1cdbd2cSJim Jagielski             {
859*b1cdbd2cSJim Jagielski                 if ( KEY_TAB == nCode )
860*b1cdbd2cSJim Jagielski                     bRelease = sal_False;
861*b1cdbd2cSJim Jagielski                 else
862*b1cdbd2cSJim Jagielski                     nHandled = 1;
863*b1cdbd2cSJim Jagielski                 Select();
864*b1cdbd2cSJim Jagielski                 break;
865*b1cdbd2cSJim Jagielski             }
866*b1cdbd2cSJim Jagielski 
867*b1cdbd2cSJim Jagielski             case KEY_ESCAPE:
868*b1cdbd2cSJim Jagielski                 SetText( GetSavedValue() );
869*b1cdbd2cSJim Jagielski                 ReleaseFocus();
870*b1cdbd2cSJim Jagielski                 break;
871*b1cdbd2cSJim Jagielski         }
872*b1cdbd2cSJim Jagielski     }
873*b1cdbd2cSJim Jagielski     else if ( EVENT_LOSEFOCUS == rNEvt.GetType() )
874*b1cdbd2cSJim Jagielski     {
875*b1cdbd2cSJim Jagielski         Window* pFocusWin = Application::GetFocusWindow();
876*b1cdbd2cSJim Jagielski         if ( !HasFocus() && GetSubEdit() != pFocusWin )
877*b1cdbd2cSJim Jagielski             SetText( GetSavedValue() );
878*b1cdbd2cSJim Jagielski     }
879*b1cdbd2cSJim Jagielski 
880*b1cdbd2cSJim Jagielski     return nHandled ? nHandled : ComboBox::Notify( rNEvt );
881*b1cdbd2cSJim Jagielski }
882*b1cdbd2cSJim Jagielski /* -----------------02.12.2002 07:51-----------------
883*b1cdbd2cSJim Jagielski  *
884*b1cdbd2cSJim Jagielski  * --------------------------------------------------*/
ReleaseFocus()885*b1cdbd2cSJim Jagielski void SwZoomBox_Impl::ReleaseFocus()
886*b1cdbd2cSJim Jagielski {
887*b1cdbd2cSJim Jagielski     if ( !bRelease )
888*b1cdbd2cSJim Jagielski     {
889*b1cdbd2cSJim Jagielski         bRelease = sal_True;
890*b1cdbd2cSJim Jagielski         return;
891*b1cdbd2cSJim Jagielski     }
892*b1cdbd2cSJim Jagielski     SfxViewShell* pCurSh = SfxViewShell::Current();
893*b1cdbd2cSJim Jagielski 
894*b1cdbd2cSJim Jagielski     if ( pCurSh )
895*b1cdbd2cSJim Jagielski     {
896*b1cdbd2cSJim Jagielski         Window* pShellWnd = pCurSh->GetWindow();
897*b1cdbd2cSJim Jagielski 
898*b1cdbd2cSJim Jagielski         if ( pShellWnd )
899*b1cdbd2cSJim Jagielski             pShellWnd->GrabFocus();
900*b1cdbd2cSJim Jagielski     }
901*b1cdbd2cSJim Jagielski }
902*b1cdbd2cSJim Jagielski 
903*b1cdbd2cSJim Jagielski /* -----------------26.11.2002 09:29-----------------
904*b1cdbd2cSJim Jagielski  *
905*b1cdbd2cSJim Jagielski  * --------------------------------------------------*/
906*b1cdbd2cSJim Jagielski SFX_IMPL_TOOLBOX_CONTROL( SwPreviewZoomControl, SfxUInt16Item);
907*b1cdbd2cSJim Jagielski 
SwPreviewZoomControl(sal_uInt16 nSlotId,sal_uInt16 nId,ToolBox & rTbx)908*b1cdbd2cSJim Jagielski SwPreviewZoomControl::SwPreviewZoomControl(
909*b1cdbd2cSJim Jagielski     sal_uInt16 nSlotId,
910*b1cdbd2cSJim Jagielski     sal_uInt16 nId,
911*b1cdbd2cSJim Jagielski     ToolBox& rTbx) :
912*b1cdbd2cSJim Jagielski     SfxToolBoxControl( nSlotId, nId, rTbx )
913*b1cdbd2cSJim Jagielski {
914*b1cdbd2cSJim Jagielski }
915*b1cdbd2cSJim Jagielski /* -----------------26.11.2002 09:29-----------------
916*b1cdbd2cSJim Jagielski  *
917*b1cdbd2cSJim Jagielski  * --------------------------------------------------*/
~SwPreviewZoomControl()918*b1cdbd2cSJim Jagielski SwPreviewZoomControl::~SwPreviewZoomControl()
919*b1cdbd2cSJim Jagielski {
920*b1cdbd2cSJim Jagielski }
921*b1cdbd2cSJim Jagielski /* -----------------26.11.2002 09:29-----------------
922*b1cdbd2cSJim Jagielski  *
923*b1cdbd2cSJim Jagielski  * --------------------------------------------------*/
StateChanged(sal_uInt16,SfxItemState eState,const SfxPoolItem * pState)924*b1cdbd2cSJim Jagielski void SwPreviewZoomControl::StateChanged( sal_uInt16 /*nSID*/,
925*b1cdbd2cSJim Jagielski                                          SfxItemState eState,
926*b1cdbd2cSJim Jagielski                                          const SfxPoolItem* pState )
927*b1cdbd2cSJim Jagielski {
928*b1cdbd2cSJim Jagielski     sal_uInt16 nId = GetId();
929*b1cdbd2cSJim Jagielski     GetToolBox().EnableItem( nId, (GetItemState(pState) != SFX_ITEM_DISABLED) );
930*b1cdbd2cSJim Jagielski     SwZoomBox_Impl* pBox = (SwZoomBox_Impl*)GetToolBox().GetItemWindow( GetId() );
931*b1cdbd2cSJim Jagielski     if(SFX_ITEM_AVAILABLE <= eState)
932*b1cdbd2cSJim Jagielski     {
933*b1cdbd2cSJim Jagielski         String sZoom(String::CreateFromInt32(((const SfxUInt16Item*)pState)->GetValue()));
934*b1cdbd2cSJim Jagielski         sZoom.AppendAscii( " %" );
935*b1cdbd2cSJim Jagielski         pBox->SetText(sZoom);
936*b1cdbd2cSJim Jagielski         pBox->SaveValue();
937*b1cdbd2cSJim Jagielski     }
938*b1cdbd2cSJim Jagielski }
939*b1cdbd2cSJim Jagielski /* -----------------26.11.2002 09:29-----------------
940*b1cdbd2cSJim Jagielski  *
941*b1cdbd2cSJim Jagielski  * --------------------------------------------------*/
CreateItemWindow(Window * pParent)942*b1cdbd2cSJim Jagielski Window* SwPreviewZoomControl::CreateItemWindow( Window *pParent )
943*b1cdbd2cSJim Jagielski {
944*b1cdbd2cSJim Jagielski     SwZoomBox_Impl* pRet = new SwZoomBox_Impl( pParent, GetSlotId(), Reference< XDispatchProvider >( m_xFrame->getController(), UNO_QUERY ));
945*b1cdbd2cSJim Jagielski     return pRet;
946*b1cdbd2cSJim Jagielski }
947