package org.thoughtcrime.securesms; import android.content.Context; import android.support.annotation.NonNull; import android.support.v7.widget.ListPopupWindow; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import java.util.LinkedList; import java.util.List; public class TransportOptionsPopup extends ListPopupWindow implements ListView.OnItemClickListener { private final TransportOptionsAdapter adapter; private final SelectedListener listener; public TransportOptionsPopup(@NonNull Context context, @NonNull View anchor, @NonNull SelectedListener listener) { super(context); this.listener = listener; this.adapter = new TransportOptionsAdapter(context, new LinkedList<TransportOption>()); setVerticalOffset(context.getResources().getDimensionPixelOffset(R.dimen.transport_selection_popup_yoff)); setHorizontalOffset(context.getResources().getDimensionPixelOffset(R.dimen.transport_selection_popup_xoff)); setInputMethodMode(ListPopupWindow.INPUT_METHOD_NOT_NEEDED); setModal(true); setAnchorView(anchor); setAdapter(adapter); setContentWidth(context.getResources().getDimensionPixelSize(R.dimen.transport_selection_popup_width)); setOnItemClickListener(this); } public void display(List<TransportOption> enabledTransports) { adapter.setEnabledTransports(enabledTransports); adapter.notifyDataSetChanged(); show(); } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { listener.onSelected((TransportOption)adapter.getItem(position)); } public interface SelectedListener { void onSelected(TransportOption option); } }