;------------------------------------------------------------------------------;
;+
; NAME: 
;		     eis_event_ll_gui
; PURPOSE:
;		     This object
; INPUTS:
;		     GROUP -  
;-
;------------------------------------------------------------------------------;
FUNCTION eis_event_ll_gui::Init , parentClass

Self.parentClass  = parentClass
Self.group_leader = parentClass->tlbID()

;-------------------create the main base---------------------------------------;
TLB_EVENT                   = {eis_event_ll_gui_Event}
TLB_EVENT.eis_event_ll_gui = Self
TLB_EVENT.Type              = "TLB"
Self.tlbID                  = WIDGET_BASE( Self.group_leader     ,          $
                                    COLUMN      = 1              ,          $
                                    FRAME       = 1)

;-------------------create the GUI------------------------------;
Self->createGUI

RETURN, 1

END
;______________________________________________________________________________
; 
;______________________________________________________________________________
PRO eis_event_ll_gui::createGUI

Event_Pro = 'eis_event_ll_gui_EV'


;
; Line List Selection  Base
;
llBase                      = WIDGET_BASE(Self.tlbID ,                      $
                                    COLUMN      = 1)


value = 'Select a line'
aLabel                      = WIDGET_LABEL(llBase ,                         $
                                    /ALIGN_LEFT     ,                       $
                                    value       = value)



LL_EVENT                    = {eis_event_ll_gui_Event}
LL_EVENT.eis_event_ll_gui   = Self
LL_EVENT.Type               = "LL_EVENT"
Self.llID                   = WIDGET_LIST(llBase,                $
                                    value       = '0',                      $
                                    xSize       = 25     ,                  $
                                    ySize       = 25     ,                  $
                                    Event_Pro   = Event_Pro ,               $
                                    uValue      = LL_EVENT)


; Current Value
;WIDGET_CONTROL , Self.threshXID , set_value = control_struct.x_threshold

END

;______________________________________________________________________________
; 
;______________________________________________________________________________
PRO eis_event_ll_gui_Cleanup , wid

WIDGET_CONTROL , wid , get_uvalue = eis_event_ll_gui_Event
OBJ_DESTROY    , eis_event_ll_gui_Event.eis_event_ll_gui

END
;______________________________________________________________________________
; Cleanup
;______________________________________________________________________________
PRO eis_event_ll_gui::CleanUp


END
;______________________________________________________________________________
;
;______________________________________________________________________________
PRO eis_event_ll_gui::setProperty , ll_id = ll_id

IF (N_ELEMENTS(ll_id) GT 0) THEN BEGIN

    stop

ENDIF

End
;______________________________________________________________________________
;
;______________________________________________________________________________
PRO eis_event_ll_gui::GetProperty, acronymID = acronymID ,            $
                                         idID      = idID      ,            $
                                         ra_indexID = ra_indexID

acronymID  = Self.acronymID
idID       = Self.idID
ra_indexID = Self.ra_indexID

End
;______________________________________________________________________________
; Return widget id
;______________________________________________________________________________
Function eis_event_ll_gui::tlbID

    Return, Self.tlbID
End

;______________________________________________________________________________
; Widget_Control wrapper
;______________________________________________________________________________
PRO eis_event_ll_gui::Control, _Ref_Extra=Widget_Control_Keywords

Widget_Control, Self.tlbID, _Extra=Widget_Control_Keywords

End

;______________________________________________________________________________
; Widget_Info wrapper
;______________________________________________________________________________
Function eis_event_ll_gui::Info, _Ref_Extra=Widget_Info_Keywords

Return, Widget_Info(Self.tlbID, _Extra=Widget_Info_Keywords)

End

;______________________________________________________________________________
; Realize wrapper
;______________________________________________________________________________
PRO eis_event_ll_gui::Realize

Widget_Control, Self.tlbID, /Realize
	
End

;______________________________________________________________________________
; XManager wrapper
;______________________________________________________________________________
PRO eis_event_ll_gui::XManager;,group=group

XMANAGER , "eis_event_ll_gui" ,   Self.tlbID ,                        $
    Event_Handler  = "eis_event_ll_gui_EV",                           $
    cleanup        = "eis_event_ll_gui_Cleanup",                      $
    GROUP_LEADER   = Self.group_leader ,                                    $
    /NO_BLOCK

end

;______________________________________________________________________________
; 
;______________________________________________________________________________
PRO eis_event_ll_gui_Event__Define

    struct = {  eis_event_ll_gui_Event,                               $
                Type            : "",        $ ;Unique identifier for event
                eis_event_ll_gui   : OBJ_NEW(), $ ;Reference to object passed
                extra           : 0          $ ;to - often object associated
             }
END
;______________________________________________________________________________
; Event Handler wrapper
;______________________________________________________________________________
PRO eis_event_ll_gui_EV , Event

;Get event handler structure containing eis_event_ll_gui type object
Widget_CONTROL,Event.ID,get_uvalue = eis_event_ll_gui_Event
;If a WIDGET_TAB event , just quit
IF (TAG_NAMES(event, /STRUCTURE_NAME) EQ 'WIDGET_TAB') THEN BEGIN
    ;print,'tab event'
    RETURN
ENDIF

;Call eis_event_ll_gui's class member procedure "Handler"
eis_event_ll_gui_Event.eis_event_ll_gui->Handler,Event

END
;______________________________________________________________________________
;
; * THIS is the routine for putting in event handling NOT eis_event_ll_gui_Ev above.
;
; Event Handler - handle events.  Derived classes must
; contain their own implementation in order to handle events or else pass in an
; procedure name/function name using the Event_Pro/Event_Func keywords to 
; CWidget::Init()
;______________________________________________________________________________
PRO eis_event_ll_gui::Handler, Event

WIDGET_CONTROL, Event.ID, Get_UValue = eis_event_ll_gui_Event
CASE eis_event_ll_gui_Event.Type OF
    "LL_EVENT"  :  Self->ll_event
    ELSE        :  print,eis_event_ll_gui_Event.Type
ENDCASE
END
;______________________________________________________________________________
; Update Selected Line
;______________________________________________________________________________
PRO	eis_event_ll_gui::update_selected_line , ll_id , index

ll      = db_read_linelist_entry(ll_id)
ll_list = STRARR(ll.nLines)

FOR i = 0, ll.nLines - 1 DO BEGIN

    wave = STRING(format='(F6.2)',ll.lines[i].wavelength/100.)
    name = ll.lines[i].name
    
    ll_list[i] = STRING(format='(A-10,A-12)',wave,name)


ENDFOR

WIDGET_CONTROL , Self.llID , ySize = ll.nLines , set_value = ll_list
WIDGET_CONTROL , Self.llID , set_list_select = index

END
;______________________________________________________________________________
; Set Line Selection
;______________________________________________________________________________
PRO	eis_event_ll_gui::ll_event

line_index = WIDGET_INFO(Self.llID , /LIST_SELECT)
Self.parentClass->setProperty , line_index = line_index

END
;______________________________________________________________________________
; Define Data members
;______________________________________________________________________________
PRO	eis_event_ll_gui__Define

    struct          =	{ eis_event_ll_gui                              ,     $
                                    tlbID           : 0L              ,     $
                                    group_leader    : 0L              ,     $
                                    parentClass     : OBJ_NEW()       ,     $
                                    llID            : 0L                   $
                      }


END
