// @(#)root/ged:$Id$
// Author: Ilka  Antcheva 10/05/04

/*************************************************************************
 * Copyright (C) 1995-2002, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#ifndef ROOT_TGedFrame
#define ROOT_TGedFrame

//////////////////////////////////////////////////////////////////////////
//                                                                      //
//  TGedFrame                                                           //
//                                                                      //
//  Base editor's attribute frame - a service class.                    //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#ifndef ROOT_TGFrame
#include "TGFrame.h"
#endif

class TVirtualPad;
class TCanvas;
class TGLabel;
class TGToolTip;
class TList;
class TGTab;
class TGedEditor;

class TGedFrame : public TGCompositeFrame {

public:
   // Inner class to store information for each extra tab.
   class TGedSubFrame : public TObject {
   private:
      TGedSubFrame(const TGedSubFrame&);            // Not implemented
      TGedSubFrame& operator=(const TGedSubFrame&); // Not implemented
   public:
      TString            fName;
      TGCompositeFrame  *fFrame;

      TGedSubFrame(TString n,  TGCompositeFrame* f) : fName(n), fFrame(f) {}
   };

private:
   TGedFrame(const TGedFrame&);            // Not implemented
   TGedFrame& operator=(const TGedFrame&); // Not implemented

protected:
   Bool_t          fInit;        // init flag for setting signals/slots
   TGedEditor     *fGedEditor;   // manager of this frame
   TClass         *fModelClass;  // class corresponding to instantiated GedFrame
   Bool_t          fAvoidSignal; // flag for executing slots

   TList          *fExtraTabs;   // addtional tabs in ged editor
   Int_t           fPriority;    // location in GedEditor

   virtual void MakeTitle(const char *title);

public:
   TGedFrame(const TGWindow *p = 0,
             Int_t width = 140, Int_t height = 30,
             UInt_t options = kChildFrame,
             Pixel_t back = GetDefaultFrameBackground());
   virtual ~TGedFrame();

   virtual void      Update();

   virtual Option_t *GetDrawOption() const;

   TClass*           GetModelClass()              { return fModelClass;  }
   Int_t             GetPriority()                { return fPriority;    }
   TList*            GetExtraTabs()               { return fExtraTabs;   }
   TGedEditor*       GetGedEditor()               { return fGedEditor;   }
   virtual void      AddExtraTab(TGedSubFrame* sf);
   virtual TGVerticalFrame* CreateEditorTabSubFrame(const char* name);

   virtual void      Refresh(TObject *model);
   virtual void      SetDrawOption(Option_t *option="");
   virtual Bool_t    AcceptModel(TObject*) { return kTRUE; }
   void              SetModelClass(TClass* mcl)   { fModelClass = mcl; }
   virtual void      SetModel(TObject* obj) = 0;
   virtual void      SetGedEditor(TGedEditor* ed) { fGedEditor = ed; }
   virtual void      ActivateBaseClassEditors(TClass* cl);

   ClassDef(TGedFrame, 0); //base editor's frame
};

class TGedNameFrame : public TGedFrame {
private:
   TGedNameFrame(const TGedNameFrame&);            // not implemented
   TGedNameFrame& operator=(const TGedNameFrame&); // not implemented

protected:
   TGLabel          *fLabel;      //label of attribute frame
   TGCompositeFrame *f1, *f2;     //container frames
   TGToolTip        *fTip;        //tool tip associated with button

public:
   TGedNameFrame(const TGWindow *p =0 ,
                 Int_t width = 170, Int_t height = 30,
                 UInt_t options = kChildFrame,
                 Pixel_t back = GetDefaultFrameBackground());
   virtual ~TGedNameFrame();

   virtual Bool_t   HandleButton(Event_t *event);
   virtual Bool_t   HandleCrossing(Event_t *event);

   virtual void     SetModel(TObject* obj);

   ClassDef(TGedNameFrame,0)      //frame showing the selected object name
};

#endif

 TGedFrame.h:1
 TGedFrame.h:2
 TGedFrame.h:3
 TGedFrame.h:4
 TGedFrame.h:5
 TGedFrame.h:6
 TGedFrame.h:7
 TGedFrame.h:8
 TGedFrame.h:9
 TGedFrame.h:10
 TGedFrame.h:11
 TGedFrame.h:12
 TGedFrame.h:13
 TGedFrame.h:14
 TGedFrame.h:15
 TGedFrame.h:16
 TGedFrame.h:17
 TGedFrame.h:18
 TGedFrame.h:19
 TGedFrame.h:20
 TGedFrame.h:21
 TGedFrame.h:22
 TGedFrame.h:23
 TGedFrame.h:24
 TGedFrame.h:25
 TGedFrame.h:26
 TGedFrame.h:27
 TGedFrame.h:28
 TGedFrame.h:29
 TGedFrame.h:30
 TGedFrame.h:31
 TGedFrame.h:32
 TGedFrame.h:33
 TGedFrame.h:34
 TGedFrame.h:35
 TGedFrame.h:36
 TGedFrame.h:37
 TGedFrame.h:38
 TGedFrame.h:39
 TGedFrame.h:40
 TGedFrame.h:41
 TGedFrame.h:42
 TGedFrame.h:43
 TGedFrame.h:44
 TGedFrame.h:45
 TGedFrame.h:46
 TGedFrame.h:47
 TGedFrame.h:48
 TGedFrame.h:49
 TGedFrame.h:50
 TGedFrame.h:51
 TGedFrame.h:52
 TGedFrame.h:53
 TGedFrame.h:54
 TGedFrame.h:55
 TGedFrame.h:56
 TGedFrame.h:57
 TGedFrame.h:58
 TGedFrame.h:59
 TGedFrame.h:60
 TGedFrame.h:61
 TGedFrame.h:62
 TGedFrame.h:63
 TGedFrame.h:64
 TGedFrame.h:65
 TGedFrame.h:66
 TGedFrame.h:67
 TGedFrame.h:68
 TGedFrame.h:69
 TGedFrame.h:70
 TGedFrame.h:71
 TGedFrame.h:72
 TGedFrame.h:73
 TGedFrame.h:74
 TGedFrame.h:75
 TGedFrame.h:76
 TGedFrame.h:77
 TGedFrame.h:78
 TGedFrame.h:79
 TGedFrame.h:80
 TGedFrame.h:81
 TGedFrame.h:82
 TGedFrame.h:83
 TGedFrame.h:84
 TGedFrame.h:85
 TGedFrame.h:86
 TGedFrame.h:87
 TGedFrame.h:88
 TGedFrame.h:89
 TGedFrame.h:90
 TGedFrame.h:91
 TGedFrame.h:92
 TGedFrame.h:93
 TGedFrame.h:94
 TGedFrame.h:95
 TGedFrame.h:96
 TGedFrame.h:97
 TGedFrame.h:98
 TGedFrame.h:99
 TGedFrame.h:100
 TGedFrame.h:101
 TGedFrame.h:102
 TGedFrame.h:103
 TGedFrame.h:104
 TGedFrame.h:105
 TGedFrame.h:106
 TGedFrame.h:107
 TGedFrame.h:108
 TGedFrame.h:109
 TGedFrame.h:110
 TGedFrame.h:111
 TGedFrame.h:112
 TGedFrame.h:113
 TGedFrame.h:114
 TGedFrame.h:115
 TGedFrame.h:116
 TGedFrame.h:117
 TGedFrame.h:118
 TGedFrame.h:119
 TGedFrame.h:120