    // @(#)root/graf:$Name:  $:$Id: TLink.cxx,v 1.6 2001/07/01 08:31:55 brun Exp $
    // Author: Rene Brun   05/03/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.             *
     *************************************************************************/

    #include <stdio.h>

    #include "TVirtualPad.h"
    #include "TClass.h"
    #include "TROOT.h"
    #include "TLink.h"

    ClassImp(TLink)

    //______________________________________________________________________________
    //
    // Special TText object used to show hyperlinks.
    // In the example below created by TObject::Inspect, TLinks are used
    // to show pointers to other objects.
    // Clicking on one link, inspect the corresponding object.
    //

/* */ //

// //______________________________________________________________________________ TLink::TLink() : TText() { //*-*-*-*-*-*-*-*-*-*-*Link default constructor*-*-*-*-*-*-*-*-*-*-*-*-* //*-* ============================ fLink = 0; } //______________________________________________________________________________ TLink::TLink(Double_t x, Double_t y, void *pointer) : TText(x, y, "") { //*-*-*-*-*-*-*-*-*-*Constructor to define a link object*-*-*-*-*-*-*-* //*-* ======================================== // pointer points to any kind of object. // fLink = pointer; static char line[16]; sprintf(line,"->%lx ", (Long_t)pointer); SetTitle(line); } //______________________________________________________________________________ TLink::~TLink() { //*-*-*-*-*-*-*-*-*-*-*Link default destructor*-*-*-*-*-*-*-*-*-*-*-*-* //*-* ============================= } //______________________________________________________________________________ void TLink::ExecuteEvent(Int_t event, Int_t, Int_t) { //*-*-*-*-*-*-*-*-*-*-*Execute action corresponding to one event*-*-*-* //*-* ========================================= // This member function is called when a link is clicked with the locator // // If mouse is clicked on a link text, the object pointed by the link // is Inspected // if (event == kMouseMotion) gPad->SetCursor(kHand); if (event != kButton1Up) return; if (TestBit(kIsStarStar)) return; TObject *idcur = (TObject*)fLink; if (!idcur) return; TClass *cl = gROOT->GetClass(GetName()); if (!cl) return; //*-*- make a special case for top of Collections //*-*- if status word is 0 take first member //*-*- otherwise go back to parent of linked list // if (cl->InheritsFrom(TCollection::Class())) { // TList *lh = (TList*)idcur; // if (!TestBit(kObjIsParent)) idcur = lh->First(); //// else idcur = lh->GetParent(); // if (!idcur) return; // idcur->Inspect(); // return; // } //*-*- check if link points to a TObject TClass *c1 = (TClass*)cl->GetBaseClass("TObject"); if (!c1) return; idcur->Inspect(); }