using System;
using System.Windows.Forms;

namespace DeploymentApplication
{
    public partial class MainForm : Form
    {
        private MainFormController myMainFormController;

        private const string DEFAULTTEXT = "Bitte klicken um Datei zu wählen!";

        /// <summary>
        /// Konstruktor
        /// </summary>
        public MainForm()
        {
            InitializeComponent();
            CenterToScreen();

            myMainFormController = new MainFormController(this);

            // setzte Defaulttexte für Silverlight relevante Tappage
            tb_SilverApp.Text = DEFAULTTEXT;
            tb_SilverPID.Text = DEFAULTTEXT;
            tb_SilverIcon.Text = DEFAULTTEXT;
            
            // setzte Defaulttexte für XNA relevante Tappage 
            tb_XNAApp.Text = DEFAULTTEXT;
            tb_XNAIcon.Text = DEFAULTTEXT;
            tb_XNAPID.Text = DEFAULTTEXT;
            tb_XNACache.Text = DEFAULTTEXT;
        }

        /// <summary>
        /// Ereignismethode der Beenden-Schaltfläche
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void bt_Quit_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        #region alle relevante Methoden für das Bereitstellen von Silverlight Applikationen

        /// <summary>
        /// Validierung der Silverlight relevanten Felder
        /// </summary>
        private void ValidationForSilverlightDeployment()
        {
            if (tb_SilverPID.Text.Equals(DEFAULTTEXT) || tb_SilverApp.Text.Equals(DEFAULTTEXT) || tb_SilverIcon.Text.Equals(DEFAULTTEXT))
                bt_SilverDeploy.Enabled = false;
            else
                bt_SilverDeploy.Enabled = true;
        }

        /// <summary>
        /// Ereignismethode für die TextBox der Silverlight Applikation
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tb_SilverApp_Click(object sender, EventArgs e)
        {
            if (ofd_App.ShowDialog() == DialogResult.OK)
            {
                tb_SilverApp.Text = ofd_App.FileName;
            }

            //Validierung der Silverlight relevanten Felder
            ValidationForSilverlightDeployment();
        }

        /// <summary>
        /// Ereignismethode für die TextBox des Silverlight Icons
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tb_SilverIcon_Click(object sender, EventArgs e)
        {
            if (ofd_Icon.ShowDialog() == DialogResult.OK)
            {
                tb_SilverIcon.Text = ofd_Icon.FileName;
            }

            //Validierung der Silverlight relevanten Felder
            ValidationForSilverlightDeployment();
        }

        /// <summary>
        /// Ereignismethode für die TextBox des Silverlight ProductID
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tb_SilverPID_Click(object sender, EventArgs e)
        {
            if (ofd_PID.ShowDialog() == DialogResult.OK)
            {
                var productID = myMainFormController.GetProductID(ofd_PID.FileName);
                if (productID != null)
                {
                    tb_SilverPID.Text = productID;
                }
                else
                {
                    MessageBox.Show("Es ist ein Fehler beim Auslesen der ProductID aufgetreten: " + myMainFormController.ExceptionMessage, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                }

                //Validierung der XNA relevanten Felder
                ValidationForSilverlightDeployment();
            }
        }

        /// <summary>
        /// Ereignismethode der Bereitstellen Schaltfläche für Silverlight-Anwendungen
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void bt_SilverDeploy_Click(object sender, EventArgs e)
        {
            bt_SilverDeploy.Enabled = false;

            myMainFormController.DeploySilverlightApp();

            bt_SilverDeploy.Enabled = true;
        }

        #endregion

        #region alle relevante Methoden für das Bereitstellen von XNA Applikationen

        /// <summary>
        /// Validierung der XNA relevanten Felder
        /// </summary>
        private void ValidationForXNADeployment()
        {
            if (tb_XNAIcon.Text.Equals(DEFAULTTEXT) || tb_XNAPID.Text.Equals(DEFAULTTEXT) || tb_XNACache.Text.Equals(DEFAULTTEXT) || tb_XNAApp.Text.Equals(DEFAULTTEXT))
                bt_XNADeploy.Enabled = false;
            else
                bt_XNADeploy.Enabled = true;
        }

        /// <summary>
        /// Ereignismethode für die TextBox der XNA Anwendung
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tb_XNAApp_Click(object sender, EventArgs e)
        {
            if (ofd_App.ShowDialog() == DialogResult.OK)
            {
                tb_XNAApp.Text = ofd_App.FileName;
            }

            //Validierung der XNA relevanten Felder
            ValidationForXNADeployment();
        }

        /// <summary>
        /// Ereignismethode für die TextBox des Icons der XNA Anwendung
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tb_XNAIcon_Click(object sender, EventArgs e)
        {
            if (ofd_Icon.ShowDialog() == DialogResult.OK)
            {
                tb_XNAIcon.Text = ofd_Icon.FileName;
            }

            //Validierung der XNA relevanten Felder
            ValidationForXNADeployment();
        }

        /// <summary>
        /// Ereignismethode für die TextBox des XNA ProductID
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tb_XNAPID_Click(object sender, EventArgs e)
        {
            if (ofd_PID.ShowDialog() == DialogResult.OK)
            {
                var productID = myMainFormController.GetProductID(ofd_PID.FileName);
                if (productID != null)
                {
                    tb_XNAPID.Text = productID;
                }
                else
                {
                    MessageBox.Show("Es ist ein Fehler beim Auslesen der ProductID aufgetreten: " + myMainFormController.ExceptionMessage, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                }

                //Validierung der XNA relevanten Felder
                ValidationForXNADeployment();
            }
        }

        /// <summary>
        /// Ereignismethode für die TextBox des XNA Cachedatei
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tb_XNACache_Click(object sender, EventArgs e)
        {
            if (ofd_XapCache.ShowDialog() == DialogResult.OK)
            {
                tb_XNACache.Text = ofd_XapCache.FileName;
            }

            //Validierung der XNA relevanten Felder
            ValidationForXNADeployment();
        }

        /// <summary>
        /// Ereignismethode der Bereitstellen Schaltfläche für XNA-Anwendungen
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void bt_XNADeploy_Click(object sender, EventArgs e)
        {
            bt_XNADeploy.Enabled = false;

            myMainFormController.DeployXNAApp();

            bt_XNADeploy.Enabled = true;
        }

        #endregion

         
    }
}
