
package de.ivu.elect.presentation.dokumente;

import java.util.List;

import javax.faces.convert.Converter;
import javax.faces.convert.EnumConverter;

import de.ivu.elect.business.datei.entity.DateiMeta;
import de.ivu.elect.business.datei.entity.FileType;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.jee.presentation.dynamicform.AbstractSelectOneMenuProperty;

public class DokumentErzeugenFileTypeProperty extends AbstractSelectOneMenuProperty<FileType> {

  public static final EnumConverter DEFAULT_CONVERTER = new EnumConverter(FileType.class);

  private final Messages messages;

  private final DateiMeta dateiMeta;

  private final AbstractDokumentErzeugenView dokumentErzeugenView;

  public DokumentErzeugenFileTypeProperty(Messages messages, DateiMeta dateiMeta, AbstractDokumentErzeugenView dokumentErzeugenView) {
    super();

    this.messages = messages;
    this.dateiMeta = dateiMeta;
    this.dokumentErzeugenView = dokumentErzeugenView;
  }

  @Override
  public Converter getDefaultConverter() {
    return DEFAULT_CONVERTER;
  }

  @Override
  public String getDefaultLabel() {
    return dateiMeta.getFileTypeEinzahlMessage();
  }

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

  @Override
  public FileType getValue() {
    return dokumentErzeugenView.getSelectedFileType();
  }

  @Override
  public void setValue(FileType fileType) {
    dokumentErzeugenView.setSelectedFileType(fileType);
  }

  @Override
  public List<FileType> getValues() {
    return dokumentErzeugenView.getSupportedFileTypes();
  }

  @Override
  public String getItemLabel(FileType fileType) {
    return messages.lokalisiere(fileType);
  }
}
