xref: /aoo42x/main/sd/source/ui/view/sdruler.cxx (revision 5b190011)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_sd.hxx"
26 
27 #include "Ruler.hxx"
28 #include <svl/ptitem.hxx>
29 #include <svx/ruler.hxx>
30 #ifndef _SVXIDS_HXX //autogen
31 #include <svx/svxids.hrc>
32 #endif
33 #include <sfx2/ctrlitem.hxx>
34 #include <sfx2/bindings.hxx>
35 
36 
37 #include "View.hxx"
38 #include "DrawViewShell.hxx"
39 #include "Window.hxx"
40 
41 #include "helpids.h"
42 
43 namespace sd {
44 
45 /*************************************************************************
46 |*
47 |* Controller-Item fuer Ruler
48 |*
49 \************************************************************************/
50 
51 class RulerCtrlItem : public SfxControllerItem
52 {
53 	Ruler &rRuler;
54 
55  protected:
56 	virtual void StateChanged( sal_uInt16 nSId, SfxItemState eState,
57 								const SfxPoolItem* pItem );
58 
59  public:
60 	RulerCtrlItem(sal_uInt16 nId, Ruler& rRlr, SfxBindings& rBind);
61 };
62 
63 /*************************************************************************
64 |*
65 \************************************************************************/
66 
67 RulerCtrlItem::RulerCtrlItem(sal_uInt16 _nId, Ruler& rRlr, SfxBindings& rBind)
68 : SfxControllerItem(_nId, rBind)
69 , rRuler(rRlr)
70 {
71 }
72 
73 
74 /*************************************************************************
75 |*
76 \************************************************************************/
77 
78 void RulerCtrlItem::StateChanged( sal_uInt16 nSId, SfxItemState, const SfxPoolItem* pState )
79 {
80 	switch( nSId )
81 	{
82 		case SID_RULER_NULL_OFFSET:
83 		{
84 			const SfxPointItem* pItem = dynamic_cast< const SfxPointItem* >(pState);
85 			DBG_ASSERT(pState ? pItem != NULL : sal_True, "SfxPointItem erwartet");
86 			if ( pItem )
87 				rRuler.SetNullOffset(pItem->GetValue());
88 		}
89 		break;
90 	}
91 }
92 
93 
94 /*************************************************************************
95 |*
96 |* Konstruktor
97 |*
98 \************************************************************************/
99 
100 Ruler::Ruler( DrawViewShell& rViewSh, ::Window* pParent, ::sd::Window* pWin, sal_uInt16 nRulerFlags,  SfxBindings& rBindings, WinBits nWinStyle)
101 : SvxRuler(pParent, pWin, nRulerFlags, rBindings, nWinStyle)
102 , pSdWin(pWin)
103 , pDrViewShell(&rViewSh)
104 {
105 	rBindings.EnterRegistrations();
106 	pCtrlItem = new RulerCtrlItem(SID_RULER_NULL_OFFSET, *this, rBindings);
107 	rBindings.LeaveRegistrations();
108 
109 	if ( nWinStyle & WB_HSCROLL )
110 	{
111 		bHorz = sal_True;
112 		SetHelpId( HID_SD_RULER_HORIZONTAL );
113 	}
114 	else
115 	{
116 		bHorz = sal_False;
117 		SetHelpId( HID_SD_RULER_VERTICAL );
118 	}
119 }
120 
121 /*************************************************************************
122 |*
123 |* Destruktor
124 |*
125 \************************************************************************/
126 
127 Ruler::~Ruler()
128 {
129 	SfxBindings& rBindings = pCtrlItem->GetBindings();
130 	rBindings.EnterRegistrations();
131 	delete pCtrlItem;
132 	rBindings.LeaveRegistrations();
133 }
134 
135 /*************************************************************************
136 |*
137 |* MouseButtonDown-Handler
138 |*
139 \************************************************************************/
140 
141 void Ruler::MouseButtonDown(const MouseEvent& rMEvt)
142 {
143 	Point aMPos = rMEvt.GetPosPixel();
144 	RulerType eType = GetType(aMPos);
145 
146 	if ( !pDrViewShell->GetView()->IsTextEdit() &&
147 		rMEvt.IsLeft() && rMEvt.GetClicks() == 1 &&
148 		(eType == RULER_TYPE_DONTKNOW || eType == RULER_TYPE_OUTSIDE) )
149 	{
150 		pDrViewShell->StartRulerDrag(*this, rMEvt);
151 	}
152 	else
153 		SvxRuler::MouseButtonDown(rMEvt);
154 }
155 
156 /*************************************************************************
157 |*
158 |* MouseMove-Handler
159 |*
160 \************************************************************************/
161 
162 void Ruler::MouseMove(const MouseEvent& rMEvt)
163 {
164 	SvxRuler::MouseMove(rMEvt);
165 }
166 
167 /*************************************************************************
168 |*
169 |* MouseButtonUp-Handler
170 |*
171 \************************************************************************/
172 
173 void Ruler::MouseButtonUp(const MouseEvent& rMEvt)
174 {
175 	SvxRuler::MouseButtonUp(rMEvt);
176 }
177 
178 /*************************************************************************
179 |*
180 |* NullOffset setzen
181 |*
182 \************************************************************************/
183 
184 void Ruler::SetNullOffset(const Point& rOffset)
185 {
186 	long nOffset;
187 
188 	if ( bHorz )	nOffset = rOffset.X();
189 	else			nOffset = rOffset.Y();
190 
191 	SetNullOffsetLogic(nOffset);
192 }
193 
194 /*************************************************************************
195 |*
196 |* Command event
197 |*
198 \************************************************************************/
199 
200 void Ruler::Command(const CommandEvent& rCEvt)
201 {
202 	if( rCEvt.GetCommand() == COMMAND_CONTEXTMENU &&
203 		!pDrViewShell->GetView()->IsTextEdit() )
204 	{
205 		SvxRuler::Command( rCEvt );
206 	}
207 }
208 
209 /*************************************************************************
210 |*
211 |* ExtraDown
212 |*
213 \************************************************************************/
214 
215 void Ruler::ExtraDown()
216 {
217 	if( !pDrViewShell->GetView()->IsTextEdit() )
218 		SvxRuler::ExtraDown();
219 }
220 
221 } // end of namespace sd
222 
223