using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;


namespace Texteditor
{
    /// <summary>
    /// Interaktionslogik für MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            // Befehle für Datei-Menü registrieren
            CommandBindings.Add(new CommandBinding(ApplicationCommands.New,
                                miFileNew_Handler));
            CommandBindings.Add(new CommandBinding(ApplicationCommands.Open,
                                miFileOpen_Handler));
            CommandBindings.Add(new CommandBinding(ApplicationCommands.Save,
                                miFileSave_Handler));
            CommandBindings.Add(new CommandBinding(ApplicationCommands.SaveAs,
                                miFileSaveAs_Handler));
            CommandBindings.Add(new CommandBinding(ApplicationCommands.Close,
                                miFileQuit_Handler));
            ApplicationCommands.Close.InputGestures.Add((new KeyGesture(Key.B, ModifierKeys.Control, "Strg+B")));

            // Befehle für Datei-Menü mit Oberflächenelementen verbinden
            miFileNew.Command = ApplicationCommands.New;
            miFileOpen.Command = ApplicationCommands.Open;
            miFileSave.Command = ApplicationCommands.Save;
            miFileSaveAs.Command = ApplicationCommands.SaveAs;
            miFileQuit.Command = ApplicationCommands.Close;

            btnNew.Command = ApplicationCommands.New;
            btnOpen.Command = ApplicationCommands.Open;
            btnSave.Command = ApplicationCommands.Save;

            // Befehle für Bearbeiten-Menü wurden schon von TextBox erzeugt und registriert
            // Wir brauchen nur die Tastenkombinationen zu berichtigen
            ApplicationCommands.Cut.InputGestures.Clear();
            ApplicationCommands.Cut.InputGestures.Add((new KeyGesture(Key.X, ModifierKeys.Control, "Strg+X")));
            ApplicationCommands.Copy.InputGestures.Clear();
            ApplicationCommands.Copy.InputGestures.Add((new KeyGesture(Key.C, ModifierKeys.Control, "Strg+C")));
            ApplicationCommands.Paste.InputGestures.Clear();
            ApplicationCommands.Paste.InputGestures.Add((new KeyGesture(Key.V, ModifierKeys.Control, "Strg+V")));

            // Befehle für Bearbeiten-Menü mit Oberflächenelementen verbinden
            miEditCut.Command = ApplicationCommands.Cut;
            miEditCopy.Command = ApplicationCommands.Copy;
            miEditPaste.Command = ApplicationCommands.Paste;

            cmiEditCut.Command = ApplicationCommands.Cut;
            cmiEditCopy.Command = ApplicationCommands.Copy;
            cmiEditPaste.Command = ApplicationCommands.Paste;

            btnCut.Command = ApplicationCommands.Cut;
            btnCopy.Command = ApplicationCommands.Copy;
            btnPaste.Command = ApplicationCommands.Paste;

        }


        // Ereignisbehandlungsmethoden für Menübefehle
        void miFileNew_Handler(object sender, ExecutedRoutedEventArgs args)
        {
            MessageBox.Show("Befehl Datei/Neu", "Aufgerufen wurde:");
            sbInfo.Content = "Neues Dokument wurde angelegt";
        }
        void miFileOpen_Handler(object sender, ExecutedRoutedEventArgs args)
        {
            MessageBox.Show("Befehl Datei/Öffnen", "Aufgerufen wurde:");
            sbInfo.Content = "Dokument wurde geöffnet";
        }
        void miFileSave_Handler(object sender, ExecutedRoutedEventArgs args)
        {
            MessageBox.Show("Befehl Datei/Speichern", "Aufgerufen wurde:");
            sbInfo.Content = "Dokument wurde gespeichert";
        }
        void miFileSaveAs_Handler(object sender, ExecutedRoutedEventArgs args)
        {
            MessageBox.Show("Befehl Datei/Speichern unter", "Aufgerufen wurde:");
            sbInfo.Content = "Dokument wurde unter neuem Namen gespeichert";
        }
        void miFileQuit_Handler(object sender, ExecutedRoutedEventArgs args)
        {
            this.Close();
        }


    }
}
