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 fbblMessaggi;
using fbblGeometriaPiana;
using fbblControlli;
using fbblCostanti;

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

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

        private void frmTrapezioRettangolo_Esci()
        {
            Dispose();
        }

        private void frmTrapezioRettangolo_Nuovo()
        {
            edtAltezza.Clear();
            edtBaseMaggiore.Clear();
            edtBaseMinore.Clear();

            edtAltezza.Focus();
        }

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

        private void frmTrapezioRettangolo_Esegui()
        {

            double Altezza;
            double BaseMinore;
            double BaseMaggiore;
            double Perimetro;
            bool ControlloOK;

            ControlloDati(out ControlloOK, out Altezza, out BaseMinore, out BaseMaggiore);

            if (ControlloOK == true)
            {
                Perimetro=StrumentiGeometriaPiana.PerimetroTrapezioRettangolo(BaseMaggiore, BaseMinore, Altezza);

                edtPerimetroTrapezio.Text = Perimetro.ToString();

            }
        }

        private void ControlloDati(out bool ControlloOK, out double Altezza, out double BaseMinore, out double BaseMaggiore)
        {
            BaseMinore = 0;
            BaseMaggiore = 0;

            StrumentiControlli.ControlloNumeroRealePositivo(edtAltezza.Text, out ControlloOK, out Altezza);

            if (ControlloOK == false)
            {
                StrumentiMessaggi.MessaggioNumeroRealePositivo("Altezza");
                edtAltezza.Focus();

                return;
            }

            StrumentiControlli.ControlloNumeroRealePositivo(edtBaseMinore.Text, out ControlloOK, out BaseMinore);

            if (ControlloOK == false)
            {
                StrumentiMessaggi.MessaggioNumeroRealePositivo("Base minore");
                edtBaseMinore.Focus();

                return;
            }

            StrumentiControlli.ControlloNumeroRealePositivo(edtBaseMaggiore.Text, out ControlloOK, out BaseMaggiore);

            if (ControlloOK == false)
            {
                StrumentiMessaggi.MessaggioNumeroRealePositivo("Base maggiore");
                edtBaseMaggiore.Focus();

                return;
            }

            StrumentiControlli.ControlloMaggioreOUguale(BaseMaggiore, BaseMinore,out ControlloOK);

            if (ControlloOK == false)
            {
                StrumentiMessaggi.MessaggioMaggioreOUguale("Base maggiore", "Base minore");
                edtBaseMaggiore.Focus();

                return;
            }
        }

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


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

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

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

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

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

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