00001 // $Id: TVirtualDragManager.h,v 1.1 2004/09/08 16:03:57 brun Exp $ 00002 // Author: Valeriy Onuchin 12/08/04 00003 00004 /************************************************************************* 00005 * Copyright (C) 1995-2004, Rene Brun and Fons Rademakers. * 00006 * All rights reserved. * 00007 * * 00008 * For the licensing terms see $ROOTSYS/LICENSE. * 00009 * For the list of contributors see $ROOTSYS/README/CREDITS. * 00010 *************************************************************************/ 00011 00012 #ifndef ROOT_TVirtualDragManager 00013 #define ROOT_TVirtualDragManager 00014 00015 00016 ////////////////////////////////////////////////////////////////////////// 00017 // // 00018 // TVirtualDragManager // 00019 // // 00020 ////////////////////////////////////////////////////////////////////////// 00021 00022 #ifndef ROOT_TGFrame 00023 #include "TGFrame.h" 00024 #endif 00025 00026 enum EDragType { kDragNone, kDragMove, kDragCopy, 00027 kDragLink, kDragLasso, kDragResize }; 00028 00029 00030 class TVirtualDragManager { 00031 00032 protected: 00033 Bool_t fMoveWaiting; // kTRUE if source is clicked but not moved 00034 Bool_t fDragging; // in dragging mode? 00035 Bool_t fDropping; // drop is in progress 00036 Bool_t fPasting; // paste action is in progress 00037 EDragType fDragType; // dragging type 00038 TGFrame *fSource; // frame being dragged 00039 TGFrame *fFrameUnder; // frame under drag 00040 TGFrame *fTarget; // drop target 00041 TGFrame *fPasteFrame; // 00042 00043 protected: 00044 virtual void Init(); 00045 00046 public: 00047 TVirtualDragManager(); 00048 virtual ~TVirtualDragManager() {} 00049 00050 EDragType GetDragType() const { return fDragType; } 00051 Bool_t IsMoveWaiting() const { return fMoveWaiting; } 00052 Bool_t IsDragging() const { return fDragging; } 00053 Bool_t IsDropping() const { return fDropping; } 00054 Bool_t IsPasting() const { return fPasting; } 00055 TGFrame *GetTarget() const { return fTarget; } 00056 TGFrame *GetSource() const { return fSource; } 00057 TGFrame *GetFrameUnder() const { return fFrameUnder; } 00058 TGFrame *GetPasteFrame() const { return fPasteFrame; } 00059 00060 virtual void SetTarget(TGFrame *f) { fTarget = f; } 00061 virtual void SetSource(TGFrame *f) { fSource = f; } 00062 virtual void SetPasteFrame(TGFrame *f) { fPasteFrame = f; } 00063 00064 virtual Bool_t StartDrag(TGFrame * = 0, Int_t = 0, Int_t = 0) { return kFALSE; } 00065 virtual Bool_t EndDrag() { return kFALSE; } 00066 virtual Bool_t Drop() { return kFALSE; } 00067 virtual Bool_t Cancel(Bool_t = kTRUE) { return kFALSE; } 00068 00069 virtual Bool_t HandleEvent(Event_t *) { return kFALSE; } 00070 virtual Bool_t HandleTimerEvent(Event_t *, TTimer *) { return kFALSE; } 00071 virtual Bool_t IgnoreEvent(Event_t *) { return kTRUE; } 00072 virtual void SetEditable(Bool_t) {} 00073 00074 virtual Int_t GetStrartDragX() const { return 0; } 00075 virtual Int_t GetStrartDragY() const { return 0; } 00076 virtual Int_t GetEndDragX() const { return 0; } 00077 virtual Int_t GetEndDragY() const { return 0; } 00078 00079 static TVirtualDragManager *Instance(); 00080 00081 ClassDef(TVirtualDragManager,0) // drag and drop manager 00082 }; 00083 00084 R__EXTERN TVirtualDragManager *gDragManager; // global drag manager 00085 00086 #endif