diff --git a/vtm/src/org/oscim/event/TouchListener.java b/vtm/src/org/oscim/event/TouchListener.java new file mode 100644 index 00000000..dc0d4e39 --- /dev/null +++ b/vtm/src/org/oscim/event/TouchListener.java @@ -0,0 +1,9 @@ +package org.oscim.event; + +import org.oscim.core.MapPosition; + +public interface TouchListener { + boolean onPress(MotionEvent e, MapPosition pos); + boolean onLongPress(MotionEvent e, MapPosition pos); + boolean onTap(MotionEvent e, MapPosition pos); +} diff --git a/vtm/src/org/oscim/layers/marker/ItemizedIconLayer.java b/vtm/src/org/oscim/layers/marker/ItemizedIconLayer.java index c089b5ab..dfe5db6e 100644 --- a/vtm/src/org/oscim/layers/marker/ItemizedIconLayer.java +++ b/vtm/src/org/oscim/layers/marker/ItemizedIconLayer.java @@ -18,12 +18,15 @@ package org.oscim.layers.marker; import java.util.List; import org.oscim.core.BoundingBox; +import org.oscim.core.MapPosition; import org.oscim.core.Point; import org.oscim.event.MotionEvent; +import org.oscim.event.TouchListener; import org.oscim.map.Map; import org.oscim.map.Viewport; -public class ItemizedIconLayer extends ItemizedLayer { +public class ItemizedIconLayer extends ItemizedLayer + implements TouchListener { //private static final String TAG = ItemizedIconOverlay.class.getName(); protected final List mItemList; @@ -98,37 +101,37 @@ public class ItemizedIconLayer extends ItemizedLayer that = ItemizedIconLayer.this; -// if (that.mOnItemGestureListener == null) { -// return false; -// } -// return onSingleTapUpHelper(index, that.mItemList.get(index)); -// } -// }; -// -// @Override -// public boolean onLongPress(MotionEvent event) { -// return activateSelectedItems(event, mActiveItemLongPress) || super.onLongPress(event); -// } + /** + * Each of these methods performs a item sensitive check. If the item is + * located its corresponding method is called. The result of the call is + * returned. Helper methods are provided so that child classes may more + * easily override behavior without resorting to overriding the + * ItemGestureListener methods. + */ + @Override + public boolean onTap(MotionEvent event, MapPosition pos) { + return activateSelectedItems(event, mActiveItemSingleTap); + } + + protected boolean onSingleTapUpHelper(int index, Item item) { + return this.mOnItemGestureListener.onItemSingleTapUp(index, item); + } + + private final ActiveItem mActiveItemSingleTap = new ActiveItem() { + @Override + public boolean run(int index) { + final ItemizedIconLayer that = ItemizedIconLayer.this; + if (that.mOnItemGestureListener == null) { + return false; + } + return onSingleTapUpHelper(index, that.mItemList.get(index)); + } + }; + + @Override + public boolean onLongPress(MotionEvent event, MapPosition pos) { + return activateSelectedItems(event, mActiveItemLongPress); + } protected boolean onLongPressHelper(int index, Item item) { return this.mOnItemGestureListener.onItemLongPress(index, item); @@ -145,11 +148,15 @@ public class ItemizedIconLayer extends ItemizedLayer extends ItemizedLayer * .... */