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

import javax.annotation.Nullable;
import javax.inject.Inject;

import de.ivu.elect.business.gebietsbaum.boundary.GebietGeometrieEdit;
import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.jee.faces.PreConditionCheck;
import de.ivu.elect.jee.presentation.dynamicform.FormBuilder;
import de.ivu.elect.jee.presentation.redirect.Redirect;
import de.ivu.elect.presentation.AbstractElectEditView;
import de.ivu.elect.presentation.gebietsbaum.GebietSearchView;

public abstract class AbstractGebietGeometrieView extends AbstractElectEditView<Gebiet> {

  private static final long serialVersionUID = 1L;

  public static final String FARBE_POLYGON_GEBIET = "#013ADF";

  public static final String FARBE_POLYGON_NACHBAR = "#FF9900";

  public static final String FARBE_POLYGON_UNTERGEORDNET = FARBE_POLYGON_NACHBAR;

  public static final String FARBE_STROKE = "black";

  @Inject
  protected transient GebietGeometrieEdit gebietGeometrieEdit;

  protected AbstractGebietGeometrieView() {
    super();
  }

  @Nullable
  @PreConditionCheck
  public String preConditionCheckInit() {
    if (!gebietSessionSelect.isSelected()) {
      return getStartViewId();
    }

    return null;
  }

  @Override
  protected Gebiet getEntity() {
    return gebietSessionSelect.getEntity();
  }

  public Gebiet getGebiet() {
    return getEntity();
  }

  public String getGebietName() {
    return getGebietName(getGebiet());
  }

  protected String getGebietName(Gebiet gebiet) {
    return gebietNummerFormatter.getNameMitNummer(gebiet);
  }

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

  @Override
  @Redirect
  public String cancel() {
    return goBack(GebietSearchView.VIEW_ID);
  }

  public abstract boolean isBtnZuweisenRendered();

  @Redirect
  public String gotoZuweisen() {
    reset();
    return GebietGeometrieZuweisenView.VIEW_ID;
  }

  public abstract boolean isBtnEditRendered();

  @Redirect
  public String gotoEdit() {
    reset();

    return GebietGeometrieEditView.VIEW_ID;
  }

  public abstract boolean isBtnSVGRendered();

  @Redirect
  public String gotoSvg() {
    reset();
    return GebietGeometrieSVGView.VIEW_ID;
  }

  @Override
  public void addProperties(FormBuilder formBuilder, Gebiet gebiet) {
    // Do nothing.
  }
}
