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: svdview.hxx,v $
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 ************************************************************************/
34 // HACK to avoid too deep includes and to have some
35 // levels free in svdmark itself (MS compiler include depth limit)
37 #include <bf_svx/svdhdl.hxx>
40 #include <bf_svx/svdcrtv.hxx>
43 ////////////////////////////////////////////////////////////////////////////////////////////////////
45 // Klassenhierarchie der View:
47 // SdrPaintView PntV Action ModChg Attr Notify
48 // SdrSnapView SnpV Action
50 // SdrMarkView MrkV Action MrkChg ModChg Notify
52 // SdrEditView EdtV MrkChg ModChg Attr
53 // SdrPolyEditView PoEV
54 // SdrGlueEditView GlEV
55 // SdrObjEditView EdxV Action ModChg Attr Notify
57 // SdrExchangeView XcgV
58 // SdrDragView DrgV Action
60 // SdrCreateView CrtV Action
63 ////////////////////////////////////////////////////////////////////////////////////////////////////
65 //************************************************************
66 // Vorausdeklarationen
67 //************************************************************
71 //************************************************************
73 //************************************************************
75 enum SdrViewContext
{SDRCONTEXT_STANDARD
,
77 SDRCONTEXT_GLUEPOINTEDIT
,
81 enum SdrEventKind
{SDREVENT_NONE
,
91 SDREVENT_MARKGLUEPOINT
,
93 SDREVENT_BEGINSOBJPOINT
,
94 SDREVENT_ENDINSOBJPOINT
,
95 SDREVENT_BEGINSGLUEPOINT
,
96 SDREVENT_BEGDRAGHELPLINE
,
98 SDREVENT_BEGCREATEOBJ
,
100 SDREVENT_BEGTEXTEDIT
,
103 SDREVENT_EXECUTEURL
};
105 #define SDRMOUSEBUTTONDOWN 1
106 #define SDRMOUSEMOVE 2
107 #define SDRMOUSEBUTTONUP 3
109 ////////////////////////////////////////////////////////////////////////////////////////////////////
110 ////////////////////////////////////////////////////////////////////////////////////////////////////
112 // @@ @@ @@ @@@@@ @@ @@
114 // @@ @@ @@ @@ @@ @ @@
115 // @@@@@ @@ @@@@ @@@@@@@
120 ////////////////////////////////////////////////////////////////////////////////////////////////////
121 ////////////////////////////////////////////////////////////////////////////////////////////////////
123 class SdrView
: public SdrCreateView
125 friend class SdrPageView
;
127 unsigned bNoExtendedMouseDispatcher
: 1;
128 unsigned bNoExtendedKeyDispatcher
: 1;
129 unsigned bNoExtendedCommandDispatcher
: 1;
130 unsigned bTextEditOnObjectsWithoutTextIfTextTool
: 1;
133 // Abgeleitete Klassen ueberladen lediglich die Methoden ReadData() und
134 // WriteData(). Diese werden von den Streamoperatoren der View gerufen.
135 // Wichtig ist, dass die ueberladen Methoden der abgeleiteten Klasse
136 // als erstes die Methode der Basisklasse rufen, da sonst der CharSet
137 // am Stream nicht korrekt gesetzt wird, ...
138 virtual void WriteRecords(SvStream
& rOut
) const;
139 virtual BOOL
ReadRecord(const SdrIOHeader
& rViewHead
, const SdrNamedSubRecord
& rSubHead
, SvStream
& rIn
);
141 virtual void SFX_NOTIFY(SfxBroadcaster
& rBC
, const TypeId
& rBCType
, const SfxHint
& rHint
, const TypeId
& rHintType
);
145 SdrView(SdrModel
* pModel1
, OutputDevice
* pOut
);
146 SdrView(SdrModel
* pModel1
);
149 // Default sind alle Dispatcher aktiviert. Will die App z.B. fuer
150 // Sonderbehandlungen im MouseDispatcher eingreifen, so muss sie
151 // den erweiterten MouseDispather mit unten stehender Methode deaktivieren
152 // und selbst nachimplementieren. Beispiel fuer MouseButtonDown:
153 // SdrHitKind eHit=pSdrView->PickAnything(rMEvt,SDRMOUSEBUTTONDOWN,aVEvt);
154 // ... hier Applikationsspezifischer Eingriff ...
155 // pSdrView->DoMouseEvent(aVEvt);
156 // SetPointer(GetPreferedPointer(...))
158 void EnableExtendedMouseEventDispatcher(BOOL bOn
) { bNoExtendedMouseDispatcher
= !bOn
; }
159 BOOL
IsExtendedMouseEventDispatcherEnabled() const { return bNoExtendedMouseDispatcher
; }
161 void EnableExtendedKeyInputDispatcher(BOOL bOn
) { bNoExtendedKeyDispatcher
=!bOn
; }
162 BOOL
IsExtendedKeyInputDispatcherEnabled() const { return bNoExtendedKeyDispatcher
; }
164 void EnableExtendedCommandEventDispatcher(BOOL bOn
) { bNoExtendedCommandDispatcher
=!bOn
; }
165 BOOL
IsExtendedCommandEventDispatcherEnabled() const { return bNoExtendedCommandDispatcher
; }
167 void EnableTextEditOnObjectsWithoutTextIfTextTool(BOOL bOn
) { bTextEditOnObjectsWithoutTextIfTextTool
=bOn
; }
168 BOOL
IsEnableTextEditOnObjectsWithoutTextIfTextToolEnabled() const { return bTextEditOnObjectsWithoutTextIfTextTool
; }
171 // Die Methoden beruecksichtigen den jeweiligen Kontex:
172 // - Einfaches Zeichnen
173 // - Punktbearbeitungs-Mode
174 // - Klebepunkt-Editmode
176 // - ... to be continued
177 BOOL
HasMarked() const { return HasMarkedObj(); }
181 virtual void DeleteMarked();
183 // Strings werden beim rausstreamen in den am Stream eingestellten
184 // StreamCharSet konvertiert.
185 // Abgeleitete Klassen mit eigenen persistenten Membern ueberladen
186 // die virtuellen Methoden ReadData() und WriteData().
187 friend SvStream
& operator<<(SvStream
& rOut
, const SdrView
& rView
);
189 // Wenn das Model im Stream in einem fremden CharSet vorliegt
190 // wird beim einstreamen implizit auf den SystemCharSet konvertiert.
191 // Abgeleitete Klassen mit eigenen persistenten Membern ueberladen
192 // die virtuellen Methoden ReadData() und WriteData().
193 friend SvStream
& operator>>(SvStream
& rIn
, SdrView
& rView
);
196 virtual void onAccessibilityOptionsChanged();
199 }//end of namespace binfilter
200 #endif //_SVDVIEW_HXX
202 ////////////////////////////////////////////////////////////////////////////////////////////////////
204 // Die App macht sich zunaechst ein SdrModel.
205 // Anschliessend oeffnet sie ein Win und erzeugt dann eine SdrView.
206 // An der SdrView meldet sie dann mit der Methode ShowPage() eine Seite an.
207 // Eine SdrView kann in beliebig vielen Fenstern gleichzeitig angezeigt werden.
209 // Eine SdrView kann beliebig viele Seiten gleichzeitig anzeigen. Seiten
210 // werden an- und abgemeldet mit ShowPage()/HidePage(). Fuer jede angemeldete
211 // Seite wird eine SdrPageView-Instanz im Container aPages angelegt. Bei
212 // gleichzeitiger Anzeige mehrerer Seiten ist darauf zu achten, dass der Offset-
213 // Parameter von ShowPage() der Seitengroesse angepasst ist, da sich sonst die
214 // Seiten ueberlappen koennten.
216 // Elementare Methoden:
217 // ~~~~~~~~~~~~~~~~~~~~
220 // BOOL KeyInput(const KeyEvent& rKEvt, Window* pWin);
221 // BOOL MouseButtonDown(const MouseEvent& rMEvt, Window* pWin);
222 // BOOL MouseButtonUp(const MouseEvent& rMEvt, Window* pWin);
223 // BOOL MouseMove(const MouseEvent& rMEvt, Window* pWin);
224 // BOOL Command(const CommandEvent& rCEvt, Window* pWin);
226 // Exchange (Clipboard derzeit noch ohne SdrPrivateData):
227 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
228 // BOOL Cut(ULONG nFormat=SDR_ANYFORMAT);
229 // BOOL Yank(ULONG nFormat=SDR_ANYFORMAT);
230 // BOOL Paste(Window* pWin=NULL, ULONG nFormat=SDR_ANYFORMAT);
234 // BOOL GetAttributes(SfxItemSet& rTargetSet, BOOL bOnlyHardAttr=FALSE) const;
235 // BOOL SetAttributes(const SfxItemSet& rSet, BOOL bReplaceAll);
236 // SfxStyleSheet* GetStyleSheet() const;
237 // BOOL SetStyleSheet(SfxStyleSheet* pStyleSheet, BOOL bDontRemoveHardAttr);
239 ///////////////////////////////////////////////////////////////////////////////////////////////// */