/** DOCUMENT ME! */
  private void init() {
    // wird das aktuelle crs unterstützt ?
    if (!isCrsSupported(CismapBroker.getInstance().getSrs())) {
      showCrsNotSupported();
      // noch nicht initialisiert ?
    } else if (!isInited()) {
      final CidsBean pointBean = getCidsBean();

      if (pointBean != null) {
        pointBean.addPropertyChangeListener(getCidsBeanListener());
        final double pointValue = getValue();
        setValueToLabel(pointValue);
        labGwk.setText(
            Long.toString(LinearReferencingHelper.getRouteGwkFromStationBean(pointBean)));

        if (isEditable()) {
          setValueToFeature(pointValue);
          setValueToSpinner(pointValue);

          // badgeom feature und button nur falls die realgeom weiter als 1 von der route entfernt
          // ist
          final double distance =
              LinearReferencingHelper.distanceOfStationGeomToRouteGeomFromStationBean(pointBean);
          if (distance > 1) {
            setBadGeomFeature(
                createBadGeomFeature(
                    LinearReferencingHelper.getPointGeometryFromStationBean(pointBean)));
          } else {
            setBadGeomFeature(null);
          }

          // die aktuelle cidsBean als listener bei stationtomapregistry anmelden
          FEATURE_REGISTRY.addListener(pointBean, getMapRegistryListener());

          // feature erzeugen und auf der Karte anzeigen lassen
          final LinearReferencedPointFeature pointFeature =
              FEATURE_REGISTRY.addStationFeature(pointBean);
          if (ico != null) {
            pointFeature.setIconImage(ico);
          }
          pointFeature.setEditable(true);

          // spinner auf intervall der neuen route anpassen
          ((SpinnerNumberModel) getValueSpinner().getModel())
              .setMaximum(Math.ceil(pointFeature.getLineGeometry().getLength()));

          // auf änderungen des features horchen
          pointFeature.addListener(getFeatureListener());

          firePointCreated();
        }
        updateBadGeomButton();
        updateSplitButton();

        // editier panel anzeigen
        showCard(Card.edit);

        // fertig intialisiert
        setInited(true);
      } else {
        if (isEditable()) {
          showCard(Card.add);
        } else {
          setErrorMsg("keine Station zugewiesen");
          showCard(Card.error);
        }
      }
    }
  }