#pragma once

namespace Statusleisten_im_Eigenbau {

	using namespace System;
	using namespace System::ComponentModel;
	using namespace System::Collections;
	using namespace System::Windows::Forms;
	using namespace System::Data;
	using namespace System::Drawing;

	/// <summary>
	/// Zusammenfassung für Form1
	///
	/// Warnung: Wenn Sie den Namen dieser Klasse ändern, müssen Sie auch
	///          die Ressourcendateiname-Eigenschaft für das Tool zur Kompilierung verwalteter Ressourcen ändern,
	///          das allen RESX-Dateien zugewiesen ist, von denen diese Klasse abhängt.
	///          Anderenfalls können die Designer nicht korrekt mit den lokalisierten Ressourcen
	///          arbeiten, die diesem Formular zugewiesen sind.
	/// </summary>
	public ref class Form1 : public System::Windows::Forms::Form
	{
	public:
		Form1(void)
		{
			InitializeComponent();
			
        
            /*** Menüleiste ***/


            // Menüleisten-Komponente instanzieren 
            MenuStrip ^menue = gcnew MenuStrip();
            menue->Dock = DockStyle::Top;
            menue->Parent = this;

            // Datei-Menü und Menübefehle erstellen
            ToolStripMenuItem ^miDatei = gcnew ToolStripMenuItem("Datei");

            ToolStripMenuItem ^miDateiNeu = gcnew ToolStripMenuItem();
            miDateiNeu->Text = "&Neu";
            miDateiNeu->Image = nullptr;
            miDateiNeu->ShortcutKeys = Keys::Control | Keys::N;
            miDateiNeu->Click += gcnew EventHandler(this, &Form1::miDateiNeu_Click);

            ToolStripMenuItem ^miDateiOeffnen = gcnew ToolStripMenuItem();
            miDateiOeffnen->Text = "Ö&ffnen";
            miDateiOeffnen->Image = nullptr;
            miDateiOeffnen->ShortcutKeys = Keys::Control | Keys::O;
            miDateiOeffnen->Click += gcnew EventHandler(this, &Form1::miDateiNeu_Click);

            ToolStripMenuItem ^miDateiSpeichern = gcnew ToolStripMenuItem();
            miDateiSpeichern->Text = "&Speichern";
            miDateiSpeichern->Image = nullptr;
            miDateiSpeichern->ShortcutKeys = Keys::Control | Keys::S;
            miDateiSpeichern->Click += gcnew EventHandler(this, &Form1::miDateiSpeichern_Click);

            ToolStripMenuItem ^miDateiDrucken = gcnew ToolStripMenuItem();
            miDateiDrucken->Text = "&Drucken";
            miDateiDrucken->Image = nullptr;
            miDateiDrucken->ShortcutKeys = Keys::Control | Keys::P;
            miDateiDrucken->Click += gcnew EventHandler(this, &Form1::miDateiDrucken_Click);

            ToolStripMenuItem ^miDateiBeenden = gcnew ToolStripMenuItem();
            miDateiBeenden->Text = "&Beenden";
            miDateiBeenden->Image = nullptr;
            miDateiBeenden->Click += gcnew EventHandler(this, &Form1::miDateiBeenden_Click);
            

            // Menübefehl in Datei-Menü eintragen
            miDatei->DropDownItems->AddRange(gcnew array<ToolStripItem^>(7) 
                                                {miDateiNeu, 
                                                 miDateiOeffnen, 
                                                 miDateiSpeichern, 
                                                 gcnew ToolStripSeparator(),
                                                 miDateiDrucken, 
                                                 gcnew ToolStripSeparator(),
                                                 miDateiBeenden});


            // Bearbeiten-Menü und Menübefehle erstellen
            ToolStripMenuItem ^miBearbeiten = gcnew ToolStripMenuItem("Bearbeiten");

            ToolStripMenuItem ^miBearbeitenAusschneiden = gcnew ToolStripMenuItem();
            miBearbeitenAusschneiden->Text = "Auss&chneiden";
            miBearbeitenAusschneiden->Image = nullptr;
            miBearbeitenAusschneiden->ShortcutKeys = Keys::Control | Keys::X;
            miBearbeitenAusschneiden->Click += gcnew EventHandler(this, &Form1::miBearbeitenAusschneiden_Click);

            ToolStripMenuItem ^miBearbeitenKopieren = gcnew ToolStripMenuItem();
            miBearbeitenKopieren->Text = "&Kopieren";
            miBearbeitenKopieren->Image = nullptr;
            miBearbeitenKopieren->ShortcutKeys = Keys::Control | Keys::C;
            miBearbeitenKopieren->Click += gcnew EventHandler(this, &Form1::miBearbeitenKopieren_Click);

            ToolStripMenuItem ^miBearbeitenEinfuegen = gcnew ToolStripMenuItem();
            miBearbeitenEinfuegen->Text = "&Einfügen";
            miBearbeitenEinfuegen->Image = nullptr;
            miBearbeitenEinfuegen->ShortcutKeys = Keys::Control | Keys::V;
            miBearbeitenEinfuegen->Click += gcnew EventHandler(this, &Form1::miBearbeitenEinfuegen_Click);


            // Menübefehl in Beearbeiten-Menü eintragen
            miBearbeiten->DropDownItems->AddRange(gcnew array<ToolStripItem^>(3) 
                                                {miBearbeitenAusschneiden, 
                                                 miBearbeitenKopieren, 
                                                 miBearbeitenEinfuegen});


            // Menüs in Menüleiste einfügen
            menue->Items->Add(miDatei);
            menue->Items->Add(miBearbeiten);



            /*** Statusleiste ***/

            // Statusleisten-Komponente instanzieren 
            StatusStrip ^statusleiste = gcnew StatusStrip();

            // Elemente hinzufügen
            ToolStripStatusLabel ^slFeld1 = gcnew ToolStripStatusLabel();
            slFeld1->Spring = true;
            slFeld1->TextAlign = ContentAlignment::MiddleLeft;
            slFeld1->Text = "Feld 1";  

            ToolStripStatusLabel ^slFeld2 = gcnew ToolStripStatusLabel();
            slFeld2->AutoSize = true;
            slFeld2->Text = "Feld 2";
                     
            statusleiste->Items->Add(slFeld1); 
            statusleiste->Items->Add(gcnew ToolStripSeparator()); 
            statusleiste->Items->Add(slFeld2); 


            // Statusleiste in unteren Rand des Formulars einbetten
            statusleiste->Parent = this;
            statusleiste->Dock = DockStyle::Bottom;

		}

	protected:
		/// <summary>
		/// Verwendete Ressourcen bereinigen.
		/// </summary>
		~Form1()
		{
			if (components)
			{
				delete components;
			}
		}

	private:
		/// <summary>
		/// Erforderliche Designervariable.
		/// </summary>
		System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
		/// <summary>
		/// Erforderliche Methode für die Designerunterstützung.
		/// Der Inhalt der Methode darf nicht mit dem Code-Bearbeitenor geändert werden.
		/// </summary>
		void InitializeComponent(void)
		{
         this->SuspendLayout();
         // 
         // Form1
         // 
         this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
         this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
         this->ClientSize = System::Drawing::Size(495, 263);
         this->Name = L"Form1";
         this->Text = L"Statusleisten-Demo";
         this->ResumeLayout(false);

      }
#pragma endregion

private: 
        void miDateiNeu_Click(System::Object^  sender, System::EventArgs^  e) 
        {
            MessageBox::Show("Datei/Neu", "Befehl");
        }
        void miDateiOeffnen_Click(System::Object^  sender, System::EventArgs^  e) 
        {
            MessageBox::Show("Datei/Öffnen", "Befehl");
        }
        void miDateiSpeichern_Click(System::Object^  sender, System::EventArgs^  e) 
        {
            MessageBox::Show("Datei/Speichern", "Befehl");
        }
        void miDateiDrucken_Click(System::Object^  sender, System::EventArgs^  e) 
        {
            MessageBox::Show("Datei/Drucken", "Befehl");
        }
        void miDateiBeenden_Click(System::Object^  sender, System::EventArgs^  e) 
        {
            this->Close();
        }
        void miBearbeitenAusschneiden_Click(System::Object^  sender, System::EventArgs^  e) 
        {
            MessageBox::Show("Bearbeiten/Ausschneiden", "Befehl");
        }
        void miBearbeitenKopieren_Click(System::Object^  sender, System::EventArgs^  e) 
        {
            MessageBox::Show("Bearbeiten/Kopieren", "Befehl");
        }
        void miBearbeitenEinfuegen_Click(System::Object^  sender, System::EventArgs^  e) 
        {
            MessageBox::Show("Bearbeiten/Einfügen", "Befehl");
        }



	};
}

