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 fdprAreaCirconferenzaCerchio
{
    public partial class frmAreaCirconferenzaCerchio : Form
    {
        public frmAreaCirconferenzaCerchio()
        {
            InitializeComponent();
        }

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


        private void frmAreaCirconferenzaCerchio_Esci()
        {
            Application.Exit();
        }

        private void frmAreaCirconferenzaCerchio_Nuovo()
        {
            edtRaggio.Clear();
            edtArea.Clear();
            edtCirconferenza.Clear();

            edtRaggio.Focus();
        }

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

        private void frmAreaCirconferenzaCerchio_Esegui()
        {

            double Raggio;
            double Area;
            double Circonferenza;
            bool ControlloOK;

            ControlloDati(out ControlloOK, out Raggio);

            if (ControlloOK == true)
            {
                Area = StrumentiGeometriaPiana.AreaCerchio(Raggio);               
                Circonferenza = StrumentiGeometriaPiana.CirconferenzaCerchio(Raggio);

                edtArea.Text = Area.ToString();
                edtCirconferenza.Text = Circonferenza.ToString();

            }
        }

        private void ControlloDati(out bool ControlloOK, out double Raggio)
        {
            StrumentiControlli.ControlloNumeroRealePositivo(edtRaggio.Text, out ControlloOK, out Raggio);

            if (ControlloOK == false)
            {
                StrumentiMessaggi.MessaggioNumeroRealePositivo("Raggio");
                edtRaggio.Focus();

                return;
            }

        }

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

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

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

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

        private void edtRaggio_KeyPress(object sender, KeyPressEventArgs TastoPremuto)
        {
            frmAreaCirconferenzaCerchio_TastoPremuto(ref TastoPremuto);
        }
    }
}
