package org.osmdroid.views.overlay; import java.util.List; import org.osmdroid.views.MapView; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Canvas; import android.view.MotionEvent; /** * A {@link org.osmdroid.views.overlay.FolderOverlay} is just a group of other {@link org.osmdroid.views.overlay.Overlay}s. * * <img alt="Class diagram around Marker class" width="686" height="413" src='./doc-files/marker-classes.png' /> * * @author M.Kergall */ public class FolderOverlay extends Overlay { protected OverlayManager mOverlayManager; protected String mName, mDescription; /** Use {@link #FolderOverlay()} instead */ @Deprecated public FolderOverlay(Context ctx) { this(); } public FolderOverlay() { super(); mOverlayManager = new DefaultOverlayManager(null); mName = ""; mDescription = ""; } public void setName(String name){ mName = name; } public String getName(){ return mName; } public void setDescription(String description){ mDescription = description; } public String getDescription(){ return mDescription; } /** * @return the list of components of this folder. * Doesn't provide a copy, but the actual list. */ public List<Overlay> getItems(){ return mOverlayManager; } public boolean add(Overlay item){ return mOverlayManager.add(item); } public boolean remove(Overlay item){ return mOverlayManager.remove(item); } @SuppressLint("WrongCall") @Override public void draw(Canvas canvas, MapView osm, boolean shadow) { if (shadow) return; mOverlayManager.onDraw(canvas, osm); } @Override public boolean onSingleTapUp(MotionEvent e, MapView mapView){ if (isEnabled()) return mOverlayManager.onSingleTapUp(e, mapView); else return false; } @Override public boolean onSingleTapConfirmed(MotionEvent e, MapView mapView){ if (isEnabled()) return mOverlayManager.onSingleTapConfirmed(e, mapView); else return false; } @Override public boolean onLongPress(MotionEvent e, MapView mapView){ if (isEnabled()) return mOverlayManager.onLongPress(e, mapView); else return false; } @Override public boolean onTouchEvent(MotionEvent e, MapView mapView){ if (isEnabled()) return mOverlayManager.onTouchEvent(e, mapView); else return false; } //TODO: implement other events... /** * Close all opened InfoWindows of overlays it contains. * This only operates on overlays that inherit from OverlayWithIW. */ public void closeAllInfoWindows(){ for (Overlay overlay:mOverlayManager){ if (overlay instanceof FolderOverlay){ ((FolderOverlay)overlay).closeAllInfoWindows(); } else if (overlay instanceof OverlayWithIW){ ((OverlayWithIW)overlay).closeInfoWindow(); } } } @Override public void onDetach(MapView mapView){ if (mOverlayManager!=null) mOverlayManager.onDetach(mapView); mOverlayManager=null; } }