2000-09-18 16:07:07 +00:00
|
|
|
/*************************************************************************
|
|
|
|
*
|
2005-09-07 14:01:50 +00:00
|
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
2005-09-07 14:01:50 +00:00
|
|
|
* $RCSfile: view.hxx,v $
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
2006-05-05 06:59:05 +00:00
|
|
|
* $Revision: 1.18 $
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
2006-05-05 06:59:05 +00:00
|
|
|
* last change: $Author: rt $ $Date: 2006-05-05 07:59:05 $
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
2005-09-07 14:01:50 +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-07 14:01:50 +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-07 14:01:50 +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-07 14:01:50 +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-07 14:01:50 +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
|
|
|
*
|
|
|
|
************************************************************************/
|
|
|
|
#ifndef VIEW_HXX
|
|
|
|
#define VIEW_HXX
|
|
|
|
|
|
|
|
#ifndef _SFXDOCKWIN_HXX //autogen
|
|
|
|
#include <sfx2/dockwin.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SFXVIEWSH_HXX //autogen
|
|
|
|
#include <sfx2/viewsh.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SCRWIN_HXX //autogen
|
|
|
|
#include <svtools/scrwin.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SFXCTRLITEM_HXX //autogen
|
|
|
|
#include <sfx2/ctrlitem.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SFX_SHELL_HXX //autogen
|
|
|
|
#include <sfx2/shell.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _VIEWFAC_HXX //autogen
|
|
|
|
#include <sfx2/viewfac.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SFXVIEWFRM_HXX //autogen
|
|
|
|
#include <sfx2/viewfrm.hxx>
|
|
|
|
#endif
|
2003-03-27 11:01:26 +00:00
|
|
|
#ifndef INCLUDED_SVTOOLS_COLORCFG_HXX
|
|
|
|
#include <svtools/colorcfg.hxx>
|
2002-12-12 14:40:33 +00:00
|
|
|
#endif
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
#ifndef EDIT_HXX
|
|
|
|
#include "edit.hxx"
|
|
|
|
#endif
|
|
|
|
#ifndef NODE_HXX
|
|
|
|
#include "node.hxx"
|
|
|
|
#endif
|
2002-05-15 12:47:45 +00:00
|
|
|
#ifndef _ACCESSIBILITY_HXX_
|
|
|
|
#include "accessibility.hxx"
|
|
|
|
#endif
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
class Menu;
|
|
|
|
class DataChangedEvent;
|
2005-06-14 15:38:17 +00:00
|
|
|
class SmClipboardChangeListener;
|
2000-09-18 16:07:07 +00:00
|
|
|
class SmDocShell;
|
|
|
|
class SmViewShell;
|
|
|
|
|
|
|
|
/**************************************************************************/
|
|
|
|
|
2002-05-15 12:47:45 +00:00
|
|
|
class SmGraphicWindow : public ScrollableWindow
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
|
|
|
Point aFormulaDrawPos;
|
|
|
|
Rectangle aCursorRect;
|
2002-05-15 12:47:45 +00:00
|
|
|
|
|
|
|
::com::sun::star::uno::Reference<
|
2003-04-24 16:29:12 +00:00
|
|
|
::com::sun::star::accessibility::XAccessible > xAccessible;
|
2002-06-13 13:44:44 +00:00
|
|
|
SmGraphicAccessible * pAccessible;
|
2002-05-15 12:47:45 +00:00
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
SmViewShell *pViewShell;
|
|
|
|
USHORT nZoom;
|
|
|
|
short nModifyCount;
|
|
|
|
BOOL bIsCursorVisible;
|
|
|
|
|
|
|
|
protected:
|
|
|
|
void SetFormulaDrawPos(const Point &rPos) { aFormulaDrawPos = rPos; }
|
|
|
|
void SetIsCursorVisible(BOOL bVis) { bIsCursorVisible = bVis; }
|
|
|
|
void SetCursor(const SmNode *pNode);
|
|
|
|
void SetCursor(const Rectangle &rRect);
|
|
|
|
|
|
|
|
virtual void DataChanged( const DataChangedEvent& );
|
|
|
|
virtual void Paint(const Rectangle&);
|
|
|
|
virtual void KeyInput(const KeyEvent& rKEvt);
|
|
|
|
virtual void Command(const CommandEvent& rCEvt);
|
|
|
|
virtual void StateChanged( StateChangedType eChanged );
|
|
|
|
DECL_LINK(MenuSelectHdl, Menu *);
|
|
|
|
|
|
|
|
public:
|
|
|
|
SmGraphicWindow(SmViewShell* pShell);
|
2002-05-15 12:47:45 +00:00
|
|
|
~SmGraphicWindow();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
2002-05-15 12:47:45 +00:00
|
|
|
// Window
|
|
|
|
virtual void MouseButtonDown(const MouseEvent &rMEvt);
|
|
|
|
virtual void GetFocus();
|
|
|
|
virtual void LoseFocus();
|
|
|
|
|
|
|
|
SmViewShell * GetView() { return pViewShell; }
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
void SetZoom(USHORT Factor);
|
|
|
|
USHORT GetZoom() const { return nZoom; }
|
|
|
|
|
2002-05-31 13:23:22 +00:00
|
|
|
const Point & GetFormulaDrawPos() const { return aFormulaDrawPos; }
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
void ZoomToFitInWindow();
|
|
|
|
void SetTotalSize();
|
|
|
|
|
|
|
|
BOOL IsCursorVisible() const { return bIsCursorVisible; }
|
|
|
|
void ShowCursor(BOOL bShow);
|
|
|
|
const SmNode * SetCursorPos(USHORT nRow, USHORT nCol);
|
2002-05-15 12:47:45 +00:00
|
|
|
|
2003-03-27 11:01:26 +00:00
|
|
|
void ApplyColorConfigValues( const svtools::ColorConfig &rColorCfg );
|
2002-12-12 14:40:33 +00:00
|
|
|
|
2002-05-15 12:47:45 +00:00
|
|
|
// for Accessibility
|
2003-04-24 16:29:12 +00:00
|
|
|
virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible();
|
2002-05-31 13:23:22 +00:00
|
|
|
|
2002-06-13 13:44:44 +00:00
|
|
|
SmGraphicAccessible * GetAccessible() { return pAccessible; }
|
2000-09-18 16:07:07 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/**************************************************************************/
|
|
|
|
|
|
|
|
class SmGraphicController: public SfxControllerItem
|
|
|
|
{
|
|
|
|
protected:
|
|
|
|
SmGraphicWindow &rGraphic;
|
|
|
|
public:
|
|
|
|
SmGraphicController(SmGraphicWindow &, USHORT, SfxBindings & );
|
|
|
|
virtual void StateChanged(USHORT nSID,
|
|
|
|
SfxItemState eState,
|
|
|
|
const SfxPoolItem* pState);
|
|
|
|
};
|
|
|
|
|
|
|
|
/**************************************************************************/
|
|
|
|
|
|
|
|
class SmEditController: public SfxControllerItem
|
|
|
|
{
|
|
|
|
protected:
|
|
|
|
SmEditWindow &rEdit;
|
|
|
|
|
|
|
|
public:
|
|
|
|
SmEditController(SmEditWindow &, USHORT, SfxBindings & );
|
2003-04-15 15:21:21 +00:00
|
|
|
#if OSL_DEBUG_LEVEL > 1
|
2001-06-01 09:33:41 +00:00
|
|
|
virtual ~SmEditController();
|
|
|
|
#endif
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
virtual void StateChanged(USHORT nSID,
|
|
|
|
SfxItemState eState,
|
|
|
|
const SfxPoolItem* pState);
|
|
|
|
};
|
|
|
|
|
|
|
|
/**************************************************************************/
|
|
|
|
|
|
|
|
class SmCmdBoxWindow : public SfxDockingWindow
|
|
|
|
{
|
|
|
|
SmEditWindow aEdit;
|
|
|
|
SmEditController aController;
|
2002-09-17 07:28:26 +00:00
|
|
|
BOOL bExiting;
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
protected :
|
|
|
|
|
2002-05-15 12:47:45 +00:00
|
|
|
// Window
|
|
|
|
virtual void GetFocus();
|
2002-08-15 08:59:16 +00:00
|
|
|
virtual void Resize();
|
|
|
|
virtual void Paint(const Rectangle& rRect);
|
|
|
|
virtual void StateChanged( StateChangedType nStateChange );
|
|
|
|
|
|
|
|
virtual Size CalcDockingSize(SfxChildAlignment eAlign);
|
|
|
|
virtual SfxChildAlignment CheckAlignment(SfxChildAlignment eActual,
|
|
|
|
SfxChildAlignment eWish);
|
|
|
|
|
|
|
|
virtual void ToggleFloatingMode();
|
2002-05-15 12:47:45 +00:00
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
public:
|
|
|
|
SmCmdBoxWindow(SfxBindings *pBindings,
|
|
|
|
SfxChildWindow *pChildWindow,
|
|
|
|
Window *pParent);
|
|
|
|
|
|
|
|
virtual ~SmCmdBoxWindow ();
|
|
|
|
|
|
|
|
void AdjustPosition();
|
|
|
|
|
|
|
|
SmEditWindow *GetEditWindow() { return (&aEdit); }
|
2001-08-31 13:11:58 +00:00
|
|
|
SmViewShell *GetView();
|
2000-09-18 16:07:07 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/**************************************************************************/
|
|
|
|
|
|
|
|
class SmCmdBoxWrapper : public SfxChildWindow
|
|
|
|
{
|
|
|
|
SFX_DECL_CHILDWINDOW(SmCmdBoxWrapper);
|
|
|
|
|
|
|
|
protected:
|
|
|
|
SmCmdBoxWrapper(Window *pParentWindow,
|
|
|
|
USHORT nId,
|
|
|
|
SfxBindings *pBindings,
|
|
|
|
SfxChildWinInfo *pInfo);
|
|
|
|
|
2003-04-15 15:21:21 +00:00
|
|
|
#if OSL_DEBUG_LEVEL > 1
|
2001-06-01 09:33:41 +00:00
|
|
|
virtual ~SmCmdBoxWrapper();
|
|
|
|
#endif
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
public:
|
|
|
|
|
|
|
|
SmEditWindow *GetEditWindow()
|
|
|
|
{
|
|
|
|
return (((SmCmdBoxWindow *)pWindow)->GetEditWindow());
|
|
|
|
}
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
/**************************************************************************/
|
|
|
|
|
|
|
|
class SmViewShell: public SfxViewShell
|
|
|
|
{
|
2001-05-11 12:01:35 +00:00
|
|
|
// for handling the PasteClipboardState
|
|
|
|
friend class SmClipboardChangeListener;
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
SmGraphicWindow aGraphic;
|
|
|
|
SmGraphicController aGraphicController;
|
|
|
|
String StatusText;
|
2001-05-11 12:01:35 +00:00
|
|
|
|
|
|
|
::com::sun::star::uno:: Reference <
|
|
|
|
::com::sun::star::lang:: XEventListener > xClipEvtLstnr;
|
|
|
|
SmClipboardChangeListener* pClipEvtLstnr;
|
2000-09-18 16:07:07 +00:00
|
|
|
Window *pViewFrame;
|
2001-05-11 12:01:35 +00:00
|
|
|
BOOL bPasteState;
|
|
|
|
|
|
|
|
void AddRemoveClipboardListener( BOOL bAdd );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
Size GetTextLineSize(OutputDevice& rDevice,
|
|
|
|
const String& rLine);
|
|
|
|
Size GetTextSize(OutputDevice& rDevice,
|
|
|
|
const String& rText,
|
|
|
|
long MaxWidth);
|
|
|
|
void DrawTextLine(OutputDevice& rDevice,
|
|
|
|
const Point& rPosition,
|
|
|
|
const String& rLine);
|
|
|
|
void DrawText(OutputDevice& rDevice,
|
|
|
|
const Point& rPosition,
|
|
|
|
const String& rText,
|
|
|
|
USHORT MaxWidth);
|
|
|
|
|
|
|
|
virtual USHORT Print(SfxProgress &rProgress,
|
|
|
|
PrintDialog *pPrintDialog = 0);
|
|
|
|
virtual SfxPrinter *GetPrinter(BOOL bCreate = FALSE);
|
|
|
|
virtual USHORT SetPrinter(SfxPrinter *pNewPrinter,
|
|
|
|
USHORT nDiffFlags = SFX_PRINTER_ALL);
|
|
|
|
|
2006-05-05 06:59:05 +00:00
|
|
|
BOOL Insert( SfxMedium& rMedium );
|
|
|
|
BOOL InsertFrom(SfxMedium &rMedium);
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
virtual SfxTabPage *CreatePrintOptionsPage(Window *pParent,
|
|
|
|
const SfxItemSet &rOptions);
|
|
|
|
virtual void Deactivate(BOOL IsMDIActivate);
|
|
|
|
virtual void Activate(BOOL IsMDIActivate);
|
|
|
|
virtual Size GetOptimalSizePixel() const;
|
|
|
|
virtual void AdjustPosSizePixel(const Point &rPos, const Size &rSize);
|
|
|
|
virtual void InnerResizePixel(const Point &rOfs, const Size &rSize);
|
|
|
|
virtual void OuterResizePixel(const Point &rOfs, const Size &rSize);
|
|
|
|
virtual void QueryObjAreaPixel( Rectangle& rRect ) const;
|
|
|
|
virtual void SetZoomFactor( const Fraction &rX, const Fraction &rY );
|
|
|
|
|
|
|
|
public:
|
|
|
|
TYPEINFO();
|
|
|
|
|
2002-08-29 07:42:32 +00:00
|
|
|
SmViewShell(SfxViewFrame *pFrame, SfxViewShell *pOldSh);
|
|
|
|
~SmViewShell();
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
SmDocShell * GetDoc()
|
|
|
|
{
|
|
|
|
return (SmDocShell *) GetViewFrame()->GetObjectShell();
|
|
|
|
}
|
|
|
|
|
|
|
|
SmEditWindow * GetEditWindow();
|
|
|
|
SmGraphicWindow & GetGraphicWindow() { return aGraphic; }
|
|
|
|
const SmGraphicWindow & GetGraphicWindow() const { return aGraphic; }
|
|
|
|
|
|
|
|
void SetStatusText(const String& Text);
|
|
|
|
|
|
|
|
void ShowError( const SmErrorDesc *pErrorDesc );
|
|
|
|
void NextError();
|
|
|
|
void PrevError();
|
|
|
|
|
|
|
|
SFX_DECL_INTERFACE(SFX_INTERFACE_SMA_START+2);
|
|
|
|
SFX_DECL_VIEWFACTORY(SmViewShell);
|
|
|
|
|
|
|
|
virtual void Execute( SfxRequest& rReq );
|
|
|
|
virtual void GetState(SfxItemSet &);
|
|
|
|
|
2002-08-29 07:42:32 +00:00
|
|
|
void Impl_Print( OutputDevice &rOutDev, const SmPrintSize ePrintSize,
|
|
|
|
Rectangle aOutRect, Point aZeroPoint );
|
2000-09-18 16:07:07 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|