
package de.ivu.elect.presentation.gruppe.form;

import java.util.List;
import java.util.function.Consumer;
import java.util.function.Supplier;

import javax.faces.convert.Converter;

import de.ivu.elect.jee.faces.StringEmptyToNullConverter;
import de.ivu.elect.jee.presentation.dynamicform.AbstractPickListProperty;

/**
 *  on 21.07.2015.
 */
public class GruppeNachErfassungsgebietStimmenWerteProperty extends AbstractPickListProperty<String> {

  private final List<String> verfuegbareElemente;

  private final Consumer<List<String>> setter;

  private final Supplier<List<String>> getter;

  public GruppeNachErfassungsgebietStimmenWerteProperty(List<String> verfuegbareElemente, Consumer<List<String>> setter,
      Supplier<List<String>> getter) {
    this.verfuegbareElemente = verfuegbareElemente;
    this.setter = setter;
    this.getter = getter;
  }

  @Override
  public Converter getDefaultConverter() {
    return new StringEmptyToNullConverter();
  }

  @Override
  protected List<String> getZugeordneteElemente() {
    return getter.get();
  }

  @Override
  protected List<String> getVerfuegbareElemente() {
    return verfuegbareElemente;
  }

  @Override
  protected void setzeZugeordneteElemente(List<String> target) {
    setter.accept(target);
  }

  @Override
  protected String getSourceCaptionMessageKey() {
    return "gruppe.nach.gebiet.werte.verfuegbar";
  }

  @Override
  protected String getTargetCaptionMessageKey() {
    return "gruppe.nach.gebiet.werte.ausgewaehlt";
  }

  @Override
  public String getItemLabel(String item) {
    return item;
  }

  @Override
  public String getDefaultLabel() {
    return getMessage("gruppe.nach.gebiet.werte.label");
  }

  @Override
  public boolean getDefaultRequired() {
    return false;
  }

  @Override
  public boolean isShowFilter() {
    return false;
  }

  @Override
  public boolean isShowTargetControls() {
    return true;
  }
}
