
package de.ivu.elect.presentation.gebietsbaum.menu;

import java.util.ArrayList;
import java.util.List;

import javax.inject.Inject;

import de.ivu.elect.business.gebietsbaum.entity.GebietConstants;
import de.ivu.elect.jee.presentation.menu.AbstractSubMenuEntry;
import de.ivu.elect.jee.presentation.menu.MenuEntry;

public class GebietMainMenuEntry extends AbstractSubMenuEntry {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient GebietStatusuebersichtMenuItemEntry gebietStatusuebersichtMenuItemEntry;

  @Inject
  private transient GebietEditMenuItemEntry gebietEditMenuItemEntry;

  @Inject
  transient GebietSearchMenuItemEntry gebietSearchMenuItemEntry;

//  @Inject
//  private transient GebietSortierenMenuItemEntry gebietSortierenMenuItemEntry;

  @Inject
  private transient GebietImportMenuItemEntry gebietImportMenuItemEntry;

  @Inject
  private transient GebietExportMenuItemEntry gebietExportMenuItemEntry;

  @Inject
  private transient GebietsartSearchMenuItemEntry gebietsartSearchMenuItemEntry;

  @Inject
  private transient GebietUebernehmenMenuItemEntry gebietUebernehmenMenuItemEntry;

  public GebietMainMenuEntry() {
    super();
  }

  @Override
  protected List<MenuEntry> getSubMenuEntriesSorted() {
    List<MenuEntry> result = new ArrayList<>();

    addDefaultGebietSubMenuEntriesSorted(result);

    addAdditionalEntries(result);

    addDefaultGebietsartSubMenuEntriesSorted(result);

    return result;
  }

  protected void addDefaultGebietSubMenuEntriesSorted(List<MenuEntry> result) {
    result.add(gebietStatusuebersichtMenuItemEntry); // ELECT-7343

    result.add(gebietEditMenuItemEntry);
    result.add(gebietSearchMenuItemEntry);
   // result.add(gebietSortierenMenuItemEntry);
    result.add(gebietUebernehmenMenuItemEntry);

    result.add(gebietImportMenuItemEntry);
    result.add(gebietExportMenuItemEntry);
  }

  protected void addDefaultGebietsartSubMenuEntriesSorted(List<MenuEntry> result) {
    result.add(separator);
    result.add(gebietsartSearchMenuItemEntry);
  }

  protected void addAdditionalEntries(List<MenuEntry> result) {
    // To be overridden...
  }

  @Override
  public String getLabelKey() {
    return GebietConstants.MESSAGE_KEY_ENTITY_MEHRZAHL;
  }
}
