package net.naonedbus.map.layer; import java.util.List; import net.naonedbus.R; import net.naonedbus.bean.Equipement; import net.naonedbus.map.ItemSelectedInfo; import android.content.Context; import android.content.Intent; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.google.android.gms.maps.model.MarkerOptions; import com.twotoasters.clusterkraf.ClusterPoint; public abstract class MapLayer { private final View mContentView; private final TextView mTitle; private final TextView mDescription; private final ImageView mMoreAction; private final LinearLayout mSubView; private final LayoutInflater mLayoutInflater; public MapLayer(final LayoutInflater inflater) { mLayoutInflater = inflater; mContentView = inflater.inflate(R.layout.map_info_window, null); mTitle = (TextView) mContentView.findViewById(R.id.itemTitle); mDescription = (TextView) mContentView.findViewById(R.id.itemDescription); mSubView = (LinearLayout) mContentView.findViewById(R.id.lignes); mMoreAction = (ImageView) mContentView.findViewById(R.id.moreAction); } public LayoutInflater getLayoutInflater() { return mLayoutInflater; } public final View getInfoContents(final Object item) { final ItemSelectedInfo itemSelectedInfo = getItemSelectedInfo(mContentView.getContext(), (Equipement) item); mTitle.setText(itemSelectedInfo.getTitle()); final List<View> subviews = itemSelectedInfo.getSubview(mSubView); if (subviews == null || subviews.isEmpty()) { setInfoDescription(itemSelectedInfo.getDescription(mContentView.getContext())); } else { setSubViews(subviews); } if (itemSelectedInfo.getIntent(mContentView.getContext()) != null) { if (itemSelectedInfo.getResourceAction() != null) { mMoreAction.setImageResource(itemSelectedInfo.getResourceAction()); } else { mMoreAction.setImageResource(R.drawable.balloon_disclosure); } mMoreAction.setVisibility(View.VISIBLE); } else { mMoreAction.setVisibility(View.INVISIBLE); } return mContentView; } public final Intent getClickIntent(final Context context, final Object tag) { final ItemSelectedInfo itemSelectedInfo = getItemSelectedInfo(mContentView.getContext(), (Equipement) tag); return itemSelectedInfo.getIntent(context); } private final void setInfoDescription(final CharSequence description) { mDescription.setText(description); if (TextUtils.isEmpty(description)) { mDescription.setVisibility(View.GONE); } else { mDescription.setVisibility(View.VISIBLE); } mSubView.setVisibility(View.GONE); } private final void setSubViews(final List<View> views) { mDescription.setVisibility(View.GONE); mSubView.removeAllViews(); for (final View view : views) { mSubView.addView(view); } mSubView.setVisibility(View.VISIBLE); } protected abstract ItemSelectedInfo getItemSelectedInfo(Context context, final Equipement item); public abstract void chooseMarker(final MarkerOptions markerOptions, final ClusterPoint clusterPoint); }