package de.ivu.elect.business.internet.entity;

public enum InternetWidgetTyp {

  PAGE_HEADER {
    @Override
    public boolean isHeaderWidget() {
      return true;
    }

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

    @Override
    public String getIcon() {
      return "fa fa-header";
    }
  },
  WAHL_HEADER {
    @Override
    public boolean isHeaderWidget() {
      return true;
    }

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

    @Override
    public String getIcon() {
      return "fa fa-info";
    }
  },
  WAHL_HEADER_LOGO {
    @Override
    public boolean isHeaderWidget() {
      return true;
    }

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

    @Override
    public String getIcon() {
      return "fa fa-info";
    }
  },
  GEBIET_AUSWAHL {
    @Override
    public boolean isSupportsSlideShow() {
      return false;
    }

    @Override
    public InternetWidgetBreite getInitialeBreite() {
      return InternetWidgetBreite.WIDTH_3_6;
    }

    @Override
    public String getIcon() {
      return "fa fa-map-marker";
    }
  },
  GEBIET_AUSWAHL_KARTE {
    @Override
    public boolean isSupportsSlideShow() {
      return true;
    }

    @Override
    public String getIcon() {
      return "fa fa-map-marker";
    }

  },
  UNTERGEBIETE {
    @Override
    public boolean isSupportsSlideShow() {
      return false;
    }

    @Override
    public String getIcon() {
      return "fa fa-sitemap";
    }
  },
  STIMMEN_DIAGRAMM {
    @Override
    public boolean isSupportsSlideShow() {
      return true;
    }

    @Override
    public InternetWidgetBreite getInitialeBreite() {
      return InternetWidgetBreite.WIDTH_2_6;
    }

    @Override
    public String getIcon() {
      return "fa fa-bar-chart";
    }
  },
  SITZE_DIAGRAMM {
    @Override
    public boolean isSupportsSlideShow() {
      return true;
    }

    @Override
    public String getIcon() {
      return "fa fa-pie-chart";
    }
  },
  STIMMEN_TABELLE {
    @Override
    public boolean isSupportsSlideShow() {
      return true;
    }

    @Override
    public InternetWidgetBreite getInitialeBreite() {
      return InternetWidgetBreite.WIDTH_2_6;
    }

    @Override
    public String getIcon() {
      return "fa fa-table";
    }
  },
  STIMMEN_GEWINNER_MAP {
    @Override
    public boolean isSupportsSlideShow() {
      return true;
    }

    @Override
    public String getIcon() {
      return "fa fa-leanpub";
    }
  },
  LISTENKANDIDATUR_STIMMEN {
    @Override
    public boolean isSupportsSlideShow() {
      return true;
    }

    @Override
    public String getIcon() {
      return "fa fa-list-alt";
    }
  },
  GEWAEHLTER_DIREKTKANDIDAT {
    @Override
    public boolean isSupportsSlideShow() {
      return true;
    }

    @Override
    public String getIcon() {
      return "fa fa-child";
    }
  },
  GEWAEHLTE_TABELLE {
    @Override
    public boolean isSupportsSlideShow() {
      return true;
    }

    @Override
    public String getIcon() {
      return "fa fa-group";
    }
  },
  REFERENDUM_DIAGRAMM {
    @Override
    public boolean isSupportsSlideShow() {
      return true;
    }

    @Override
    public String getIcon() {
      return "fa fa-bar-chart-o";
    }
  },
  REFERENDUM_TABELLE {
    @Override
    public boolean isSupportsSlideShow() {
      return true;
    }

    @Override
    public String getIcon() {
      return "fa fa-list-alt";
    }
  },
  REFERENDUM_TEXT {
    @Override
    public boolean isSupportsSlideShow() {
      return true;
    }

    @Override
    public String getIcon() {
      return "fa fa-file-text-o";
    }
  },
  WAHLBETEILIGUNG {
    @Override
    public boolean isSupportsSlideShow() {
      return true;
    }

    @Override
    public String getIcon() {
      return "fa fa-flask";
    }
  },
  WAEHLER_ANTEIL {
    @Override
    public boolean isSupportsSlideShow() {
      return true;
    }

    @Override
    public String getIcon() {
      return "fa fa-users";
    }
  },
  WAEHLER_ANTEIL_DIAGRAMM {
    @Override
    public boolean isSupportsSlideShow() {
      return true;
    }

    @Override
    public String getIcon() {
      return "fa fa-adjust";
    }
  },
  WAHLBETEILIGUNG_DIAGRAMM {
    @Override
    public boolean isSupportsSlideShow() {
      return true;
    }

    @Override
    public String getIcon() {
      return "fa fa-line-chart";
    }
  },
  WAHLBETEILIGUNG_TABELLE {
    @Override
    public boolean isSupportsSlideShow() {
      return true;
    }

    @Override
    public String getIcon() {
      return "fa fa-table";
    }
  },
  WAHLBETEILIGUNG_KARTE {
    @Override
    public boolean isSupportsSlideShow() {
      return true;
    }

    @Override
    public String getIcon() {
      return "fa fa-leanpub";
    }
  },
  ANKUNFTSTAFEL {
    @Override
    public boolean isSupportsSlideShow() {
      return true;
    }

    @Override
    public String getIcon() {
      return "fa fa-train";
    }
  },
  AUSZAEHLUNGSSTAND {
    @Override
    public boolean isSupportsSlideShow() {
      return true;
    }

    @Override
    public String getIcon() {
      return "fa fa-tasks";
    }
  },
  AUSZAEHLUNGSSTAND_KARTE {
    @Override
    public boolean isSupportsSlideShow() {
      return true;
    }

    @Override
    public String getIcon() {
      return "fa fa-leanpub";
    }
  },
  WAHLSTATISTIK_TABELLE {
    @Override
    public boolean isSupportsSlideShow() {
      return true;
    }

    @Override
    public String getIcon() {
      return "fa fa-list-alt";
    }
  },
  AUSBLEIBENDE_GEBIETE {
    @Override
    public boolean isSupportsSlideShow() {
      return true;
    }

    @Override
    public String getIcon() {
      return "fa fa-reply-all";
    }
  },
  PROBESTIMMZETTEL_LISTENKANDIDATEN {
    @Override
    public boolean isSupportsSlideShow() {
      return false;
    }

    @Override
    public String getIcon() {
      return "fa fa-close";
    }

  },
  SPRUNGMARKE {
    @Override
    public boolean isSupportsSlideShow() {
      return false;
    }

    @Override
    public String getIcon() {
      return "fa fa-bars";
    }
  },
  MESSAGES {
    @Override
    public boolean isSupportsSlideShow() {
      return true;
    }

    @Override
    public InternetWidgetBreite getInitialeBreite() {
      return InternetWidgetBreite.WIDTH_6_6;
    }

    @Override
    public String getIcon() {
      return "fa fa-comment-o";
    }
  },
  TEXT {
    @Override
    public boolean isSupportsSlideShow() {
      return true;
    }

    @Override
    public String getIcon() {
      return "fa fa-file-text-o";
    }
  },
  HTML {
    @Override
    public boolean isSupportsSlideShow() {
      return true;
    }

    @Override
    public String getIcon() {
      return "fa fa-html5";
    }
  },
  EXPORT {
    @Override
    public boolean isSupportsSlideShow() {
      return false;
    }

    @Override
    public String getIcon() {
      return "fa fa-upload";
    }
  },
  ERGEBNISEINGANG_DOKUMENT {
    @Override
    public boolean isSupportsSlideShow() {
      return false;
    }

    @Override
    public String getIcon() {
      return "fa fa-file";
    }
  },
  DOWNLOAD {
    @Override
    public boolean isSupportsSlideShow() {
      return false;
    }

    @Override
    public String getIcon() {
      return "fa fa-download";
    }
  },
  BB_BWL_EUW_GEWAEHLTE {
    @Override
    public boolean isSupportsSlideShow() {
      return true;
    }

    @Override
    public String getIcon() {
      return "fa fa-group";
    }
  },
  BE_WAHLLOKALSUCHE {
    @Override
    public boolean isSupportsSlideShow() {
      return false;
    }

    @Override
    public String getIcon() {
      return "fa fa-search";
    }
  };

  public String getSprungmarkeMsgKey() {
    return "internt.widget.typ.sprungmarke." + name();
  }

  public boolean isHeaderWidget() {
    return false;
  }

  public boolean isBreiteFixiert() {
    return isHeaderWidget();
  }

  public abstract boolean isSupportsSlideShow();

  public InternetWidgetBreite getInitialeBreite() {
    if (isHeaderWidget()) {
      return InternetWidgetBreite.WIDTH_6_6;
    }
    return InternetWidgetBreite.WIDTH_1_6;
  }

  public abstract String getIcon();
}
