| 
									
										
										
										
											2000-09-18 16:07:07 +00:00
										 |  |  | /*************************************************************************
 | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2005-09-08 23:19:22 +00:00
										 |  |  |  *  OpenOffice.org - a multi-platform office productivity suite | 
					
						
							| 
									
										
										
										
											2000-09-18 16:07:07 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2005-09-08 23:19:22 +00:00
										 |  |  |  *  $RCSfile: selctrl.cxx,v $ | 
					
						
							| 
									
										
										
										
											2000-09-18 16:07:07 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2006-10-12 12:05:20 +00:00
										 |  |  |  *  $Revision: 1.6 $ | 
					
						
							| 
									
										
										
										
											2000-09-18 16:07:07 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2006-10-12 12:05:20 +00:00
										 |  |  |  *  last change: $Author: obo $ $Date: 2006-10-12 13:05:20 $ | 
					
						
							| 
									
										
										
										
											2000-09-18 16:07:07 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2005-09-08 23:19:22 +00:00
										 |  |  |  *  The Contents of this file are made available subject to | 
					
						
							|  |  |  |  *  the terms of GNU Lesser General Public License Version 2.1. | 
					
						
							| 
									
										
										
										
											2000-09-18 16:07:07 +00:00
										 |  |  |  * | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2005-09-08 23:19:22 +00:00
										 |  |  |  *    GNU Lesser General Public License Version 2.1 | 
					
						
							|  |  |  |  *    ============================================= | 
					
						
							|  |  |  |  *    Copyright 2005 by Sun Microsystems, Inc. | 
					
						
							|  |  |  |  *    901 San Antonio Road, Palo Alto, CA 94303, USA | 
					
						
							| 
									
										
										
										
											2000-09-18 16:07:07 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2005-09-08 23:19:22 +00:00
										 |  |  |  *    This library is free software; you can redistribute it and/or | 
					
						
							|  |  |  |  *    modify it under the terms of the GNU Lesser General Public | 
					
						
							|  |  |  |  *    License version 2.1, as published by the Free Software Foundation. | 
					
						
							| 
									
										
										
										
											2000-09-18 16:07:07 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2005-09-08 23:19:22 +00:00
										 |  |  |  *    This library is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
					
						
							|  |  |  |  *    Lesser General Public License for more details. | 
					
						
							| 
									
										
										
										
											2000-09-18 16:07:07 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2005-09-08 23:19:22 +00:00
										 |  |  |  *    You should have received a copy of the GNU Lesser General Public | 
					
						
							|  |  |  |  *    License along with this library; if not, write to the Free Software | 
					
						
							|  |  |  |  *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, | 
					
						
							|  |  |  |  *    MA  02111-1307  USA | 
					
						
							| 
									
										
										
										
											2000-09-18 16:07:07 +00:00
										 |  |  |  * | 
					
						
							|  |  |  |  ************************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-09-17 04:45:41 +00:00
										 |  |  | // MARKER(update_precomp.py): autogen include statement, do not remove
 | 
					
						
							|  |  |  | #include "precompiled_svx.hxx"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-09-18 16:07:07 +00:00
										 |  |  | // include ---------------------------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef _SHL_HXX
 | 
					
						
							|  |  |  | #include <tools/shl.hxx>
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | #ifndef _STATUS_HXX //autogen
 | 
					
						
							|  |  |  | #include <vcl/status.hxx>
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | #ifndef _SFXINTITEM_HXX
 | 
					
						
							|  |  |  | #include <svtools/intitem.hxx>
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | #ifndef _SFXDISPATCH_HXX //autogen
 | 
					
						
							|  |  |  | #include <sfx2/dispatch.hxx>
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2004-09-09 14:40:59 +00:00
										 |  |  | #include <tools/urlobj.hxx>
 | 
					
						
							| 
									
										
										
										
											2000-09-18 16:07:07 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | #define _SVX_SELCTRL_CXX
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "selctrl.hxx"
 | 
					
						
							|  |  |  | #include "dialmgr.hxx"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "dialogs.hrc"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define PAINT_OFFSET    5
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | SFX_IMPL_STATUSBAR_CONTROL(SvxSelectionModeControl, SfxUInt16Item); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // class SvxSelectionModeControl -----------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-10-12 12:05:20 +00:00
										 |  |  | SvxSelectionModeControl::SvxSelectionModeControl( USHORT _nSlotId, | 
					
						
							|  |  |  |                                                   USHORT _nId, | 
					
						
							| 
									
										
										
										
											2004-09-09 14:40:59 +00:00
										 |  |  |                                                   StatusBar& rStb ) : | 
					
						
							| 
									
										
										
										
											2006-10-12 12:05:20 +00:00
										 |  |  |     SfxStatusBarControl( _nSlotId, _nId, rStb ), | 
					
						
							| 
									
										
										
										
											2000-09-18 16:07:07 +00:00
										 |  |  |     nState( 0 ) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // -----------------------------------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-10-12 12:05:20 +00:00
										 |  |  | void SvxSelectionModeControl::StateChanged( USHORT, SfxItemState eState, | 
					
						
							| 
									
										
										
										
											2000-09-18 16:07:07 +00:00
										 |  |  |                                             const SfxPoolItem* pState ) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     if ( SFX_ITEM_AVAILABLE != eState ) | 
					
						
							|  |  |  |         GetStatusBar().SetItemText( GetId(), String() ); | 
					
						
							|  |  |  |     else | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         DBG_ASSERT( pState->ISA( SfxUInt16Item ), "invalid item type" ); | 
					
						
							|  |  |  |         SfxUInt16Item* pItem = (SfxUInt16Item*)pState; | 
					
						
							|  |  |  |         nState = pItem->GetValue(); | 
					
						
							|  |  |  |         DrawItemText_Impl(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // -----------------------------------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void SvxSelectionModeControl::Click() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     if ( !GetStatusBar().GetItemText( GetId() ).Len() ) | 
					
						
							|  |  |  |         return; | 
					
						
							|  |  |  |     nState++; | 
					
						
							|  |  |  |     if ( nState > 2 ) | 
					
						
							|  |  |  |         nState = 0; | 
					
						
							| 
									
										
										
										
											2004-09-09 14:40:59 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     ::com::sun::star::uno::Any a; | 
					
						
							|  |  |  |     SfxUInt16Item aState( GetSlotId(), nState ); | 
					
						
							|  |  |  |     INetURLObject aObj( m_aCommandURL ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > aArgs( 1 ); | 
					
						
							|  |  |  |     aArgs[0].Name  = aObj.GetURLPath(); | 
					
						
							|  |  |  |     aState.QueryValue( a ); | 
					
						
							|  |  |  |     aArgs[0].Value = a; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     execute( aArgs ); | 
					
						
							| 
									
										
										
										
											2000-09-18 16:07:07 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // -----------------------------------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-10-12 12:05:20 +00:00
										 |  |  | void SvxSelectionModeControl::Paint( const UserDrawEvent& ) | 
					
						
							| 
									
										
										
										
											2000-09-18 16:07:07 +00:00
										 |  |  | { | 
					
						
							|  |  |  |     DrawItemText_Impl(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // -----------------------------------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void SvxSelectionModeControl::DrawItemText_Impl() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     String sTxt; | 
					
						
							| 
									
										
										
										
											2006-10-12 12:05:20 +00:00
										 |  |  |     USHORT _nId = 0; | 
					
						
							| 
									
										
										
										
											2000-09-18 16:07:07 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     switch ( nState ) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         case 0: | 
					
						
							| 
									
										
										
										
											2006-10-12 12:05:20 +00:00
										 |  |  |             _nId = RID_SVXSTR_SELMODE_STD; | 
					
						
							| 
									
										
										
										
											2000-09-18 16:07:07 +00:00
										 |  |  |             break; | 
					
						
							|  |  |  |         case 1: | 
					
						
							| 
									
										
										
										
											2006-10-12 12:05:20 +00:00
										 |  |  |             _nId = RID_SVXSTR_SELMODE_ER; | 
					
						
							| 
									
										
										
										
											2000-09-18 16:07:07 +00:00
										 |  |  |             break; | 
					
						
							|  |  |  |         case 2: | 
					
						
							| 
									
										
										
										
											2006-10-12 12:05:20 +00:00
										 |  |  |             _nId = RID_SVXSTR_SELMODE_ERG; | 
					
						
							| 
									
										
										
										
											2000-09-18 16:07:07 +00:00
										 |  |  |             break; | 
					
						
							|  |  |  |         default: DBG_ERROR( "invalid selection mode!" ); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-10-12 12:05:20 +00:00
										 |  |  |     if ( _nId ) | 
					
						
							|  |  |  |         sTxt = SVX_RESSTR( _nId ); | 
					
						
							| 
									
										
										
										
											2000-09-18 16:07:07 +00:00
										 |  |  |     GetStatusBar().SetItemText( GetId(), sTxt ); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ULONG SvxSelectionModeControl::GetDefItemWidth(const StatusBar& rStb) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     long nWidth1 =  rStb.GetTextWidth(SVX_RESSTR(RID_SVXSTR_SELMODE_STD)); | 
					
						
							|  |  |  |     long nWidth2 =  rStb.GetTextWidth(SVX_RESSTR(RID_SVXSTR_SELMODE_ER)); | 
					
						
							|  |  |  |     long nWidth3 =  rStb.GetTextWidth(SVX_RESSTR(RID_SVXSTR_SELMODE_ERG)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if(nWidth1<nWidth2) | 
					
						
							|  |  |  |         nWidth1=nWidth2; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if(nWidth1<nWidth3) | 
					
						
							|  |  |  |         nWidth1=nWidth3; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return nWidth1+PAINT_OFFSET; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 |