pro spd_ui_load_barrel_data_event,event
compile_opt hidden,idl2
err_xxx = 0
Catch, err_xxx
IF (err_xxx NE 0) THEN BEGIN
Catch, /Cancel
Help, /Last_Message, Output = err_msg
Print, 'Error--See history'
ok=error_message('An unknown error occured and the window must be datatypetarted. See console for details.',$
/noname, /center, title='Error in Load Data')
if is_struct(state) then begin
FOR j = 0, N_Elements(err_msg)-1 DO state.historywin->update,err_msg[j]
if widget_valid(state.baseID) && obj_valid(state.historyWin) then begin
spd_gui_error,state.baseid,state.historyWin
endif
if obj_valid(state.loadTree) then begin
*state.treeCopyPtr = state.loadTree->getCopy()
endif
Widget_Control, event.TOP, Set_UValue=state, /No_Copy
endif
widget_control, event.top,/destroy
RETURN
ENDIF
widget_control, event.handler, Get_UValue=state, /no_copy
widget_control, event.id, get_uvalue = uval
if is_string(uval) then begin
case uval of
'CLEARYEARS': begin
campaignyearlist = widget_info(event.handler,find_by_uname='campaignyearlist')
widget_control,campaignyearlist,set_list_select=-1
end
'CLEARPAYLOAD': begin
payloadlist = widget_info(event.handler,find_by_uname='payloadlist')
widget_control,payloadlist,set_list_select=-1
end
'CLEARDATATYPE': begin
datatypelist = widget_info(event.handler,find_by_uname='datatypelist')
widget_control,datatypelist,set_list_select=-1
end
'CLEARDATA': begin
ok = dialog_message("This will delete all currently loaded data. Are you sure you wish to continue?",/question,/default_no,/center)
if strlowcase(ok) eq 'yes' then begin
datanames = state.loadedData->getAll(/parent)
if is_string(datanames) then begin
for i = 0,n_elements(dataNames)-1 do begin
datatypeult = state.loadedData->remove(datanames[i])
if ~datatypeult then begin
state.statusBar->update,'Unexpected error while removing data.'
state.historyWin->update,'Unexpected error while removing data.'
endif
endfor
endif
state.loadTree->update
state.callSequence->clearCalls
endif
end
'DEL': begin
dataNames = state.loadTree->getValue()
if ptr_valid(datanames[0]) then begin
for i = 0,n_elements(dataNames)-1 do begin
datatypeult = state.loadedData->remove((*datanames[i]).groupname)
if ~datatypeult then begin
state.statusBar->update,'Unexpected error while removing data.'
state.historyWin->update,'Unexpected error while removing data.'
endif else begin
state.callSequence->adddeletecall,(*datanames[i]).groupname
endelse
endfor
endif
state.loadTree->update
end
'ADD': begin
campaignyearlist = widget_info(event.handler,find_by_uname='campaignyearlist')
campaignyearSelect = widget_info(campaignyearlist,/list_select)
if campaignyearSelect[0] eq -1 then begin
state.statusBar->update,'You must select at least one campaign year'
state.historyWin->update,'BARREL add attempted without selecting campaign year'
break
endif
payloadlist = widget_info(event.handler,find_by_uname='payloadlist')
payloadSelect = widget_info(payloadlist,/list_select)
if payloadSelect[0] eq -1 then begin
state.statusBar->update,'You must select at least one payload ID'
state.historyWin->update,'BARREL add attempted without selecting payload ID'
break
endif
datatypelist = widget_info(event.handler,find_by_uname='datatypelist')
datatypeSelect = widget_info(datatypelist,/list_select)
if datatypeSelect[0] eq -1 then begin
state.statusBar->update, 'You must select at least one data type'
state.historyWin->update, 'BARREL add attempted without selecting data type'
break
endif
campaignyears = state.campaignyearArray[campaignyearSelect]
payloads = state.payloadArray[payloadSelect]
datatypes = state.datatypeArray[datatypeSelect]
timeRangeObj = state.timeRangeObj
timeRangeObj->getProperty,startTime=startTimeObj,endTime=endTimeObj
startTimeObj->getProperty,tdouble=startTimeDouble,tstring=startTimeString
endTimeObj->getProperty,tdouble=endTimeDouble,tstring=endTimeString
if startTimeDouble ge endTimeDouble then begin
state.statusBar->update,'Cannot add data unless end time is greater than start time.'
state.historyWin->update,'BARREL add attempted with start time greater than end time.'
break
endif
loadStruc = { campaignyear:campaignyears, $
probe:payloads, $
datatype:datatypes, $
timeRange:[startTimeString,endTimeString] }
widget_control, /hourglass
spd_ui_load_barrel_import,$
loadStruc, $
state.loadedData, $
state.statusBar, $
state.historyWin, $
state.baseid, $
overwrite_selections=overwrite_selections
state.loadTree->update
callSeqStruc = { type:'loadapidata', $
subtype:'spd_ui_load_barrel_import', $
loadStruc:loadStruc, $
overwrite_selections:overwrite_selections }
state.callSequence->addSt, callSeqStruc
end
'CAMPAIGNYEARLIST': begin
campaignyearlist = widget_info(event.handler,find_by_uname='campaignyearlist')
campaignyearSelect = widget_info(campaignyearlist,/list_select)
if campaignyearSelect[0] eq -1 then begin
state.statusBar->update, 'You must select at least one data level'
state.historyWin->update, 'BARREL add attempted without selecting data level'
endif else if campaignyearSelect[0] eq 0 then begin
payloadArray = state.payloadArray12
state.payloadArray = payloadArray
payloadlist = widget_info(event.handler,find_by_uname='payloadlist')
widget_control,payloadlist,set_value=payloadArray
endif else if campaignyearSelect[0] eq 1 then begin
payloadArray = state.payloadArray13
state.payloadArray = payloadArray
payloadlist = widget_info(event.handler,find_by_uname='payloadlist')
widget_control,payloadlist,set_value=payloadArray
endif
end
else:
endcase
endif
Widget_Control, event.handler, Set_UValue=state, /No_Copy
return
end
pro spd_ui_load_barrel_data,tabid,loadedData,historyWin,statusBar,treeCopyPtr,timeRangeObj,callSequence,loadTree=loadTree,timeWidget=timeWidget
compile_opt idl2,hidden
getresourcepath,rpath
rightArrow = read_bmp(rpath + 'arrow_000_medium.bmp', /rgb)
trashcan = read_bmp(rpath + 'trashcan.bmp', /rgb)
spd_ui_match_background, tabid, rightArrow
spd_ui_match_background, tabid, trashcan
topBase = Widget_Base(tabid, /Row, /Align_Top, /Align_Left, YPad=1,event_pro='spd_ui_load_barrel_data_event')
leftBase = widget_base(topBase,/col)
middleBase = widget_base(topBase,/col,/align_center)
rightBase = widget_base(topBase,/col)
leftLabel = widget_label(leftBase,value='BARREL Data Selection:',/align_left)
rightLabel = widget_label(rightBase,value='Data Loaded:',/align_left)
selectionBase = widget_base(leftBase,/col,/frame)
treeBase = widget_base(rightBase,/col,/frame)
addButton = Widget_Button(middleBase, Value=rightArrow, /Bitmap, UValue='ADD', $
ToolTip='Load data selection')
minusButton = Widget_Button(middleBase, Value=trashcan, /Bitmap, $
Uvalue='DEL', $
ToolTip='Delete data selected in the list of loaded data')
loadTree = Obj_New('spd_ui_widget_tree', treeBase, 'LOADTREE', loadedData, $
XSize=400, YSize=425, mode=0, /multi,/showdatetime)
loadTree->update,from_copy=*treeCopyPtr
clearDataBase = widget_base(rightBase,/row,/align_center)
clearDataButton = widget_button(clearDataBase,value='Delete All Data',uvalue='CLEARDATA',/align_center,ToolTip='Deletes all loaded data')
timeWidget = spd_ui_time_widget(selectionBase,$
statusBar,$
historyWin,$
timeRangeObj=timeRangeObj,$
uvalue='TIME_WIDGET',$
uname='time_widget',$
startyear=1995)
campaignyearArrayValues = ['2012-2013', '2013-2014']
campaignyearArrayDisplayed = ['2012-2013', '2013-2014']
payloadArray12 = ['*', '1A', '1B', '1C', '1D', '1G', '1H', '1I', '1J', '1K', '1M', '1N', '1O', '1Q', '1R', '1S', '1T', '1U', '1V']
payloadArray13 = ['*', '2A', '2B', '2C', '2D', '2E', '2F', '2I', '2K', '2L', '2M', '2N', '2O', '2P', '2Q', '2T', '2W', '2X', '2Y']
payloadArray = payloadArray12
datatypeArray = ['*', 'EPHM', 'FSPC', 'MSPC', 'SSPC']
dataBase = widget_base(selectionBase,/row)
campaignyearBase = widget_base(dataBase,/col)
campaignyearLabel = widget_label(campaignyearBase,value='Campaign Year: ')
campaignyearList = widget_list(campaignyearBase,$
value=campaignyearArrayDisplayed,$
uname='campaignyearlist',$
uvalue='CAMPAIGNYEARLIST',$
xsize=16,$
ysize=15)
widget_control, campaignyearList, set_list_select = 0
payloadBase = widget_base(dataBase,/col)
payloadLabel = widget_label(payloadBase,value='Payload ID:')
payloadList = widget_list(payloadBase,$
value=payloadArray,$
uname='payloadlist',$
uvalue='PAYLOADLIST',$
multiple=1,$
xsize=16,$
ysize=15)
CLEARPAYLOADButton = widget_button(payloadBase,value='Clear Payload ID',uvalue='CLEARPAYLOAD',ToolTip='Deselect all payload IDs')
widget_control, payloadList, set_list_select = 0
datatypeBase = widget_base(dataBase,/col)
datatypeLabel = widget_label(datatypeBase,value='Data Type:')
datatypeList = widget_list(datatypeBase,$
value=datatypeArray,$
uname='datatypelist',$
uvalue='DATATYPELIST',$
multiple=1,$
xsize=16,$
ysize=15)
widget_control, datatypeList, set_list_select = 0
CLEARDATATYPEButton = widget_button(datatypeBase,value='Clear Data Type',uvalue='CLEARDATATYPE',ToolTip='Deselect all data types')
availability_str = 'Data Availability Notes: ' + string(10B) + string(10B) + $
'2012-2013: data is available between 2013-01-01 and 2013-02-16' + string(10B) + string(10B) + $
'2013-2014: data is available between 2013-12-27 and 2014-02-11' + string(10B) + string(10B) + '(also depends on payload ID)'
availabilityLabel = widget_label(leftBase, value=availability_str, /align_center, scr_xsize=400, scr_ysize=100, UNITS=0)
state = {baseid:topBase,$
loadTree:loadTree,$
treeCopyPtr:treeCopyPtr,$
timeRangeObj:timeRangeObj,$
statusBar:statusBar,$
historyWin:historyWin,$
loadedData:loadedData,$
callSequence:callSequence,$
campaignyearArray:campaignyearArrayValues,$
datatypeArray:datatypeArray,$
payloadArray:payloadArray,$
payloadArray12:payloadArray12,$
payloadArray13:payloadArray13}
widget_control,topBase,set_uvalue=state
return
end