InDesign SDK  20.5
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
CTracker.h
1 //========================================================================================
2 //
3 // $File$
4 //
5 // Owner: Lonnie Millett
6 //
7 // $Author$
8 //
9 // $DateTime$
10 //
11 // $Revision$
12 //
13 // $Change$
14 //
15 // Copyright 1997-2010 Adobe Systems Incorporated. All rights reserved.
16 //
17 // NOTICE: Adobe permits you to use, modify, and distribute this file in accordance
18 // with the terms of the Adobe license agreement accompanying it. If you have received
19 // this file from a source other than Adobe, then your use, modification, or
20 // distribution of it requires the prior written permission of Adobe.
21 //
22 //========================================================================================
23 
24 #ifndef __CTRACKER__
25 #define __CTRACKER__
26 
27 #include "ITracker.h"
28 #include "ITrackerTimer.h"
29 #include "HelperInterface.h"
30 #include "PMRect.h"
31 #include "AcquireModalCursor.h"
32 #include "AutoBusyCursor.h"
33 #include "IDynamicTrackerData.h"
34 #include "K2Vector.h"
35 #include "CSprite.h"
36 
37 class IPanorama;
38 class ISnapTo;
40 class ISelectionManager;
41 class IRulerData;
42 class IEventHandler;
43 
44 //----------------------------------------------------------------------------------------
45 // CTracker: Concrete implementation for trackers
46 //----------------------------------------------------------------------------------------
47 
48 
65 class CTracker : public ITracker
66 {
67  public:
68  CTracker(IPMUnknown *boss);
69  virtual ~CTracker();
70 
83  virtual void SetupTracker(IControlView* theControlView, ISnapTo* theSnapper = NULL, IItemContext* context = NULL);
84 
88  virtual IControlView* QueryControlView() const;
89 
92  virtual bool16 IsEnabled();
93 
99  virtual bool16 IsTracking();
100 
104  virtual void EnableTracking();
105 
111  virtual void DisableTracking();
112 
116  virtual bool16 BeginTracking(IEvent* theEvent);
117 
124  virtual void HandleContinueTracking(const GSysPoint& where);
125 
133  virtual void ContinueTracking(const PBPMPoint& where, bool16 mouseDidMove);
134 
138  virtual bool16 EndTracking(IEvent* theEvent);
139 
145  virtual void AbortTracking(IEvent* theEvent);
146 
156  virtual void TimerMessage(int32 flags) { SetTimerFlags(GetTimerFlags() | flags); }
157 
162  virtual bool16 WantTimer(ClassID trackerTimerBoss);
163 
164  protected:
165 
179  virtual void Initialize(IEvent* theEvent);
180 
186  virtual bool16 DoBeginTracking(IEvent* theEvent);
187 
192  virtual bool16 DoEndTracking(IEvent* theEvent);
193 
200  virtual void NotifyBeginTracking(const PMPoint& startPt, IDynamicTrackerData::TrackingEffect effect = IDynamicTrackerData::kUnknown);
201 
207  virtual void NotifyContinueTracking(const PMPoint& startPt, const PMPoint& endPoint, IDynamicTrackerData::TrackingEffect effect = IDynamicTrackerData::kUnknown);
208 
215  virtual void NotifyEndTracking(const PMPoint& startPt, const PMPoint& endPoint, IDynamicTrackerData::TrackingEffect effect = IDynamicTrackerData::kUnknown);
216 
224  virtual IDynamicTrackerData::TrackingEffect GetTrackingEffect(IDynamicTrackerData::TrackingState state);
225 
229  virtual void PushEventHandler();
230 
234  virtual void PopEventHandler();
235 
240  virtual bool16 WantsToAutoScroll(const PMPoint& currentPoint);
241 
252  virtual PMPoint AutoScroll(const PMPoint& scrollBy, const PMPoint& scrolledPoint);
253 
258  virtual void GlobalToPasteboard(const GSysPoint& thePoint, PBPMPoint& convertedPoint);
259 
264  virtual PMPoint PasteboardToGlobal(const PBPMPoint& pbPoint);
265 
268  virtual IPanorama *QueryPanorama( IControlView *pView ) const;
269 
274  virtual void DisableUpdates();
275 
280  virtual void EnableUpdates();
281 
286  void DeselectAllItems() ;
287 
294  virtual void ComputeAdjustedPoint (PMPoint& adjustedPoint);
295 
298  void InitializeModalCursor();
299 
304  void ChangeModalCursor(const CursorSpec& spec);
305 
309  void UpdateModalCursor();
310 
313  void ReleaseModalCursor();
314 
317  virtual uint32 GetMouseMoveDelay(){ return kDefaultMouseMoveDelay; }
318 
321  virtual uint32 GetMouseSteadyDelay(){ return kDefaultMouseSteadyDelay; }
322 
331  virtual bool16 AdjustPoint(PBPMPoint& point);
332 
339  void StartTimer(ClassID trackerTimerBoss, uint32 milliSeconds, uint32 mouseMoveDelay = kDefaultMouseMoveDelay, uint32 mouseSteadyDelay = kDefaultMouseSteadyDelay);
340 
344  void StopTimer(ClassID trackerTimerBoss);
345 
347  bool16 GetTimerFlags() { return (fTimerFlags); }
348  void SetTimerFlags(int32 flags) { fTimerFlags = flags; }
349 
350  uint32 GetElapsedTime() { return SystemUtils::TickCount() - fFirstTicks; }
351 
352 protected:
353  virtual IDataBase* GetTrackingDataBase() const;
354 
355  IControlView* fControlView;
356  IDataBase* fDataBase;
357  IItemContext* fItemContext;
358  ISnapTo* fSnapTo;
359  SnapType fSnapType; // Current snap status of fCurrentPoint. Should be updated when DoSnapTo is called.
360 
361  bool16 fIsTracking;
362  bool16 fWantsToAutoScroll;
363  PMPoint fPreviousPoint;
364  PMPoint fFirstPoint;
365  GSysPoint fFirstGlobalWhere;
366  uint32 fFirstTicks; // TickCount at BeginTracking time
367 
368 
369  bool16 fEnabled;
370 
371  IRulerData* fHorzRuler;
372  IRulerData* fVertRuler;
373 
374  AcquireModalCursor* fModalCursor;
375  AutoBusyCursor* fAutoBusyCursor;
376 
377  uint32 fOldSchedulerMask; // save off the old scheduler mask, so it can be restored
378 
379  int32 fTimerFlags;
380  K2Vector<ITrackerTimer*> fTimerPtrs;
381  //InterfaceCollection<ITrackerTimer> fTimerCollection;
382 
383 #ifdef DEBUG
384  const IEventHandler* fMyEventHandler;
385 #endif
386 
387  // Deactivate the IPageItemFocus at the keyboard
388  static void DeactivatePageItem() ;
389 
390 
391 };
392 
393 
394 #endif