function gui1r

% Hauptfenster
  hFigure=figure('Units', 'normalized', ... 
           'Position', [0.1 0.1 0.5 0.5], ...
           'Color', [0.94 0.94 0.94], ...
           'Resize', 'off', ...
           'MenuBar', 'none', ...
           'NumberTitle', 'off', ...
           'Name', 'Warteschlangenoptimierung');
   
% Gruppe, in der die Schaltflaechen angeordnet sind     
  hBtnGrp1=uibuttongroup('Units','normalized',...
           'BorderType','none',...
           'Parent',hFigure,...
           'Position',[0.05 0.25 0.25 0.6]);
       
% Schaltflaechen für Modell/Verteilung, Eingabe, Ausgabe und Beenden     
  hSingle_Multi=uicontrol('Style', 'pushbutton', ...
           'Parent',hBtnGrp1,...
           'Units', 'normalized', ...
           'Position', [0.05 0.75 0.9 0.15], ...
           'BackgroundColor', [1 1 1], ...
           'String', 'Modell und Verteilung', ...
           'Callback','single_multiCallback');
      
  hEingabe=uicontrol('Style', 'pushbutton', ...
           'Parent',hBtnGrp1,...
           'Units', 'normalized', ...
           'Position', [0.05 0.55 0.9 0.15], ...
           'BackgroundColor', [1 1 1], ...
           'String', 'Eingabeparameter', ...
           'Callback', 'cb_eingabe'); 
       
  hAusgabe=uicontrol('Style', 'pushbutton', ...
           'Parent',hBtnGrp1,...
           'Units', 'normalized', ...
           'Position', [0.05 0.35 0.9 0.15], ...
           'BackgroundColor', [1 1 1], ...
           'String', 'Ausgabeparameter', ...
           'Callback', 'cb_ausgabe');  
       
  hBeenden=uicontrol('Style', 'pushbutton', ...
           'Parent',hBtnGrp1,...
           'Units', 'normalized', ...
           'Position', [0.05 0.15 0.9 0.15], ...
           'BackgroundColor', [1 1 1], ...
           'String', 'Beenden', ...
           'Callback','close(gcf)');
      
% Hilfe-Schaltflaeche mit einem hinterlegtem Text    
  hHilfeBtn=uicontrol('ToolTipString','Hilfe',....
           'Style', 'pushbutton', ...
           'Units', 'normalized', ...
           'Position', [0.94 0.94 0.04 0.04], ...
           'BackgroundColor', [0.5 0.5 0.5], ...
           'String', '?',...
           'Callback', 'HilfeCallback');
  
%__________________________________________________________________________
% Hauptauswahl des Modells, Single oder Multi
    hBtnGrp0=uibuttongroup('Units','normalized',...
           'BorderType','none',...
           'Parent',hFigure,...
           'Position',[0.35 0.25 0.15 0.6]);
    
    hSingle=uicontrol('Style', 'radiobutton', ...
           'Parent',hBtnGrp0,...
           'Visible','off', ...
           'Units', 'normalized', ...
           'Position', [0.05 0.825 0.90 0.15], ...
           'String', 'Single', ...
           'Value', 1, ...
           'Callback',@Konstant_ExpoSCallback);
  
    hMulti=uicontrol('Style', 'radiobutton', ...
           'Parent',hBtnGrp0,...
           'Visible','off', ...
           'Units', 'normalized', ...
           'Position', [0.05 0.7 0.90 0.15], ...
           'String', 'Multi', ...
           'Value', 0, ...
           'Callback',@Konstant_ExpoMCallback);
             
%Auswahl, ob die Zwischenabfertigungszeiten Exponentialverteilt oder 
%Konstant sind
    hBtnGrp=uibuttongroup('Units','normalized',...
           'BorderType','none',...
           'Position',[0.65 0.25 0.15 0.6]);
    
    hKonstant=uicontrol('Style', 'radiobutton', ...
           'Parent',hBtnGrp,...
           'Visible','off', ...
           'Units', 'normalized', ...
           'Position', [0.05 0.825 0.95 0.075], ...
           'String', 'Konstant', ...
           'Value', 0, ...
           'Callback',@konstant_Callback);
    
    hExpo=uicontrol('Style', 'radiobutton', ...
           'Parent',hBtnGrp,...
           'Visible','off', ...
           'Units', 'normalized', ...
           'Position', [0.05 0.7 0.95 0.075], ...
           'String', 'Exponential', ...
           'Value', 1, ...
           'Callback',@exponential_Callback);      
         
% Auswahl, ob eine Kapazitaetsbeschraenkung vorliegt oder nicht     
    hBtnGrp3=uibuttongroup('Units','normalized',...
           'BorderType','none',...
           'Position',[0.35 0.05 0.15 0.6]);

    hMit=uicontrol('Style', 'radiobutton', ...
           'Parent',hBtnGrp3,...
           'Visible','off', ...
           'Units', 'normalized', ...
           'Position', [0.05 0.83 0.95 0.2], ...
           'String', 'Mit Kapazität', ...
           'Value', 0, ...
           'Callback',@Wahr_Callback);
       
    hOhne=uicontrol('Style', 'radiobutton', ...
           'Parent',hBtnGrp3,...
           'Visible','off', ...
           'Units', 'normalized', ...
           'Position', [0.05 0.7 0.95 0.2], ...
           'String', 'Ohne Kapazität', ...
           'Value', 1, ...
           'Callback',@Wahr_Callback);
    
%__________________________________________________________________________       
% Textfenster für die Ankunfts- und Abfertigungsrate, die Anzahl der Kanaele
% und die evtl. Kapazitaet
 hAnkunft=uicontrol('Style', 'text', ...
           'Units', 'normalized', ...
           'Visible','off', ...
           'Position', [0.35 0.75 0.15 0.05], ...
           'String', 'Ankunftsrate');
       
 hAbfertigung=uicontrol('Style', 'text', ...
           'Units', 'normalized', ...
           'Visible','off', ...
           'Position', [0.35 0.55 0.15 0.05], ...
           'String', 'Abfertigungsrate');
  
 hKanaele=uicontrol('Style', 'text', ...
           'Units', 'normalized', ...
           'Visible','off', ...
           'Position', [0.35 0.15 0.15 0.05], ...
           'String', 'Anzahl der Kanäle');  
 
 hKapazitat=uicontrol('Style', 'text', ...
           'Units', 'normalized', ...
           'Visible','off', ...
           'Position', [0.35 0.375 0.15 0.05], ...
           'String', 'Kapazität');        
       
% Fensterchen zum Anzeigen und Eingeben der Werte, max. ist 100, min. ist 1
% die Slider dienen lediglich zur Hilfe für die Eingabe der Werte
 hSlider=uicontrol('Style', 'slider', ...
           'Units', 'normalized', ...
           'Position', [0.86 0.05 0.03 0.70], ...
           'BackgroundColor', [0.5 0.5 0.5], ...
           'Max', 100, ...
           'Min', 1, ...
           'Value', 1.0, ...    
           'SliderStep', [0.025 0.125],...
           'Callback', 'cb_edit');
 % Ankunftsrate      
 hAnzeige1=uicontrol('Style', 'edit', ...
           'Units', 'normalized', ...
           'Visible','off', ...
           'Position', [0.60 0.75 0.15 0.05], ...
           'HorizontalAlignment', 'center', ...
           'BackgroundColor',[1 1 1],...
           'Max', 100, ...
           'Min', 0, ...
           'Value', 1.0,...
           'String', num2str(get(hSlider,'Value')));  
       
 hSlider1=uicontrol('Style', 'slider', ...
           'Units', 'normalized', ...
           'Position', [0.86 0.05 0.03 0.70], ...
           'BackgroundColor', [0.5 0.5 0.5], ...
           'Max', 100, ...
           'Min', 1, ...
           'Value', 2.0, ...    %voreingestellter Wert
           'SliderStep', [0.025 0.125],...
           'Callback', 'cb_edit1');      
 % Abfertigungsrate      
 hAnzeige2=uicontrol('Style', 'edit', ...
           'Units', 'normalized', ...
           'Visible','off', ...
           'Position', [0.60 0.55 0.15 0.05], ...
           'HorizontalAlignment', 'center', ...
           'BackgroundColor',[1 1 1],...
           'Max', 100, ...
           'Min', 0, ...
           'Value', 1.0,...
           'String', num2str(get(hSlider1,'Value')));  

 hSlider2=uicontrol('Style', 'slider', ...
           'Units', 'normalized', ...
           'Position', [0.86 0.05 0.03 0.70], ...
           'BackgroundColor', [0.5 0.5 0.5], ...
           'Max', 100, ...
           'Min', 1, ...
           'Value', 1.0, ...    %voreingestellte Wert
           'SliderStep', [0.025 0.125],...
           'Callback', 'cb_edit2');      
 % Anzahl der Kanaele    
 hAnzeige3=uicontrol('Style', 'edit', ...
           'Units', 'normalized', ...
           'Visible','off', ...
           'Position', [0.60 0.15 0.15 0.05], ...
           'HorizontalAlignment', 'center', ...
           'BackgroundColor',[1 1 1],...
           'Max', 100, ...
           'Min', 0, ...
           'Value', 1.0,...
           'String', num2str(get(hSlider2,'Value'))); 
       
 hSlider3=uicontrol('Style', 'slider', ...
           'Units', 'normalized', ...
           'Position', [0.86 0.05 0.03 0.70], ...
           'BackgroundColor', [0.5 0.5 0.5], ...
           'Max', 100, ...
           'Min', 1, ...
           'Value', 1.0, ...    %voreingestellte Varianz
           'SliderStep', [0.025 0.125],...
           'Callback', 'cb_edit3');      
 % Kapazitaet     
 hAnzeige4=uicontrol('Style', 'edit', ...
           'Units', 'normalized', ...
           'Visible','off', ...
           'Position', [0.60 0.375 0.15 0.05], ...
           'HorizontalAlignment', 'center', ...
           'BackgroundColor',[1 1 1],...
           'Max', 100, ...
           'Min', 0, ...
           'Value', 1.0,...
           'String', num2str(get(hSlider3,'Value')));        
      
% Handles abspeichern
  handles.Figure=hFigure;
  handles.BtnGrp1=hBtnGrp1;
  handles.Single_Multi=hSingle_Multi;
  handles.Eingabe=hEingabe;
  handles.Ausgabe=hAusgabe;
  handles.Beenden=hBeenden;
  handles.HilfeBtn=hHilfeBtn;
  handles.BtnGrp0=hBtnGrp0;
  handles.BtnGrp=hBtnGrp;
  handles.Single=hSingle;
  handles.Multi=hMulti;
  handles.Konstant=hKonstant;
  handles.Expo=hExpo;
  handles.BtnGrp3=hBtnGrp3;
  handles.Mit=hMit;
  handles.Ohne=hOhne;    
  handles.Ankunft=hAnkunft;
  handles.Abfertigung=hAbfertigung;
  handles.Kanaele=hKanaele;
  handles.Kapazitat=hKapazitat;
  handles.Anzeige1=hAnzeige1;
  handles.Anzeige2=hAnzeige2;
  handles.Anzeige3=hAnzeige3;
  handles.Anzeige4=hAnzeige4;
  handles.Slider=hSlider;
  handles.Slider1=hSlider1;
  handles.Slider2=hSlider2;
  handles.Slider3=hSlider3;
  
% die Slider dienen nur zur Hilfe und werden auf unsichtbar gesetzt
  set(handles.Slider,'Visible','off');
  set(handles.Slider1,'Visible','off');
  set(handles.Slider2,'Visible','off');
  set(handles.Slider3,'Visible','off');

% Übergabe der Handles an die UserData   
  set(gcf,'UserData',handles);
% und Graphik-Fenster schuetzen
  set(gcf,'HandleVisibility','callback');
  clc;
end % function
