function [] = SignalViewerTEST()

handles.MainWindow = figure(...
'PaperUnits','inches',...
'Units','normalized',...
'Position',[0 0 0.8 0.9],...
'Visible','on',...
'CurrentAxesMode','manual',...
'IntegerHandle','off',...
'MenuBar','none',...
'ToolBar','none',...
'Name','SignalViewer v0.1',...
'NumberTitle','off',...
'Resize','on',...
'ChildrenMode','manual',...
'ParentMode','manual',...
'HandleVisibility','on',...
'Tag','SignalViewer',...
'CreateFcn', {@movegui,'center'},...
'WindowScrollWheelFcn',{@figScroll});


% Tab group
handles.tabgp = uitabgroup(...
'Parent',handles.MainWindow,...
'Position',[0 0 1 0.83],...
'SelectionChangedFcn',{@UserSelTab});

handles.TabPlot = uitab(...
'Parent',handles.tabgp,...
'Title','Plot');

handles.axh = axes(...
'Parent',handles.TabPlot,...
'Units','normalized',...
'Position',[0.08 0.08 0.84 0.84],...
'Box','on',...
'FontUnits',get(0,'defaultaxesFontUnits'),...
'FontSize',10,...
'FontWeight','normal',...
'FontAngle','normal',...
'XGrid','on',...
'YGrid','on',...
'ZGrid','on',...
'GridLineStyle','--',...
'GridAlpha',0.15,...
'MinorGridLineStyle',':',...
'XMinorGrid','off',...
'YMinorGrid','off',...
'ZMinorGrid','off',....
'MinorGridAlpha',0.20,...
'TickDir','in',...
'XMinorTick','off',...
'YMinorTick','off',...
'ZMinorTick','off',...
'Tag','axh',...
'ParentMode','manual',...
'NextPlot','replacechildren',...
'CreateFcn', '');

handles.Toolbar = uitoolbar(...
'Parent',handles.MainWindow,...
'ChildrenMode','manual',...
'ParentMode','manual',...
'Tag','uitoolbar1',...
'CreateFcn', {} );

handles.ZoomIn = uitoggletool(...
'Parent',handles.Toolbar,...
'Serializable',get(0,'defaultuitoggletoolSerializable'),...
'Children',[],...
'ClickedCallback',{@ZoomInItem_Callback},...
'TooltipString','Zoom In',...
'ParentMode','manual',...
'HandleVisibility','on',...
'Tag','ZoomIn',...
'CreateFcn', {} );

handles.ZoomOut = uitoggletool(...
'Parent',handles.Toolbar,...
'Serializable',get(0,'defaultuitoggletoolSerializable'),...
'Children',[],...
'ClickedCallback',{@ZoomOutItem_Callback},...
'TooltipString','Zoom Out',...
'ParentMode','manual',...
'HandleVisibility','on',...
'Tag','ZoomOut',...
'CreateFcn', {} );

% plot
plot(handles.axh,randn(100,1))

% UIWAIT makes GUI wait for user response (see UIRESUME)
uiwait(handles.MainWindow);

%% Callbacks ================================================    
    % increase zoom
    function ZoomInItem_Callback(varargin)
        if strcmp(get(handles.ZoomIn,'State'),'on')
            % enable zoom in
            hZoom = zoom(handles.MainWindow);
            set(hZoom,'Enable','on','Direction','in')
            % toolbar zoom OUT button off
            set(handles.ZoomOut,'State','off')           
        else
            % zoom off
            zoom(handles.MainWindow,'off')
        end
    end
    % decrease zoom
    function ZoomOutItem_Callback(varargin)
        if strcmp(get(handles.ZoomOut,'State'),'on')
            % enable zoom out
            hZoom = zoom(handles.MainWindow);
            set(hZoom,'Enable','on','Direction','out')
            % toolbar zoom IN button off
            set(handles.ZoomIn,'State','off')
        else
            % zoom off
            zoom(handles.MainWindow,'off')
        end
    end

% WindowScrollWheelFcn -> use mouse scroll wheel for zoom in/out
    function figScroll(scr,callbackdata)
        hZoom = zoom(handles.MainWindow);
        if strcmp(get(hZoom,'Enable'),'on')
            if callbackdata.VerticalScrollCount > 0
                % zoom in by factor
                
            elseif callbackdata.VerticalScrollCount < 0
                % zoom out by factor
            end
        end
    end
end