package cgeo.geocaching.apps.navi; import cgeo.geocaching.location.Geopoint; import cgeo.geocaching.models.Geocache; import cgeo.geocaching.models.Waypoint; import android.content.Context; import android.content.Intent; import android.support.annotation.NonNull; abstract class AbstractRadarApp extends AbstractPointNavigationApp { protected static final String RADAR_EXTRA_LONGITUDE = "longitude"; protected static final String RADAR_EXTRA_LATITUDE = "latitude"; private final String intentAction; protected AbstractRadarApp(final String name, final String intent, final String packageName) { super(name, intent, packageName); this.intentAction = intent; } private Intent createIntent(final Geopoint point) { final Intent intent = new Intent(intentAction); addCoordinates(intent, point); return intent; } @Override public void navigate(@NonNull final Context context, @NonNull final Geopoint point) { context.startActivity(createIntent(point)); } @Override public void navigate(@NonNull final Context context, @NonNull final Geocache cache) { final Intent intent = createIntent(cache.getCoords()); addIntentExtras(intent, cache); context.startActivity(intent); } @Override public void navigate(@NonNull final Context context, @NonNull final Waypoint waypoint) { final Intent intent = createIntent(waypoint.getCoords()); addIntentExtras(intent, waypoint); context.startActivity(intent); } protected abstract void addCoordinates(final Intent intent, final Geopoint point); }