1    	// @(#)root/base:$Id$
2    	// Author: Fons Rademakers   15/11/95
3    	
4    	/*************************************************************************
5    	 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
6    	 * All rights reserved.                                                  *
7    	 *                                                                       *
8    	 * For the licensing terms see $ROOTSYS/LICENSE.                         *
9    	 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
10   	 *************************************************************************/
11   	
12   	
13   	#ifndef ROOT_TBrowserImp
14   	#define ROOT_TBrowserImp
15   	
16   	//////////////////////////////////////////////////////////////////////////
17   	//                                                                      //
18   	// TBrowserImp                                                          //
19   	//                                                                      //
20   	// ABC describing GUI independent browser implementation protocol.      //
21   	//                                                                      //
22   	//////////////////////////////////////////////////////////////////////////
23   	
24   	#ifndef ROOT_TObject
25   	#include "TObject.h"
26   	#endif
27   	
28   	class TBrowser;
29   	class TGMainFrame;
30   	
31   	class TBrowserImp {
32   	
33   	protected:
34   	   TBrowser  *fBrowser;     //TBrowser associated with this implementation
35   	   Bool_t     fShowCycles;  //Show object cycle numbers in browser
36   	
37   	   TBrowserImp(const TBrowserImp& br)
38   	     : fBrowser(br.fBrowser), fShowCycles(br.fShowCycles) { }
39   	   TBrowserImp& operator=(const TBrowserImp& br)
40   	     {if(this!=&br) {fBrowser=br.fBrowser; fShowCycles=br.fShowCycles;}
41   	     return *this;}
42   	
43   	public:
44   	   TBrowserImp(TBrowser *b=0) : fBrowser(b), fShowCycles(kFALSE) { }
45   	   TBrowserImp(TBrowser *b, const char *title, UInt_t width, UInt_t height, Option_t *opt = "");
46   	   TBrowserImp(TBrowser *b, const char *title, Int_t x, Int_t y, UInt_t width, UInt_t height, Option_t *opt = "");
47   	   virtual ~TBrowserImp() { }
48   	
49   	   virtual void      Add(TObject *, const char *, Int_t) { }
50   	   virtual void      AddCheckBox(TObject *, Bool_t = kFALSE) { }
51   	   virtual void      CheckObjectItem(TObject *, Bool_t = kFALSE) { }
52   	   virtual void      RemoveCheckBox(TObject *) { }
53   	   virtual void      BrowseObj(TObject *) { }
54   	   TBrowser         *Browser() const { return fBrowser; }
55   	   virtual void      CloseTabs() { }
56   	   virtual void      ExecuteDefaultAction(TObject *) { }
57   	   virtual void      Iconify() { }
58   	   virtual void      RecursiveRemove(TObject *) { }
59   	   virtual void      Refresh(Bool_t = kFALSE) { }
60   	   virtual void      Show() { }
61   	   virtual void      SetDrawOption(Option_t *option="");
62   	   virtual Option_t *GetDrawOption() const { return 0; }
63   	
64   	   virtual Long_t    ExecPlugin(const char *, const char *, const char *, Int_t, Int_t) { return 0; }
65   	   virtual void      SetStatusText(const char *, Int_t) { }
66   	   virtual void      StartEmbedding(Int_t, Int_t) { }
67   	   virtual void      StopEmbedding(const char *) { }
68   	
69   	   virtual TGMainFrame *GetMainFrame() const { return 0; }
70   	
71   	   virtual TBrowser *GetBrowser() const      { return fBrowser; }
72   	   virtual void      SetBrowser(TBrowser *b) { fBrowser = b; }
73   	
74   	   ClassDef(TBrowserImp,0)  //ABC describing browser implementation protocol
75   	};
76   	
77   	inline TBrowserImp::TBrowserImp(TBrowser *, const char *, UInt_t, UInt_t, Option_t *)
78   	   : fBrowser(0), fShowCycles(kFALSE) { }
79   	inline TBrowserImp::TBrowserImp(TBrowser *, const char *, Int_t, Int_t, UInt_t, UInt_t, Option_t *)
80   	   : fBrowser(0), fShowCycles(kFALSE) { }
81   	
82   	#endif
83