#pragma once


namespace Symbolleisten_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();

            // 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);



            /*** Symbolleiste ***/


            // Symbolleisten-Komponente instanzieren 
            ToolStrip^ symbolleiste = gcnew ToolStrip();

            // Symbolleistenelemente erstellen
            ToolStripButton^ sbDateiNeu = gcnew ToolStripButton();
            sbDateiNeu->Image = gcnew Bitmap(".\\images\\NewDocument.bmp");
			sbDateiNeu->ImageTransparentColor = Color::Magenta;
            sbDateiNeu->ToolTipText = "Neues Dokument";
			sbDateiNeu->Click += gcnew System::EventHandler(this, &Form1::miDateiNeu_Click);

			ToolStripButton^ sbDateiOeffnen = gcnew ToolStripButton();
            sbDateiOeffnen->Image = gcnew Bitmap(".\\images\\OpenFolder.bmp");
			sbDateiOeffnen->ImageTransparentColor = Color::Magenta;
            sbDateiOeffnen->ToolTipText = "Datei öffnen";
			sbDateiOeffnen->Click += gcnew System::EventHandler(this, &Form1::miDateiOeffnen_Click);

            ToolStripButton^ sbDateiSpeichern = gcnew ToolStripButton();
            sbDateiSpeichern->Image = gcnew Bitmap(".\\images\\Save.bmp");
			sbDateiSpeichern->ImageTransparentColor = Color::Magenta;
            sbDateiSpeichern->ToolTipText = "Datei speichern";
			sbDateiSpeichern->Click += gcnew System::EventHandler(this, &Form1::miDateiSpeichern_Click);

            ToolStripButton^ sbBearbeitenAusschneiden = gcnew ToolStripButton();
            sbBearbeitenAusschneiden->Image = gcnew Bitmap(".\\images\\Cut.bmp");
			sbBearbeitenAusschneiden->ImageTransparentColor = Color::Magenta;
            sbBearbeitenAusschneiden->ToolTipText = "Ausschneiden";
			sbBearbeitenAusschneiden->Click += gcnew System::EventHandler(this, &Form1::miBearbeitenAusschneiden_Click);

            ToolStripButton^ sbBearbeitenKopieren = gcnew ToolStripButton();
            sbBearbeitenKopieren->Image = gcnew Bitmap(".\\images\\Copy.bmp");
			sbBearbeitenKopieren->ImageTransparentColor = Color::Magenta;
            sbBearbeitenKopieren->ToolTipText = "Kopieren";
			sbBearbeitenKopieren->Click += gcnew System::EventHandler(this, &Form1::miBearbeitenKopieren_Click);

            ToolStripButton^ sbBearbeitenEinfuegen = gcnew ToolStripButton();
            sbBearbeitenEinfuegen->Image = gcnew Bitmap(".\\images\\Paste.bmp");
			sbBearbeitenEinfuegen->ImageTransparentColor = Color::Magenta;
            sbBearbeitenEinfuegen->ToolTipText = "Einfügen";
			sbBearbeitenEinfuegen->Click += gcnew System::EventHandler(this, &Form1::miBearbeitenEinfuegen_Click);

            // Elemente in Symbolleiste eintragen
            symbolleiste->Items->AddRange(gcnew array<ToolStripItem^>(7) 
                                                { sbDateiNeu, 
												  sbDateiOeffnen,
												  sbDateiSpeichern,
                                                  gcnew ToolStripSeparator(),
												  sbBearbeitenAusschneiden,
												  sbBearbeitenKopieren,
												  sbBearbeitenEinfuegen
			                                      });

			   // Symbolleiste vor Menüleiste in Formular einfügen,
			   // damit sie unter dem Menü angedockt wird
            symbolleiste->Parent = this;
            symbolleiste->Dock = DockStyle::Top;
            menue->Parent = this;
            menue->Dock = DockStyle::Top;



            /*** Kontextmenü ***/

            // Kontextmenü-Objekt erzeugen
            System::Windows::Forms::ContextMenuStrip ^contextMenuStrip1 = gcnew System::Windows::Forms::ContextMenuStrip();

            // Menübefehle aufbauen
            ToolStripMenuItem^ cmAusschneiden = gcnew ToolStripMenuItem();
            cmAusschneiden->Text = "Ausschneiden";
            cmAusschneiden->ShortcutKeys = Keys::Control | Keys::X;
            cmAusschneiden->Click += gcnew EventHandler(this, &Form1::contextmenu_Click);
            ToolStripMenuItem^ cmKopieren = gcnew ToolStripMenuItem();
            cmKopieren->Text = "Kopieren";
            cmKopieren->ShortcutKeys = Keys::Control | Keys::C;
            cmKopieren->Click += gcnew EventHandler(this, &Form1::contextmenu_Click);
            ToolStripMenuItem^ cmEinfuegen = gcnew ToolStripMenuItem();
            cmEinfuegen->Text = "Einfügen";
            cmEinfuegen->ShortcutKeys = Keys::Control | Keys::X;
            cmEinfuegen->Click += gcnew EventHandler(this, &Form1::contextmenu_Click);
             
            // Menübefehle in Kontextmenü einfügen
            contextMenuStrip1->Items->AddRange(gcnew array<ToolStripItem^>(3) 
                                {cmAusschneiden,
                                 cmKopieren,
                                 cmEinfuegen});

            // Kontextmenü mit Formular verbinden
            this->ContextMenuStrip = contextMenuStrip1;
        

		}

	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"Symbolleisten-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");
        }



        void contextmenu_Click(System::Object^  sender, System::EventArgs^  e) 
        {
            ToolStripMenuItem^ mi = dynamic_cast<ToolStripMenuItem^>(sender);

            if (mi->Text == "Ausschneiden")
                MessageBox::Show("Kontextmenü/Ausschneiden", "Befehl");
            else if (mi->Text == "Kopieren")
                MessageBox::Show("Kontextmenü/Kopieren", "Befehl");
            else if (mi->Text == "Einfügen")
                MessageBox::Show("Kontextmenü/Einfügen", "Befehl");
        }

	};
}

