using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using fbblCostanti;
using fbblGeometriaPiana;
using fbblControlli;
using fbblMessaggi;

namespace fdprFigureGeometricheFinali
{
    public partial class frmTriangolo : Form
    {
        public frmTriangolo()
        {
            InitializeComponent();
        }


        //******************** PROCEDURE LOCALI DI PROGETTO ************************

        private void frmTriangolo_Esci()
        {
            Dispose();
        }

        private void frmTriangolo_Nuovo()
        {
            edtLato1.Clear();
            edtLato2.Clear();
            edtLato3.Clear();
            edtArea.Clear();
            edtPerimetro.Clear();

            edtLato1.Focus();
        }

        private void frmTriangolo_TastoPremuto(ref KeyPressEventArgs TastoPremuto)
        {
            if (TastoPremuto.KeyChar == StrumentiCostanti.Punto)
            {
                TastoPremuto.KeyChar = StrumentiCostanti.Virgola;
            }
        }

        private void frmTriangolo_Esegui()
        {

            double Lato1;
            double Lato2;
            double Lato3;
            double Area;
            double Perimetro;
            bool ControlloOK;

            ControlloDati(out ControlloOK, out Lato1,out Lato2,out Lato3);

            if (ControlloOK == true)
            {
                Area = StrumentiGeometriaPiana.AreaTriangolo(Lato1, Lato2, Lato3);
                Perimetro = StrumentiGeometriaPiana.PerimetroTriangolo(Lato1, Lato2, Lato3);

                edtArea.Text = Area.ToString();
                edtPerimetro.Text = Perimetro.ToString();

            }
        }

        private void ControlloDati(out bool ControlloOK, out double Lato1, out double Lato2, out double Lato3)
        {
            Lato2 = 0;
            Lato3 = 0;

            StrumentiControlli.ControlloNumeroRealePositivo(edtLato1.Text, out ControlloOK, out Lato1);

            if (ControlloOK == false)
            {
                StrumentiMessaggi.MessaggioNumeroRealePositivo("Lato1");
                edtLato1.Focus();

                return;
            }

            StrumentiControlli.ControlloNumeroRealePositivo(edtLato2.Text, out ControlloOK, out Lato2);

            if (ControlloOK == false)
            {
                StrumentiMessaggi.MessaggioNumeroRealePositivo("Lato2");
                edtLato2.Focus();

                return;
            }

            StrumentiControlli.ControlloNumeroRealePositivo(edtLato3.Text, out ControlloOK, out Lato3);

            if (ControlloOK == false)
            {
                StrumentiMessaggi.MessaggioNumeroRealePositivo("Lato3");
                edtLato3.Focus();

                return;
            }

            StrumentiControlli.ControlloTriangolo(Lato1, Lato2, Lato3, out ControlloOK);

            if (ControlloOK==false)
            {
                StrumentiMessaggi.MessaggioTriangolo(Lato1, Lato2, Lato3);
                edtLato1.Focus();
                
                return;
            }


        }

        //******************** PROCEDURE DI RISPOSTA AGLI EVENTI *******************

        private void btnEsegui_Click(object sender, EventArgs e)
        {
            frmTriangolo_Esegui();
        }

        private void btnNuovo_Click(object sender, EventArgs e)
        {
            frmTriangolo_Nuovo();
        }

        private void btnEsci_Click(object sender, EventArgs e)
        {
            frmTriangolo_Esci();
        }


        private void edtLato2_KeyPress(object sender, KeyPressEventArgs TastoPremuto)
        {
            frmTriangolo_TastoPremuto(ref TastoPremuto);
        }

        private void edtLato3_KeyPress(object sender, KeyPressEventArgs TastoPremuto)
        {
            frmTriangolo_TastoPremuto(ref TastoPremuto);
        }

        private void edtLato1_KeyPress(object sender, KeyPressEventArgs TastoPremuto)
        {
            frmTriangolo_TastoPremuto(ref TastoPremuto);
        }





    }
}
