pro spd_ui_scroll_update_panel,panelObj,drawObject,direction,index
compile_opt idl2,hidden
panelObj->GetProperty, XAxis=xaxis,yAxis=yaxis
panelStruc = drawObject->GetPanelInfo(index)
IF direction EQ 0 THEN newXRange=panelStruc.XRange + panelStruc.xMajorSize $
ELSE newXRange=panelStruc.XRange - panelStruc.xMajorSize
IF panelStruc.xScale EQ 1 THEN newXRange = 10.^(newXRange)
IF panelStruc.xScale EQ 2 THEN newXRange = exp(newXRange)
xaxis->setProperty,rangeoption=2
xaxis->UpdateRange, newXRange
end
PRO spd_ui_scroll, windowStorage, drawObject, direction
compile_opt idl2,hidden
IF ~Obj_Valid(windowStorage) THEN RETURN
activeWindow=windowStorage->GetActive()
newPanels=Obj_New('IDL_CONTAINER')
IF N_Elements(activeWindow) GT 0 && Obj_Valid(activeWindow[0]) THEN BEGIN
activeWindow[0]->GetProperty, Panels=panels,locked=locked
IF Obj_Valid(panels) THEN BEGIN
panelObjs = panels->Get(/all)
IF NOT Is_Num(panelObjs) THEN BEGIN
if locked ge 0 && locked lt n_elements(panelObjs) then begin
spd_ui_scroll_update_panel,panelObjs[locked],drawObject,direction,locked
endif else begin
FOR i=0, N_Elements(panelObjs)-1 DO BEGIN
spd_ui_scroll_update_panel,panelObjs[i],drawObject,direction,i
ENDFOR
endelse
ENDIF
ENDIF
ENDIF
END