1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: tabvwsh.hxx,v $
10 * $Revision: 1.30.32.3 $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 #ifndef SC_TABVWSH_HXX
32 #define SC_TABVWSH_HXX
34 #include <sfx2/viewsh.hxx>
35 #include <sfx2/viewfac.hxx>
36 #include <svx/svxenum.hxx>
38 #include "dbfunc.hxx" // -> tabview
40 #include "rangelst.hxx" // ScRangeListRef
41 #include "shellids.hxx"
42 #include "tabprotection.hxx" // for ScPasswordHash
49 class SfxModelessDialog
;
51 class SvxBoxObjectRef
;
52 class SvxNumberInfoItem
;
53 struct SfxChildWinInfo
;
56 class ScAuditingShell
;
58 class ScDrawTextObjectBar
;
62 class ScDrawFormShell
;
64 class ScOleObjectShell
;
68 class ScPageBreakShell
;
70 class ScNavigatorSettings
;
72 struct ScHeaderFieldData
;
74 namespace com
{ namespace sun
{ namespace star
{ namespace frame
{
75 class XDispatchProviderInterceptor
;
83 enum ObjectSelectionType
99 //==================================================================
102 class ScTabViewShell
: public SfxViewShell
, public ScDBFunc
105 static USHORT nInsertCtrlState
;
106 static USHORT nInsCellsCtrlState
;
107 static USHORT nInsObjCtrlState
;
109 ObjectSelectionType eCurOST
;
113 String sDrawCustom
; // current custom shape type
114 ScDrawShell
* pDrawShell
;
115 ScDrawTextObjectBar
* pDrawTextShell
;
116 ScEditShell
* pEditShell
;
117 ScPivotShell
* pPivotShell
;
118 ScAuditingShell
* pAuditingShell
;
119 ScDrawFormShell
* pDrawFormShell
;
120 ScCellShell
* pCellShell
;
121 ScOleObjectShell
* pOleObjectShell
;
122 ScChartShell
* pChartShell
;
123 ScGraphicShell
* pGraphicShell
;
124 ScMediaShell
* pMediaShell
;
125 ScPageBreakShell
* pPageBreakShell
;
126 svx::ExtrusionBar
* pExtrusionBarShell
;
127 svx::FontworkBar
* pFontworkBarShell
;
129 FmFormShell
* pFormShell
;
131 ScInputHandler
* pInputHandler
; // fuer OLE-Eingabezeile
133 SvxBorderLine
* pCurFrameLine
;
135 ::com::sun::star::uno::Reference
<
136 ::com::sun::star::frame::XDispatchProviderInterceptor
>
141 ScTabViewTarget aTarget
;
142 ScArea
* pPivotSource
;
143 ScDPObject
* pDialogDPObject
;
145 ScNavigatorSettings
* pNavSettings
;
147 // used in first Activate
148 ::com::sun::star::uno::Sequence
< ::com::sun::star::beans::PropertyValue
> aPendingUserData
;
152 BOOL bActiveDrawTextSh
;
154 BOOL bActiveAuditingSh
;
155 BOOL bActiveDrawFormSh
;
156 BOOL bActiveOleObjectSh
;
158 BOOL bActiveGraphicSh
;
162 BOOL bFormShellAtTop
; // does the FormShell need to be on top?
165 BOOL bDontSwitch
; // EditShell nicht abschalten
166 BOOL bInFormatDialog
; // fuer GetSelectionText
167 BOOL bPrintSelected
; // for result of SvxPrtQryBox
169 BOOL bReadOnly
; // um Status-Aenderungen zu erkennen
171 SbxObject
* pScSbxObject
;
173 //UNUSED2008-05 BOOL bChartDlgIsEdit; // Datenbereich aendern
174 BOOL bChartAreaValid
; // wenn Chart aufgezogen wird
175 String aEditChartName
;
176 ScRangeListRef aChartSource
;
181 SfxBroadcaster
* pAccessibilityBroadcaster
;
183 static const int MASTERENUMCOMMANDS
= 6;
184 String aCurrShapeEnumCommand
[ MASTERENUMCOMMANDS
];
187 void Construct( BYTE nForceDesignMode
= SC_FORCEMODE_NONE
);
189 //UNUSED2008-05 void SetMySubShell( SfxShell* pShell );
190 SfxShell
* GetMySubShell() const;
192 void DoReadUserData( const String
& rData
);
193 void DoReadUserDataSequence( const ::com::sun::star::uno::Sequence
<
194 ::com::sun::star::beans::PropertyValue
>& rSettings
);
196 DECL_LINK( SimpleRefClose
, String
* );
197 DECL_LINK( SimpleRefDone
, String
* );
198 DECL_LINK( SimpleRefAborted
, String
* );
199 DECL_LINK( SimpleRefChange
, String
* );
200 DECL_LINK( FormControlActivated
, FmFormShell
* );
203 virtual void Activate(BOOL bMDI
);
204 virtual void Deactivate(BOOL bMDI
);
205 virtual USHORT
PrepareClose( BOOL bUI
= TRUE
, BOOL bForBrowsing
= FALSE
);
207 virtual void ShowCursor(FASTBOOL bOn
);
209 virtual void Move(); // Benachrichtigung
211 virtual void AdjustPosSizePixel( const Point
&rPos
, const Size
&rSize
); // alt
213 virtual void InnerResizePixel( const Point
&rOfs
, const Size
&rSize
); // neu
214 virtual void OuterResizePixel( const Point
&rOfs
, const Size
&rSize
);
215 virtual void SetZoomFactor( const Fraction
&rZoomX
, const Fraction
&rZoomY
);
217 virtual void QueryObjAreaPixel( Rectangle
& rRect
) const;
219 virtual Size
GetOptimalSizePixel() const;
221 virtual String
GetSelectionText( BOOL bWholeWord
);
222 virtual BOOL
HasSelection( BOOL bText
) const;
223 virtual String
GetDescription() const;
225 virtual void WriteUserData(String
&, BOOL bBrowse
= FALSE
);
226 virtual void ReadUserData(const String
&, BOOL bBrowse
= FALSE
);
227 virtual void WriteUserDataSequence (::com::sun::star::uno::Sequence
< ::com::sun::star::beans::PropertyValue
>&, sal_Bool bBrowse
= sal_False
);
228 virtual void ReadUserDataSequence (const ::com::sun::star::uno::Sequence
< ::com::sun::star::beans::PropertyValue
>&, sal_Bool bBrowse
= sal_False
);
230 virtual void UIDeactivated( SfxInPlaceClient
* pClient
);
232 virtual FASTBOOL
KeyInput( const KeyEvent
&rKeyEvent
);
233 virtual SdrView
* GetDrawView() const;
236 TYPEINFO_VISIBILITY(SC_DLLPUBLIC
);
238 SFX_DECL_INTERFACE(SCID_TABVIEW_SHELL
)
239 SFX_DECL_VIEWFACTORY(ScTabViewShell
);
242 // -> Clone-Methode fuer Factory
244 //UNUSED2008-05 ScTabViewShell( SfxViewFrame* pViewFrame,
245 //UNUSED2008-05 const ScTabViewShell& rWin );
247 // aus einer allgemeinen Shell konstruieren und
248 // soviel wie moeglich uebernehmen (SliderPos etc.):
250 ScTabViewShell( SfxViewFrame
* pViewFrame
,
251 SfxViewShell
* pOldSh
);
253 virtual ~ScTabViewShell();
255 SC_DLLPUBLIC Window
* GetDialogParent();
257 bool IsRefInputMode() const;
258 void ExecuteInputDirect();
260 ScInputHandler
* GetInputHandler() const;
261 void UpdateInputHandler( BOOL bForce
= FALSE
, BOOL bStopEditing
= TRUE
);
262 void UpdateInputHandlerCellAdjust( SvxCellHorJustify eJust
);
263 BOOL
TabKeyInput(const KeyEvent
& rKEvt
);
264 BOOL
SfxKeyInput(const KeyEvent
& rKEvt
);
268 SvxBorderLine
* GetDefaultFrameLine() const { return pCurFrameLine
; }
269 void SetDefaultFrameLine(const SvxBorderLine
* pLine
);
271 //UNUSED2008-05 void ExecuteShowNIY( SfxRequest& rReq );
272 //UNUSED2008-05 void StateDisabled( SfxItemSet& rSet );
274 SC_DLLPUBLIC
void Execute( SfxRequest
& rReq
);
275 SC_DLLPUBLIC
void GetState( SfxItemSet
& rSet
);
277 void ExecuteTable( SfxRequest
& rReq
);
278 void GetStateTable( SfxItemSet
& rSet
);
280 void WindowChanged();
281 void ExecDraw(SfxRequest
&);
282 void ExecDrawIns(SfxRequest
& rReq
);
283 void GetDrawState(SfxItemSet
&rSet
);
284 void GetDrawInsState(SfxItemSet
&rSet
);
285 void ExecGallery(SfxRequest
& rReq
); // StarGallery
286 void GetGalleryState(SfxItemSet
& rSet
);
288 void ExecChildWin(SfxRequest
& rReq
);
289 void GetChildWinState( SfxItemSet
& rSet
);
291 void ExecImageMap( SfxRequest
& rReq
);
292 void GetImageMapState( SfxItemSet
& rSet
);
294 void ExecTbx( SfxRequest
& rReq
);
295 void GetTbxState( SfxItemSet
& rSet
);
297 void ExecuteSave( SfxRequest
& rReq
);
298 void GetSaveState( SfxItemSet
& rSet
);
299 void ExecSearch( SfxRequest
& rReq
);
301 void ExecuteUndo(SfxRequest
& rReq
);
302 void GetUndoState(SfxItemSet
&rSet
);
304 void ExecuteSbx( SfxRequest
& rReq
);
305 void GetSbxState( SfxItemSet
& rSet
);
307 void ExecuteObject(SfxRequest
& rReq
);
308 void GetObjectState(SfxItemSet
&rSet
);
310 void ExecDrawOpt(SfxRequest
& rReq
);
311 void GetDrawOptState(SfxItemSet
&rSet
);
314 void SetDrawShell( BOOL bActive
);
315 void SetDrawTextShell( BOOL bActive
);
317 void SetPivotShell( BOOL bActive
);
318 ScArea
* GetPivotSource(){return pPivotSource
;}
319 void SetPivotSource(ScArea
* pSrc
){pPivotSource
=pSrc
;}
320 void SetDialogDPObject( const ScDPObject
* pObj
);
321 const ScDPObject
* GetDialogDPObject() const { return pDialogDPObject
; }
323 BOOL
GetDontSwitch(){return bDontSwitch
;}
324 void SetDontSwitch(BOOL bFlag
){bDontSwitch
=bFlag
;}
327 void SetAuditShell( BOOL bActive
);
328 void SetDrawFormShell( BOOL bActive
);
329 void SetEditShell(EditView
* pView
, BOOL bActive
);
330 void SetOleObjectShell( BOOL bActive
);
331 void SetChartShell( BOOL bActive
);
332 void SetGraphicShell( BOOL bActive
);
333 void SetMediaShell( BOOL bActive
);
336 void SetDrawShellOrSub();
337 void SetCurSubShell( ObjectSelectionType eOST
, BOOL bForce
= FALSE
);
339 void SetFormShellAtTop( BOOL bSet
);
341 ObjectSelectionType
GetCurObjectSelectionType();
343 virtual ErrCode
DoVerb(long nVerb
);
346 void StopEditShell();
347 BOOL
IsDrawTextShell() const;
348 BOOL
IsAuditShell() const;
350 void SetDrawTextUndo( SfxUndoManager
* pUndoMgr
);
352 void FillFieldData( ScHeaderFieldData
& rData
);
354 //UNUSED2008-05 void ResetChartArea();
355 void SetChartArea( const ScRangeListRef
& rSource
, const Rectangle
& rDest
);
356 BOOL
GetChartArea( ScRangeListRef
& rSource
, Rectangle
& rDest
, SCTAB
& rTab
) const;
358 //UNUSED2008-05 BOOL IsChartDlgEdit() const;
359 //UNUSED2008-05 void SetChartDlgEdit(BOOL bFlag){bChartDlgIsEdit=bFlag;}
361 void SetEditChartName(const String
& aStr
){aEditChartName
=aStr
;}
362 //UNUSED2008-05 const String& GetEditChartName() const;
364 virtual void Notify( SfxBroadcaster
& rBC
, const SfxHint
& rHint
);
366 ScNavigatorSettings
* GetNavigatorSettings();
369 virtual SfxPrinter
* GetPrinter( BOOL bCreate
= FALSE
);
370 virtual USHORT
SetPrinter( SfxPrinter
* pNewPrinter
,
371 USHORT nDiffFlags
= SFX_PRINTER_ALL
, bool bIsApi
=false );
373 virtual PrintDialog
* CreatePrintDialog( Window
* pParent
);
374 virtual SfxTabPage
* CreatePrintOptionsPage( Window
*pParent
, const SfxItemSet
&rOptions
);
375 virtual void PreparePrint( PrintDialog
* pPrintDialog
= NULL
);
376 virtual ErrCode
DoPrint( SfxPrinter
*pPrinter
,
377 PrintDialog
*pPrintDialog
,
378 BOOL bSilent
, BOOL bIsAPI
);
379 virtual USHORT
Print( SfxProgress
& rProgress
, BOOL bIsAPI
, PrintDialog
* pPrintDialog
= NULL
);
381 void ConnectObject( SdrOle2Obj
* pObj
);
382 BOOL
ActivateObject( SdrOle2Obj
* pObj
, long nVerb
);
384 void DeactivateOle();
386 SC_DLLPUBLIC
static ScTabViewShell
* GetActiveViewShell();
387 SfxModelessDialog
* CreateRefDialog( SfxBindings
* pB
, SfxChildWindow
* pCW
,
388 SfxChildWinInfo
* pInfo
,
389 Window
* pParent
, USHORT nSlotId
);
391 void UpdateOleZoom();
392 inline SbxObject
* GetScSbxObject() const
393 { return pScSbxObject
; }
394 inline void SetScSbxObject( SbxObject
* pOb
)
395 { pScSbxObject
= pOb
; }
397 FmFormShell
* GetFormShell() const { return pFormShell
; }
399 void InsertURL( const String
& rName
, const String
& rURL
, const String
& rTarget
,
401 void InsertURLButton( const String
& rName
, const String
& rURL
, const String
& rTarget
,
402 const Point
* pInsPos
= NULL
);
403 void InsertURLField( const String
& rName
, const String
& rURL
, const String
& rTarget
);
405 BOOL
SelectObject( const String
& rName
);
407 void SetInFormatDialog(BOOL bFlag
) {bInFormatDialog
=bFlag
;}
408 BOOL
IsInFormatDialog() {return bInFormatDialog
;}
410 void ForceMove() { Move(); }
412 void MakeNumberInfoItem ( ScDocument
* pDoc
,
413 ScViewData
* pViewData
,
414 SvxNumberInfoItem
** ppItem
);
416 void UpdateNumberFormatter ( ScDocument
* pDoc
,
417 const SvxNumberInfoItem
& rInfoItem
);
419 void ExecuteCellFormatDlg ( SfxRequest
& rReq
, USHORT nTabPage
= 0xffff );
421 BOOL
GetFunction( String
& rFuncStr
, sal_uInt16 nErrCode
= 0 );
423 void StartSimpleRefDialog( const String
& rTitle
, const String
& rInitVal
,
424 BOOL bCloseOnButtonUp
, BOOL bSingleCell
, BOOL bMultiSelection
);
425 void StopSimpleRefDialog();
427 void SetCurRefDlgId( USHORT nNew
);
429 void AddAccessibilityObject( SfxListener
& rObject
);
430 void RemoveAccessibilityObject( SfxListener
& rObject
);
431 void BroadcastAccessibility( const SfxHint
&rHint
);
432 BOOL
HasAccessibilityObjects();
434 bool ExecuteRetypePassDlg(ScPasswordHash eDesiredHash
);
436 using ScTabView::ShowCursor
;
439 //==================================================================