text: // @(#)root/base:$Id$
  // Author: Fons Rademakers   15/11/95
  
  /*************************************************************************
   * Copyright (C) 1995-2000, 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_TBrowserImp
  #define ROOT_TBrowserImp
  
  //////////////////////////////////////////////////////////////////////////
  //                                                                      //
  // TBrowserImp                                                          //
  //                                                                      //
  // ABC describing GUI independent browser implementation protocol.      //
  //                                                                      //
  //////////////////////////////////////////////////////////////////////////
  
  #include "TObject.h"
  
  class TBrowser;
  class TGMainFrame;
  
  class TBrowserImp {
  
  protected:
     TBrowser  *fBrowser;     //TBrowser associated with this implementation
     Bool_t     fShowCycles;  //Show object cycle numbers in browser
  
     TBrowserImp(const TBrowserImp& br)
       : fBrowser(br.fBrowser), fShowCycles(br.fShowCycles) { }
     TBrowserImp& operator=(const TBrowserImp& br)
       {if(this!=&br) {fBrowser=br.fBrowser; fShowCycles=br.fShowCycles;}
       return *this;}
  
  public:
     TBrowserImp(TBrowser *b=0) : fBrowser(b), fShowCycles(kFALSE) { }
     TBrowserImp(TBrowser *b, const char *title, UInt_t width, UInt_t height, Option_t *opt = "");
     TBrowserImp(TBrowser *b, const char *title, Int_t x, Int_t y, UInt_t width, UInt_t height, Option_t *opt = "");
     virtual ~TBrowserImp() { }
  
     virtual void      Add(TObject *, const char *, Int_t) { }
     virtual void      AddCheckBox(TObject *, Bool_t = kFALSE) { }
     virtual void      CheckObjectItem(TObject *, Bool_t = kFALSE) { }
     virtual void      RemoveCheckBox(TObject *) { }
     virtual void      BrowseObj(TObject *) { }
     TBrowser         *Browser() const { return fBrowser; }
     virtual void      CloseTabs() { }
     virtual void      ExecuteDefaultAction(TObject *) { }
     virtual void      Iconify() { }
     virtual void      RecursiveRemove(TObject *) { }
     virtual void      Refresh(Bool_t = kFALSE) { }
     virtual void      Show() { }
     virtual void      SetDrawOption(Option_t *option="");
     virtual Option_t *GetDrawOption() const { return 0; }
  
     virtual Long_t    ExecPlugin(const char *, const char *, const char *, Int_t, Int_t) { return 0; }
     virtual void      SetStatusText(const char *, Int_t) { }
     virtual void      StartEmbedding(Int_t, Int_t) { }
     virtual void      StopEmbedding(const char *) { }
  
     virtual TGMainFrame *GetMainFrame() const { return 0; }
  
     virtual TBrowser *GetBrowser() const      { return fBrowser; }
     virtual void      SetBrowser(TBrowser *b) { fBrowser = b; }
  
     ClassDef(TBrowserImp,0)  //ABC describing browser implementation protocol
  };
  
  inline TBrowserImp::TBrowserImp(TBrowser *, const char *, UInt_t, UInt_t, Option_t *)
     : fBrowser(0), fShowCycles(kFALSE) { }
  inline TBrowserImp::TBrowserImp(TBrowser *, const char *, Int_t, Int_t, UInt_t, UInt_t, Option_t *)
     : fBrowser(0), fShowCycles(kFALSE) { }
  
  #endif
  