;+
; PROJECT
;          Solar-B EIS
;
; NAME
;          eis_env_var_gui__DEFINE
;
; PURPOSE
;          Preferences GUI
;
; INPUTS
;          parentClass - the eis_mk_plan object
;
; CATEGORY
;          EIS Timeline Planning
;
; WRITTEN
;          John A Rainnie RAL 19-Jun-2008
;
; HISTORY
;          v0.1 JAR 21-Aug-2008
;               Use loop to create envrionment variable widgets!
;          v0.2 JAR 27-Aug-2008
;               Replaced list with text widget.
;-
;______________________________________________________________________________
FUNCTION eis_env_var_gui::Init , parentClass , rp = rp

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

;-------------------create the main base---------------------------------------;
pt_version = eis_get_pt_version_number()
widTitle = "Environment Variables Tool" + pt_version
IF (KEYWORD_SET(rp) EQ 1) THEN widTitle = widTitle + '   REMOTE PLANNING MODE'
TLB_EVENT                  = {eis_env_var_gui_Event}
TLB_EVENT.eis_env_var_gui     = Self
TLB_EVENT.Type             = "TLB"
Self.tlbID                 = WIDGET_BASE(                                  $
                                   TITLE       = widTitle            ,     $
                                   COLUMN      = 1                   ,     $
                                   /FLOATING                         ,     $
                                   GROUP_LEADER = Self.group_leader  ,     $
                                   UValue      = TLB_EVENT )

Event_Pro = 'eis_env_var_gui_EV'

; ______________________________________________________________________
;
; Environment Variables base
;
; ______________________________________________________________________
envvar_base                = WIDGET_BASE(Self.tlbID                  ,     $
                                   COLUMN      = 1                   ,     $
                                   FRAME       = 1)

envvar_list  = [ 'SSW'                                               ,     $
                 'CMDPLN'                                            ,     $
                 'CMDPLN_EISCO'                                      ,     $
                 'cpt_output_dir'                                    ,     $
                 'ZDBASE_USER'                                       ,     $
                 'cpt_input_dir'                                     ,     $
                 'engineering_file_directory'                        ,     $
                 'study_descriptions'                                ,     $
                 'ZDBASE_EIS']
envvar_lines = STRARR(N_ELEMENTS(envvar_list))

FOR i = 0 , N_ELEMENTS(envvar_list) - 1 DO BEGIN

   CASE envvar_list[i] OF
       'ZDBASE_USER' : envvar_value = GETENV(envvar_list[i])
       ELSE          : envvar_value = EXPAND_PATH(GETENV(envvar_list[i]))
   ENDCASE
   envvar_lines[i] = STRING(format='(A-30,A-200)',envvar_list[i]     ,     $
                                                  envvar_value)

ENDFOR
TEXT_EVENT                 = {eis_env_var_gui_Event}
TEXT_EVENT.eis_env_var_gui    = Self
TEXT_EVENT.Type            = "TEXT"
TEXTbutton                 = WIDGET_TEXT(envvar_base                 ,     $
                                   value       = envvar_lines        ,     $
                                   Event_Pro   = 'eis_env_var_gui_EV',     $
                                   uValue      = TEXT_EVENT          ,     $
                                   ySize       = 15                  ,     $
                                   xSize       = 120                 ,     $
                                   /SCROLL)


; ______________________________________________________________________
;
; Bottom base
;
; ______________________________________________________________________
bottomBase                 = WIDGET_BASE(Self.tlbID  ,                      $
                                    ROW         = 1  ,                      $
                                    /GRID_LAYOUT)

QUIT_EVENT                 = {eis_env_var_gui_Event}
QUIT_EVENT.eis_env_var_gui    = Self
QUIT_EVENT.Type            = "QUIT"
quitbutton                 = WIDGET_BUTTON(bottomBase,                      $
                                    value       = ' Quit ',                  $
                                    Event_Pro   = 'eis_env_var_gui_EV',     $
                                    uValue      = QUIT_EVENT)

RETURN, 1

END
;______________________________________________________________________________
;
;______________________________________________________________________________
PRO eis_env_var_gui_Cleanup , wid

WIDGET_CONTROL , wid , get_uvalue = eis_env_var_gui_Event
OBJ_DESTROY    , eis_env_var_gui_Event.eis_env_var_gui

END
;______________________________________________________________________________
; Cleanup
;______________________________________________________________________________
PRO eis_env_var_gui::CleanUp


END
;______________________________________________________________________________
;
;______________________________________________________________________________
PRO eis_env_var_gui::setProperty, start_time = start_time

IF (N_ELEMENTS(start_time) GT 0) THEN BEGIN

    stop

ENDIF

END
;______________________________________________________________________________
;
;______________________________________________________________________________
PRO eis_env_var_gui::GetProperty, tlbID      = tlbID

tlbID      = Self.tlc_textID

END
;______________________________________________________________________________
; Return widget id
;______________________________________________________________________________
FUNCTION eis_env_var_gui::tlbID

    RETURN, Self.tlbID
END
;______________________________________________________________________________
; Widget_Control wrapper
;______________________________________________________________________________
PRO eis_env_var_gui::Control, _Ref_Extra=Widget_Control_Keywords

Widget_Control, Self.tlbID, _Extra=Widget_Control_Keywords

End
;______________________________________________________________________________
; Widget_Info wrapper
;______________________________________________________________________________
FUNCTION eis_env_var_gui::Info, _Ref_Extra=Widget_Info_Keywords

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

End

;______________________________________________________________________________
; Realize wrapper
;______________________________________________________________________________
PRO eis_env_var_gui::Realize

Widget_Control, Self.tlbID, /Realize

End

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

XMANAGER , "eis_env_var_gui" ,   Self.tlbID ,                                 $
    Event_Handler  = "eis_env_var_gui_EV",                                    $
    cleanup        = "eis_env_var_gui_Cleanup",                               $
    GROUP_LEADER   = Self.group_leader ,                                    $
    /NO_BLOCK

end

;______________________________________________________________________________
;
;______________________________________________________________________________
PRO eis_env_var_gui_Event__Define

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

;Get event handler structure containing eis_env_var_gui type object
Widget_CONTROL,Event.ID,get_uvalue = eis_env_var_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_env_var_gui's class member procedure "Handler"
eis_env_var_gui_Event.eis_env_var_gui->Handler,Event

END
;______________________________________________________________________________
;
; * THIS is the routine for putting in event handling NOT eis_env_var_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_env_var_gui::Handler, Event

WIDGET_CONTROL, Event.ID, Get_UValue = eis_env_var_gui_Event
CASE eis_env_var_gui_Event.Type OF
   "QUIT"       : Self->Control, /Destroy
   ELSE         : print,eis_env_var_gui_Event.Type
ENDCASE
END
;______________________________________________________________________________
;
;______________________________________________________________________________
PRO eis_env_var_gui::draw



END
;______________________________________________________________________________
; Define Data members
;______________________________________________________________________________
PRO eis_env_var_gui__define

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


END