Package de.chris_soft.fyllgen.widget

Source Code of de.chris_soft.fyllgen.widget.ShellMenu

/**
* FyLLGen - A Java based tool for collecting and distributing family data
*
* Copyright (C) 2007-2011 Christian Packenius
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
package de.chris_soft.fyllgen.widget;

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
import de.chris_soft.fyllgen.menu.edit.AddImageToPerson;
import de.chris_soft.fyllgen.menu.edit.CreateNewPerson;
import de.chris_soft.fyllgen.menu.edit.DeleteConnection;
import de.chris_soft.fyllgen.menu.edit.DeleteFamily;
import de.chris_soft.fyllgen.menu.edit.DeletePerson;
import de.chris_soft.fyllgen.menu.edit.InsertChildPerson;
import de.chris_soft.fyllgen.menu.edit.InsertParentPerson;
import de.chris_soft.fyllgen.menu.edit.InsertPartnerPerson;
import de.chris_soft.fyllgen.menu.extra.BigFamilyName;
import de.chris_soft.fyllgen.menu.extra.MergeData;
import de.chris_soft.fyllgen.menu.extra.PersonDataVisibilityChanger;
import de.chris_soft.fyllgen.menu.extra.ShowOptionsDialog;
import de.chris_soft.fyllgen.menu.file.ExitProgram;
import de.chris_soft.fyllgen.menu.file.ExportDataAsFile;
import de.chris_soft.fyllgen.menu.file.OpenFile;
import de.chris_soft.fyllgen.menu.file.SaveFamilyFile;
import de.chris_soft.fyllgen.menu.file.SaveFamilyFileAs;
import de.chris_soft.fyllgen.menu.label.DirectLabelChoice;
import de.chris_soft.fyllgen.menu.label.JumpToLabelPerson;
import de.chris_soft.fyllgen.menu.label.JumpToWithoutLabelPerson;
import de.chris_soft.fyllgen.menu.label.LabelCurrentPerson;
import de.chris_soft.fyllgen.menu.label.LabelCurrentPersonDirect;
import de.chris_soft.fyllgen.menu.label.UnTagPersonDirect;
import de.chris_soft.fyllgen.menu.navigate.GotoAnyChild;
import de.chris_soft.fyllgen.menu.navigate.GotoAnyParent;
import de.chris_soft.fyllgen.menu.navigate.GotoAnyPartner;
import de.chris_soft.fyllgen.menu.navigate.GotoChild;
import de.chris_soft.fyllgen.menu.navigate.GotoNextLeafPerson;
import de.chris_soft.fyllgen.menu.navigate.GotoParent;
import de.chris_soft.fyllgen.menu.navigate.GotoPartner;
import de.chris_soft.fyllgen.menu.search.GetShortestConnection;
import de.chris_soft.fyllgen.menu.search.SearchNextMailPersons;
import de.chris_soft.fyllgen.menu.search.SearchPerson;
import de.chris_soft.fyllgen.menu.search.SearchPersonsWithoutConnectionToCurrentPerson;
import de.chris_soft.fyllgen.menu.views.SetStandardView;
import de.chris_soft.fyllgen.menu.views.SetUniSexView;
import de.chris_soft.fyllgen.utilities.FullValidation;

/**
* Erzeugt das Men� f�r das Hauptfenster.
* @author Christian Packenius, Juni 2008.
*/
public class ShellMenu {
  /**
   * Hauptfenster, in dem dieses Men� steckt.
   */
  private final Shell shell;

  /**
   * Die Men�bar des Fensters.
   */
  public final Menu bar;

  /**
   * Konstruktor. Erzeugt direkt das gesamte Men�.
   * @param shell Fenster, f�r welches das Men� ist.
   */
  public ShellMenu(Shell shell) {
    this.shell = shell;

    bar = new Menu(shell, SWT.BAR);
    shell.setMenuBar(bar);

    // Datei-Men�.
    createFileMenu(bar);

    // Bearbeiten-Men�.
    createBearbeitenMenu(bar);

    // Suchen-Men�.
    createSearchMenu(bar);

    // Markierung-Men�.
    createLabelMenu(bar);

    // Ansichten-Men�.
    createViewsMenu(bar);

    // Navigationsmen�.
    createNavigationMenu(bar);

    // Extras-Men�.
    createExtrasMenu(bar);
  }

  /**
   * Erzeugt das Men� mit den Datei-Funktionen.
   */
  private void createFileMenu(Menu bar) {
    // Haupt-Men�punkt.
    MenuItem fileItem = new MenuItem(bar, SWT.CASCADE);
    fileItem.setText("&Datei");
    Menu submenu = new Menu(shell, SWT.DROP_DOWN);
    fileItem.setMenu(submenu);

    // Familiendatei �ffnen.
    MenuItem openFile = new MenuItem(submenu, SWT.PUSH);
    openFile.setText("�&ffnen\tCtrl + O");
    openFile.setAccelerator(SWT.CONTROL + 'O');
    openFile.addListener(SWT.Selection, new OpenFile());

    new MenuItem(submenu, SWT.SEPARATOR);

    // Familiendatei speichern.
    MenuItem saveInKnownFile = new MenuItem(submenu, SWT.PUSH);
    saveInKnownFile.setText("&Speichern\tCtrl + S");
    saveInKnownFile.setAccelerator(SWT.CONTROL + 'S');
    saveInKnownFile.addListener(SWT.Selection, new SaveFamilyFile());

    // Familiendatei unter neuem Namen speichern.
    MenuItem saveAs = new MenuItem(submenu, SWT.PUSH);
    saveAs.setText("Speichern &unter");
    saveAs.addListener(SWT.Selection, new SaveFamilyFileAs());

    new MenuItem(submenu, SWT.SEPARATOR);

    // Export-M�glichkeiten - neue Variante ab Februar 2011.
    MenuItem export2 = new MenuItem(submenu, SWT.PUSH);
    export2.setText("Exportieren und Mailversand\tCtrl + Y");
    export2.setAccelerator(SWT.CONTROL + 'Y');
    export2.addListener(SWT.Selection, new ExportDataAsFile());

    // // Stammbaum erzeugen.
    // MenuItem exportSB = new MenuItem(submenu, SWT.PUSH);
    // exportSB.setText("Exportieren als Stamm&baum\tCtrl + B");
    // exportSB.setAccelerator(SWT.CONTROL + 'B');
    // exportSB.addListener(SWT.Selection, new ExportFamilyTree());
    // exportSB.setEnabled(true);

    // new MenuItem(submenu, SWT.SEPARATOR);

    // // Familienansicht nun drucken.
    // MenuItem printDirect = new MenuItem(submenu, SWT.PUSH);
    // printDirect.setText("Familienansicht direkt d&rucken");
    // printDirect.addListener(SWT.Selection, new
    // ImmediatellyPrintingFamilyView());
    // printDirect.setEnabled(false);

    new MenuItem(submenu, SWT.SEPARATOR);

    // Programm verlassen.
    MenuItem insertParentItem = new MenuItem(submenu, SWT.PUSH);
    insertParentItem.setText("E&xit (Speichern und Programm verlassen)\tCtrl + Q");
    insertParentItem.setAccelerator(SWT.CONTROL + 'Q');
    insertParentItem.addListener(SWT.Selection, new ExitProgram());
  }

  /**
   * Erzeugt das Men� mit den Bearbeitungs-Funktionen.
   */
  private void createBearbeitenMenu(Menu bar) {
    // Haupt-Men�punkt.
    MenuItem personItem = new MenuItem(bar, SWT.CASCADE);
    personItem.setText("&Bearbeiten");
    Menu submenu = new Menu(shell, SWT.DROP_DOWN);
    personItem.setMenu(submenu);

    // Neue Person erzeugen, ohne Verweise.
    MenuItem createNewPerson = new MenuItem(submenu, SWT.PUSH);
    createNewPerson.setText("&Neue Person erzeugen\tCtrl + N");
    createNewPerson.setAccelerator(SWT.CONTROL + 'N');
    createNewPerson.addListener(SWT.Selection, new CreateNewPerson());

    new MenuItem(submenu, SWT.SEPARATOR);

    // (Neues) Elternteil hinzuf�gen.
    MenuItem insertParentItem = new MenuItem(submenu, SWT.PUSH);
    insertParentItem.setText("&Elternteil hinzuf�gen\tCtrl + E");
    insertParentItem.setAccelerator(SWT.CONTROL + 'E');
    insertParentItem.addListener(SWT.Selection, new InsertParentPerson());

    // (Neues) Kind hinzuf�gen.
    MenuItem insertChildItem = new MenuItem(submenu, SWT.PUSH);
    insertChildItem.setText("&Kind hinzuf�gen\tCtrl + K");
    insertChildItem.setAccelerator(SWT.CONTROL + 'K');
    insertChildItem.addListener(SWT.Selection, new InsertChildPerson());

    // (Neuen) Partner hinzuf�gen.
    MenuItem insertPartnerItem = new MenuItem(submenu, SWT.PUSH);
    insertPartnerItem.setText("&Partner hinzuf�gen\tCtrl + P");
    insertPartnerItem.setAccelerator(SWT.CONTROL + 'P');
    insertPartnerItem.addListener(SWT.Selection, new InsertPartnerPerson());

    new MenuItem(submenu, SWT.SEPARATOR);

    // Person suchen.
    MenuItem addImage2Person = new MenuItem(submenu, SWT.PUSH);
    addImage2Person.setText("Bild einf�gen\tCtrl + I");
    addImage2Person.setAccelerator(SWT.CONTROL + 'I');
    addImage2Person.addListener(SWT.Selection, new AddImageToPerson());

    new MenuItem(submenu, SWT.SEPARATOR);

    // Verbindung zwischen Personen l�schen.
    MenuItem deleteConnection = new MenuItem(submenu, SWT.PUSH);
    deleteConnection.setText("&Verbindung l�schen\tCtrl + L");
    deleteConnection.setAccelerator(SWT.CONTROL + 'L');
    deleteConnection.addListener(SWT.Selection, new DeleteConnection());

    // Person l�schen.
    MenuItem deletePerson = new MenuItem(submenu, SWT.PUSH);
    deletePerson.setText("Person l&�schen\tCtrl + Entf");
    deletePerson.setAccelerator(SWT.CONTROL + SWT.DEL);
    deletePerson.addListener(SWT.Selection, new DeletePerson());

    // Familie l�schen.
    MenuItem deleteFamily = new MenuItem(submenu, SWT.PUSH);
    deleteFamily.setText("Familie l�s&chen");
    deleteFamily.setAccelerator(SWT.CONTROL + SWT.DEL);
    deleteFamily.addListener(SWT.Selection, new DeleteFamily());
  }

  /**
   * Men�punkte, mit denen Personengruppen gesucht werden k�nnen.
   */
  private void createSearchMenu(Menu bar) {
    // Haupt-Men�punkt.
    MenuItem searchItem = new MenuItem(bar, SWT.CASCADE);
    searchItem.setText("&Suchen");
    Menu submenu = new Menu(shell, SWT.DROP_DOWN);
    searchItem.setMenu(submenu);

    // Person "normal" suchen.
    MenuItem searchPerson = new MenuItem(submenu, SWT.PUSH);
    searchPerson.setText("Person &suchen\tCtrl + F");
    searchPerson.setAccelerator(SWT.CONTROL + 'F');
    searchPerson.addListener(SWT.Selection, new SearchPerson());

    new MenuItem(submenu, SWT.SEPARATOR);

    // Aktuelle Person abschlie�en, ohne Verweise.
    MenuItem searchPersonsWithoutConnectionToCurrentPerson = new MenuItem(submenu, SWT.PUSH);
    searchPersonsWithoutConnectionToCurrentPerson.setText("Personen ohne Verbindung zur aktuellen Person");
    searchPersonsWithoutConnectionToCurrentPerson.addListener(SWT.Selection,
      new SearchPersonsWithoutConnectionToCurrentPerson());

    // N�chstgelegene Personen mit Mailadresse suchen.
    MenuItem searchNextMailPersons = new MenuItem(submenu, SWT.PUSH);
    searchNextMailPersons.setText("N�chste Personen mit Mailadresse\tCtrl + M");
    searchNextMailPersons.setAccelerator(SWT.CONTROL + 'M');
    searchNextMailPersons.addListener(SWT.Selection, new SearchNextMailPersons());

    // Zur n�chsten Person ohne Nachfahren wechseln.
    MenuItem nextLeaf = new MenuItem(submenu, SWT.PUSH);
    nextLeaf.setText("N�chste Person ohne Nachfahren\tCtrl + Cursor-Down");
    nextLeaf.setAccelerator(SWT.CTRL + SWT.ARROW_DOWN);
    nextLeaf.addListener(SWT.Selection, new GotoNextLeafPerson());

    new MenuItem(submenu, SWT.SEPARATOR);

    // N�chstgelegene Personen mit Mailadresse suchen.
    MenuItem getShortestConnection = new MenuItem(submenu, SWT.PUSH);
    getShortestConnection.setText("K�rzeste Verbindung (zu einer Person) suchen");
    getShortestConnection.addListener(SWT.Selection, new GetShortestConnection());
  }

  /**
   * Men�punkte f�r verschiedene Markierungsfunktionen.
   */
  private void createLabelMenu(Menu bar) {
    // Haupt-Men�punkt.
    MenuItem viewItem = new MenuItem(bar, SWT.CASCADE);
    viewItem.setText("&Markierungen");
    Menu submenu = new Menu(shell, SWT.DROP_DOWN);
    viewItem.setMenu(submenu);

    // Aktuelle Person markieren.
    MenuItem labelCurrentPerson = new MenuItem(submenu, SWT.PUSH);
    labelCurrentPerson.setText("Aktuelle Person markieren\tCtrl + T");
    labelCurrentPerson.setAccelerator(SWT.CONTROL + 'T');
    labelCurrentPerson.addListener(SWT.Selection, new LabelCurrentPerson());

    new MenuItem(submenu, SWT.SEPARATOR);

    // Eine Markierung ausw�hlen, mit dem dann direktes Markieren per Shortcut
    // stattfinden kann.
    MenuItem directLabelChoice = new MenuItem(submenu, SWT.PUSH);
    directLabelChoice.setText("Label f�r direktes Markieren festlegen");
    directLabelChoice.addListener(SWT.Selection, new DirectLabelChoice());

    // Aktuelle Person direkt markieren.
    MenuItem labelCurrentPersonDirect = new MenuItem(submenu, SWT.PUSH);
    labelCurrentPersonDirect.setText("Aktuelle Person direkt markieren\tF8");
    labelCurrentPersonDirect.setAccelerator(SWT.F8);
    labelCurrentPersonDirect.addListener(SWT.Selection, new LabelCurrentPersonDirect());

    // Aktuelle Direktmarkierung von einer Person entfernen.
    MenuItem unlabelCurrentPersonDirect = new MenuItem(submenu, SWT.PUSH);
    unlabelCurrentPersonDirect.setText("Direkte Markierung von aktueller Person entfernen\tShift + F8");
    unlabelCurrentPersonDirect.setAccelerator(SWT.F8 | SWT.SHIFT);
    unlabelCurrentPersonDirect.addListener(SWT.Selection, new UnTagPersonDirect());

    new MenuItem(submenu, SWT.SEPARATOR);

    // Zur n�chsten Person mit der Direktmarkierung springen.
    MenuItem jumpToLabelPerson = new MenuItem(submenu, SWT.PUSH);
    jumpToLabelPerson.setText("Zur n�chsten Person mit der Direktmarkierung springen\tCtrl + Shift + F8");
    jumpToLabelPerson.setAccelerator(SWT.F8 | SWT.SHIFT | SWT.CTRL);
    jumpToLabelPerson.addListener(SWT.Selection, new JumpToLabelPerson());

    // Zur n�chsten Person ohne die Direktmarkierung springen.
    MenuItem jumpToWithoutLabelPerson = new MenuItem(submenu, SWT.PUSH);
    jumpToWithoutLabelPerson.setText("Zur n�chsten Person ohne die Direktmarkierung springen\tAlt + Shift + F8");
    jumpToWithoutLabelPerson.setAccelerator(SWT.F8 | SWT.SHIFT | SWT.ALT);
    jumpToWithoutLabelPerson.addListener(SWT.Selection, new JumpToWithoutLabelPerson());
  }

  /**
   * Men�punkte f�r verschiedene Ansichten.
   */
  private void createViewsMenu(Menu bar) {
    // Haupt-Men�punkt.
    MenuItem viewItem = new MenuItem(bar, SWT.CASCADE);
    viewItem.setText("&Ansicht");
    Menu submenu = new Menu(shell, SWT.DROP_DOWN);
    viewItem.setMenu(submenu);

    // Vor- und Nachfahren-Ansicht.
    MenuItem standardView = new MenuItem(submenu, SWT.PUSH);
    standardView.setText("Standard (Vor- und Nachfahrenansicht)");
    standardView.addListener(SWT.Selection, new SetStandardView());

    // Stamm-Ansicht (nur M�nner / nur Frauen).
    MenuItem stammView = new MenuItem(submenu, SWT.PUSH);
    stammView.setText("Stammansicht (nur ein Geschlecht)");
    stammView.addListener(SWT.Selection, new SetUniSexView());
  }

  /**
   * Men�punkte zum Navigieren.
   */
  private void createNavigationMenu(Menu bar) {
    // Haupt-Men�punkt.
    MenuItem personItem = new MenuItem(bar, SWT.CASCADE);
    personItem.setText("&Navigation");
    Menu submenu = new Menu(shell, SWT.DROP_DOWN);
    personItem.setMenu(submenu);

    // Zu einem beliebigen Elternteil hin wechseln.
    MenuItem gotoAnyParent = new MenuItem(submenu, SWT.PUSH);
    gotoAnyParent.setText("Zu beliebigem Elternteil wechseln\tCtrl + Shift + E");
    gotoAnyParent.setAccelerator(SWT.CONTROL + SWT.SHIFT + 'E');
    gotoAnyParent.addListener(SWT.Selection, new GotoAnyParent());

    // Zu einem bestimmten Elternteil hin wechseln.
    MenuItem gotoParent = new MenuItem(submenu, SWT.PUSH);
    gotoParent.setText("Zu Elternteil wechseln\tAlt + Shift + E");
    gotoParent.setAccelerator(SWT.ALT + SWT.SHIFT + 'E');
    gotoParent.addListener(SWT.Selection, new GotoParent());

    new MenuItem(submenu, SWT.SEPARATOR);

    // Zu einem beliebigen Kind hin wechseln.
    MenuItem gotoAnyChild = new MenuItem(submenu, SWT.PUSH);
    gotoAnyChild.setText("Zu beliebigem Kind wechseln\tCtrl + Shift + K");
    gotoAnyChild.setAccelerator(SWT.CONTROL + SWT.SHIFT + 'K');
    gotoAnyChild.addListener(SWT.Selection, new GotoAnyChild());

    // Zu einem bestimmten Kind hin wechseln.
    MenuItem gotoChild = new MenuItem(submenu, SWT.PUSH);
    gotoChild.setText("Zu Kind wechseln\tAlt + Shift + K");
    gotoChild.setAccelerator(SWT.ALT + SWT.SHIFT + 'K');
    gotoChild.addListener(SWT.Selection, new GotoChild());

    new MenuItem(submenu, SWT.SEPARATOR);

    // Zu einem beliebigen Partner hin wechseln.
    MenuItem gotoAnyPartner = new MenuItem(submenu, SWT.PUSH);
    gotoAnyPartner.setText("Zu beliebigem Partner wechseln\tCtrl + Shift + P");
    gotoAnyPartner.setAccelerator(SWT.CONTROL + SWT.SHIFT + 'P');
    gotoAnyPartner.addListener(SWT.Selection, new GotoAnyPartner());

    // Zu einem bestimmten Partner hin wechseln.
    MenuItem gotoPartner = new MenuItem(submenu, SWT.PUSH);
    gotoPartner.setText("Zu Partner wechseln\tAlt + Shift + P");
    gotoPartner.setAccelerator(SWT.ALT + SWT.SHIFT + 'P');
    gotoPartner.addListener(SWT.Selection, new GotoPartner());
  }

  /**
   * Men�punkte, mit denen Personendaten (vorerst) erledigt werden k�nnen.
   * @param bar
   */
  private void createExtrasMenu(Menu bar) {
    // Haupt-Men�punkt.
    MenuItem personItem = new MenuItem(bar, SWT.CASCADE);
    personItem.setText("E&xtras");
    Menu submenu = new Menu(shell, SWT.DROP_DOWN);
    personItem.setMenu(submenu);

    // TODO - Men�punkt Quelle hinzuf�gen.

    // Nachnamen (letztes Wort des Namens) in Gro�buchstaben umwandeln.
    MenuItem bigFamilyName = new MenuItem(submenu, SWT.PUSH);
    bigFamilyName.setText("&Nachnamen in &Gro�buchstaben umwandeln\tF9");
    bigFamilyName.setAccelerator(SWT.F9);
    bigFamilyName.addListener(SWT.Selection, new BigFamilyName());

    // GED-Datei zum Familien-Merge einlesen.
    MenuItem mergeData = new MenuItem(submenu, SWT.PUSH);
    mergeData.setText("&Fremddaten �bernehmen\tF10");
    mergeData.setAccelerator(SWT.F10);
    mergeData.addListener(SWT.Selection, new MergeData());

    // Personendaten ausblenden.
    MenuItem openPurViewer = new MenuItem(submenu, SWT.PUSH);
    openPurViewer.setText("Familien-&Vollansicht ein-/ausblenden\tF11");
    openPurViewer.setAccelerator(SWT.F11);
    openPurViewer.addListener(SWT.Selection, new PersonDataVisibilityChanger());

    // Aktuelle Person abschlie�en, ohne Verweise.
    MenuItem fullValidation = new MenuItem(submenu, SWT.PUSH);
    fullValidation.setText("V&alidierung\tF12");
    fullValidation.setAccelerator(SWT.F12);
    fullValidation.addListener(SWT.Selection, new FullValidation());

    // Auswertung fahren.

    int blase;

    // MenuItem reportCreation = new MenuItem(submenu, SWT.PUSH);
    // reportCreation.setText("Aus&wertung erstellen");
    // reportCreation.addListener(SWT.Selection, new ReportCreation());

    // TODO - Men�punkt: Restlichen Fremddaten l�schen. Mit Nachfrage und
    // entsprechender Dateil�schung!

    new MenuItem(submenu, SWT.SEPARATOR);

    // Optionen-Dialog �ffnen.
    MenuItem options = new MenuItem(submenu, SWT.PUSH);
    options.setText("&Optionen");
    options.addListener(SWT.Selection, new ShowOptionsDialog());
  }
}
TOP

Related Classes of de.chris_soft.fyllgen.widget.ShellMenu

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.