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

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

;-------------------create the main base---------------------------------------;
TLB_EVENT                   = {eis_repoint_xy_gui_Event}
TLB_EVENT.eis_repoint_xy_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_repoint_xy_gui::createGUI

Event_Pro = 'eis_repoint_xy_gui_EV'


;
; Response Study Base
;
repoint_xyBase              = WIDGET_BASE(Self.tlbID ,                      $
                                    ROW         = 1   ,                     $
                                    /NONEXCLUSIVE)

REPOINT_X_EVENT             = {eis_repoint_xy_gui_Event}
REPOINT_X_EVENT.eis_repoint_xy_gui = Self
REPOINT_X_EVENT.Type        = "X_REPOINT"
value = 'Repoint X'
Self.x_repointID            = WIDGET_BUTTON(repoint_xyBase   ,              $
                                    value       = value      ,              $
                                    Event_Pro   = Event_Pro           ,     $
                                    uValue      = REPOINT_X_EVENT)

REPOINT_Y_EVENT             = {eis_repoint_xy_gui_Event}
REPOINT_Y_EVENT.eis_repoint_xy_gui = Self
REPOINT_Y_EVENT.Type        = "Y_REPOINT"
value = 'Repoint Y'
Self.y_repointID            = WIDGET_BUTTON(repoint_xyBase   ,              $
                                    value       = value      ,              $
                                    Event_Pro   = Event_Pro           ,     $
                                    uValue      = REPOINT_Y_EVENT)


;stop
CASE OBJ_CLASS(Self.parentClass) OF
    "EIS_EVENT_GUI"     : Self.parentClass->getProperty ,                   $
                              eis_event_control = control_struct
    "EIS_FLARE_GUI"     : Self.parentClass->getProperty ,                   $
                              eis_flare_control = control_struct
    "EIS_XRT_FLARE_GUI" : Self.parentClass->getProperty ,                   $
                              eis_xrt_flare_control = control_struct
    ELSE            : stop
ENDCASE

;Self.parentClass->getProperty , eis_xrt_flare_control = eis_xrt_flare_control

; Set buttons
WIDGET_CONTROL , Self.x_repointID , set_button = control_struct.adjust_x
WIDGET_CONTROL , Self.y_repointID , set_button = control_struct.adjust_y

END

;______________________________________________________________________________
;
;______________________________________________________________________________
PRO eis_repoint_xy_gui_Cleanup , wid

WIDGET_CONTROL , wid , get_uvalue = eis_repoint_xy_gui_Event
OBJ_DESTROY    , eis_repoint_xy_gui_Event.eis_repoint_xy_gui

END
;______________________________________________________________________________
; Cleanup
;______________________________________________________________________________
PRO eis_repoint_xy_gui::CleanUp


END
;______________________________________________________________________________
;
;______________________________________________________________________________
PRO eis_repoint_xy_gui::setProperty , raster_index = raster_index

IF (N_ELEMENTS(raster_index) GT 0) THEN BEGIN
    ;Self.parentClass->setProperty , raster_index = raster_index
    stop
ENDIF

End
;______________________________________________________________________________
;
;______________________________________________________________________________
PRO eis_repoint_xy_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_repoint_xy_gui::tlbID

    Return, Self.tlbID
End

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

Widget_Control, Self.tlbID, _Extra=Widget_Control_Keywords

End

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

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

End

;______________________________________________________________________________
; Realize wrapper
;______________________________________________________________________________
PRO eis_repoint_xy_gui::Realize

Widget_Control, Self.tlbID, /Realize

End

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

XMANAGER , "eis_repoint_xy_gui" ,   Self.tlbID ,                        $
    Event_Handler  = "eis_repoint_xy_gui_EV",                           $
    cleanup        = "eis_repoint_xy_gui_Cleanup",                      $
    GROUP_LEADER   = Self.group_leader ,                                    $
    /NO_BLOCK

end

;______________________________________________________________________________
;
;______________________________________________________________________________
PRO eis_repoint_xy_gui_Event__Define

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

;Get event handler structure containing eis_repoint_xy_gui type object
Widget_CONTROL,Event.ID,get_uvalue = eis_repoint_xy_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_repoint_xy_gui's class member procedure "Handler"
eis_repoint_xy_gui_Event.eis_repoint_xy_gui->Handler,Event

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

WIDGET_CONTROL, Event.ID, Get_UValue = eis_repoint_xy_gui_Event
CASE eis_repoint_xy_gui_Event.Type OF
    "X_REPOINT"  :  Self->x_repoint
    "Y_REPOINT"  :  Self->y_repoint
    ELSE:       print,eis_repoint_xy_gui_Event.Type
ENDCASE
END
;______________________________________________________________________________
; Toggle Repoint X
;______________________________________________________________________________
PRO	eis_repoint_xy_gui::x_repoint

x_repoint = WIDGET_INFO( Self.x_repointID , /BUTTON_SET)
Self.parentClass->setProperty , x_repoint = x_repoint

END
;______________________________________________________________________________
; Toggle Repoint Y
;______________________________________________________________________________
PRO	eis_repoint_xy_gui::y_repoint

y_repoint = WIDGET_INFO( Self.y_repointID , /BUTTON_SET)
Self.parentClass->setProperty , y_repoint = y_repoint

END
;______________________________________________________________________________
; Define Data members
;______________________________________________________________________________
PRO	eis_repoint_xy_gui__Define

    struct          =	{ eis_repoint_xy_gui                            ,     $
                                    tlbID           : 0L              ,     $
                                    group_leader    : 0L              ,     $
                                    parentClass     : OBJ_NEW()       ,     $
                                    x_repointID     : 0L              ,     $
                                    y_repointID     : 0L                    $
                      }


END
