classdef appTriangoloRettangolo < matlab.apps.AppBase

    % Properties that correspond to app components
    properties (Access = public)
        UIFigure                    matlab.ui.Figure
        InterfacciagraficaperLabel  matlab.ui.control.Label
        UIAxes                      matlab.ui.control.UIAxes
        CalcolailsecondocatetoedisegnailtriangolorettangoloButton  matlab.ui.control.Button
        IngressidelproblemaPanel    matlab.ui.container.Panel
        IpotenusaEditFieldLabel     matlab.ui.control.Label
        IpotenusaEditField          matlab.ui.control.EditField
        Cateto1EditFieldLabel       matlab.ui.control.Label
        Cateto1EditField            matlab.ui.control.EditField
        RisultatoPanel              matlab.ui.container.Panel
        Cateto2EditFieldLabel       matlab.ui.control.Label
        Cateto2EditField            matlab.ui.control.NumericEditField
    end

    % Callbacks that handle component events
    methods (Access = private)

        % Button pushed function: 
        % CalcolailsecondocatetoedisegnailtriangolorettangoloButton
        function CalcolailsecondocatetoedisegnailtriangolorettangoloButtonPushed(app, event)
        
            ipo = str2double(app.IpotenusaEditField.Value);
            cateto1 = eval(app.Cateto1EditField.Value);
            
            cateto2 = sqrt(ipo*ipo-cateto1*cateto1);
            
            x1 = [0, cateto1];
            y1 = [cateto2, 0];
            
            x2 = [0, cateto1];
            y2 = [0, 0];
            
            x3 = [0, 0];
            y3 = [0, cateto2];
        
            plot(app.UIAxes,x1,y1); % ipotenusa
            % hold on 
            
            set( app.UIAxes, 'nextplot', 'add' ); % 'replace'
            % str = get( app.UIFigure, 'Name');
            
            plot(app.UIAxes,x2,y2); % primo cateto
            plot(app.UIAxes,x3,y3); % secondo cateto
            
            set( app.UIAxes.YLabel, 'String', ' Cateto 2');
            
            % hold off
            
            %set(app.Cateto2EditField, 'Value', cateto2);
            app.Cateto2EditField.Value = cateto2;
            
        end
    end

    % Component initialization
    methods (Access = private)

        % Create UIFigure and components
        function createComponents(app)

            % Create UIFigure and hide until all components are created
            app.UIFigure = uifigure('Visible', 'off');
            app.UIFigure.Position = [100 100 685 618];
            app.UIFigure.Name = 'UI Figure';

            % Create InterfacciagraficaperLabel
            app.InterfacciagraficaperLabel = uilabel(app.UIFigure);
            app.InterfacciagraficaperLabel.HorizontalAlignment = 'center';
            app.InterfacciagraficaperLabel.FontSize = 18;
            app.InterfacciagraficaperLabel.FontWeight = 'bold';
            app.InterfacciagraficaperLabel.Position = [37 548 606 42];
            app.InterfacciagraficaperLabel.Text = {'Interfaccia grafica per il calcolo di un cateto di un triagolo rettangolo'; 'data l''ipotenusa e l''altro cateto'};

            % Create UIAxes
            app.UIAxes = uiaxes(app.UIFigure);
            title(app.UIAxes, 'Disegno')
            xlabel(app.UIAxes, 'Cateto 1')
            ylabel(app.UIAxes, 'Cateto 2')
            app.UIAxes.Position = [316 241 330 265];

            % Create CalcolailsecondocatetoedisegnailtriangolorettangoloButton
            app.CalcolailsecondocatetoedisegnailtriangolorettangoloButton = uibutton(app.UIFigure, 'push');
            app.CalcolailsecondocatetoedisegnailtriangolorettangoloButton.ButtonPushedFcn = createCallbackFcn(app, @CalcolailsecondocatetoedisegnailtriangolorettangoloButtonPushed, true);
            app.CalcolailsecondocatetoedisegnailtriangolorettangoloButton.FontWeight = 'bold';
            app.CalcolailsecondocatetoedisegnailtriangolorettangoloButton.Position = [38 150 231 55];
            app.CalcolailsecondocatetoedisegnailtriangolorettangoloButton.Text = {'Calcola il secondo cateto'; 'e disegna il triangolo rettangolo'};

            % Create IngressidelproblemaPanel
            app.IngressidelproblemaPanel = uipanel(app.UIFigure);
            app.IngressidelproblemaPanel.Title = 'Ingressi del problema';
            app.IngressidelproblemaPanel.Position = [32 276 258 153];

            % Create IpotenusaEditFieldLabel
            app.IpotenusaEditFieldLabel = uilabel(app.IngressidelproblemaPanel);
            app.IpotenusaEditFieldLabel.HorizontalAlignment = 'right';
            app.IpotenusaEditFieldLabel.Position = [34 86 58 22];
            app.IpotenusaEditFieldLabel.Text = 'Ipotenusa';

            % Create IpotenusaEditField
            app.IpotenusaEditField = uieditfield(app.IngressidelproblemaPanel, 'text');
            app.IpotenusaEditField.Position = [107 86 100 22];
            app.IpotenusaEditField.Value = '50';

            % Create Cateto1EditFieldLabel
            app.Cateto1EditFieldLabel = uilabel(app.IngressidelproblemaPanel);
            app.Cateto1EditFieldLabel.HorizontalAlignment = 'right';
            app.Cateto1EditFieldLabel.Position = [41 23 51 22];
            app.Cateto1EditFieldLabel.Text = 'Cateto 1';

            % Create Cateto1EditField
            app.Cateto1EditField = uieditfield(app.IngressidelproblemaPanel, 'text');
            app.Cateto1EditField.Position = [107 23 100 22];
            app.Cateto1EditField.Value = '30';

            % Create RisultatoPanel
            app.RisultatoPanel = uipanel(app.UIFigure);
            app.RisultatoPanel.Title = 'Risultato';
            app.RisultatoPanel.Position = [351 129 292 93];

            % Create Cateto2EditFieldLabel
            app.Cateto2EditFieldLabel = uilabel(app.RisultatoPanel);
            app.Cateto2EditFieldLabel.HorizontalAlignment = 'right';
            app.Cateto2EditFieldLabel.Position = [42 21 97 22];
            app.Cateto2EditFieldLabel.Text = 'Cateto 2';

            % Create Cateto2EditField
            app.Cateto2EditField = uieditfield(app.RisultatoPanel, 'numeric');
            app.Cateto2EditField.Editable = 'off';
            app.Cateto2EditField.Position = [196 21 55 22];

            % Show the figure after all components are created
            app.UIFigure.Visible = 'on';
        end
    end

    % App creation and deletion
    methods (Access = public)

        % Construct app
        function app = appTriangoloRettangolo

            % Create UIFigure and components
            createComponents(app)

            % Register the app with App Designer
            registerApp(app, app.UIFigure)

            if nargout == 0
                clear app
            end
        end

        % Code that executes before app deletion
        function delete(app)

            % Delete UIFigure when app is deleted
            delete(app.UIFigure)
        end
    end
end