function ddb_Delft3DFLOW_generateLayers(varargin)
%DDB_DELFT3DFLOW_GENERATELAYERS  One line description goes here.
%
%   More detailed description goes here.
%
%   Syntax:
%   ddb_Delft3DFLOW_generateLayers(varargin)
%
%   Input:
%   varargin =
%
%
%
%
%   Example
%   ddb_Delft3DFLOW_generateLayers
%
%   See also

%% Copyright notice
%   --------------------------------------------------------------------
%   Copyright (C) 2011 Deltares
%       Maarten van Ormondt
%
%       Maarten.vanOrmondt@deltares.nl
%
%       P.O. Box 177
%       2600 MH Delft
%       The Netherlands
%
%   This library is free software: you can redistribute it and/or modify
%   it under the terms of the GNU General Public License as published by
%   the Free Software Foundation, either version 3 of the License, or
%   (at your option) any later version.
%
%   This library is distributed in the hope that it will be useful,
%   but WITHOUT ANY WARRANTY; without even the implied warranty of
%   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
%   GNU General Public License for more details.
%
%   You should have received a copy of the GNU General Public License
%   along with this library.  If not, see <http://www.gnu.org/licenses/>.
%   --------------------------------------------------------------------

% This tool is part of <a href="http://www.OpenEarth.eu">OpenEarthTools</a>.
% OpenEarthTools is an online collaboration to share and manage data and
% programming tools in an open source, version controlled environment.
% Sign up to recieve regular updates of this function, and to contribute
% your own tools.

%% Version <http://svnbook.red-bean.com/en/1.5/svn.advanced.props.special.keywords.html>
% Created: 29 Nov 2011
% Created with Matlab version: 7.11.0.584 (R2010b)

% $Id: ddb_Delft3DFLOW_generateLayers.m 7724 2012-11-23 14:43:42Z boer_we $
% $Date: 2012-11-23 15:43:42 +0100 (Fri, 23 Nov 2012) $
% $Author: boer_we $
% $Revision: 7724 $
% $HeadURL: https://svn.oss.deltares.nl/repos/openearthtools/trunk/matlab/applications/DelftDashBoard/models/Delft3DFLOW/gui/ddb_Delft3DFLOW_generateLayers.m $
% $Keywords: $

%%
if isempty(varargin)
    ddb_zoomOff;
    % Make new GUI
    handles=getHandles;
    xmldir=handles.Model(md).xmlDir;
    xmlfile='Delft3DFLOW.generatelayers.xml';
    if strcmpi(handles.Model(md).Input(ad).layerType,'z')
        handles.Model(md).Input(ad).layerOption=1;
    end
    for k=1:handles.Model(md).Input(ad).KMax
        handles.Model(md).Input(ad).layerStrings{k}=num2str(handles.Model(md).Input(ad).thick(k),'%8.3f');
    end
    
    h=handles.Model(md).Input(ad);

    [h,ok]=gui_newWindow(h,'xmldir',xmldir,'xmlfile',xmlfile,'iconfile',[handles.settingsDir filesep 'icons' filesep 'deltares.gif']);

    if ok
        handles.Model(md).Input(ad)=h;
        setHandles(handles);
        gui_updateActiveTab;
    end
    
else
    opt=varargin{1};
    switch lower(opt)
        case{'generatelayers'}
            generateLayers;
    end
end

%%
function generateLayers

handles=gui_getUserData;

switch handles.layerOption
    case 1
        % Increasing from surface
        thick=generateLayerThickness('kmax',handles.KMax,'type',handles.layerType, ...
            'zbot',handles.zBot,'ztop',handles.zTop, ...
            'thicktop',handles.thickTop);
    case 2
        % Increasing from bottom
        thick=generateLayerThickness('kmax',handles.KMax,'type',handles.layerType, ...
            'zbot',handles.zBot,'ztop',handles.zTop, ...
            'thickbot',handles.thickBot);
    case 3
        % Increasing from top and bottom
        thick=generateLayerThickness('kmax',handles.KMax,'type',handles.layerType, ...
            'zbot',handles.zBot,'ztop',handles.zTop, ...
            'thicktop',handles.thickTop,'thickbot',handles.thickBot);
    case 4
        % Equidistant
        thick=generateLayerThickness('kmax',handles.KMax,'type',handles.layerType, ...
            'zbot',handles.zBot,'ztop',handles.zTop);
end

handles.thick=thick';

for k=1:handles.KMax
    handles.layerStrings{k}=num2str(handles.thick(k),'%8.3f');
end

gui_setUserData(handles);
