package com.aincc.seoulexcursion.ui.scene.plays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import android.app.Dialog;
import android.content.Context;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import com.aincc.seoulexcursion.R;
import com.aincc.seoulexcursion.ui.control.OpenAdapter;
import com.aincc.seoulexcursion.util.SeoulFont;
import com.aincc.seoulexcursion.util.SeoulUtils;
import com.aincc.seoulopenapi.model.FacilTrafficInfo;
/**
*
* <h3><b>TrafficInfoPopup</b></h3></br>
*
* 교통정보 팝업
*
* @author aincc@barusoft.com
* @version 1.3.0
* @since 1.3.0
*/
public class TrafficInfoPopup extends Dialog implements android.view.View.OnClickListener
{
private ListView listview;
private TrafficAdapter adapter;
private ImageButton close;
private WindowManager.LayoutParams param;
private Context context;
private List<FacilTrafficInfo> infos;
/**
*
* @since 1.3.0
* @param context
*/
private TrafficInfoPopup(Context context, List<FacilTrafficInfo> infos)
{
super(context);
this.context = context;
this.infos = infos;
Collections.sort(this.infos, new TrafficComparator());
getWindow().setBackgroundDrawableResource(android.R.color.transparent);
param = new WindowManager.LayoutParams();
param.copyFrom(getWindow().getAttributes());
param.width = WindowManager.LayoutParams.MATCH_PARENT;
param.height = WindowManager.LayoutParams.MATCH_PARENT;
param.gravity = Gravity.TOP;
param.windowAnimations = R.style.programinfo_dialog_animation;
getWindow().setAttributes(param);
View view = getLayoutInflater().inflate(R.layout.popup_trafficinfo, null);
listview = (ListView) view.findViewById(R.id.listview);
adapter = new TrafficAdapter(context, this.infos);
listview.setAdapter(adapter);
close = (ImageButton) view.findViewById(R.id.close);
close.setOnClickListener(this);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(view, param);
}
/**
*
* @since 1.3.0
* @param context
* @param info
* @return 팝업다이얼로그
*/
public static TrafficInfoPopup show(Context context, List<FacilTrafficInfo> infos)
{
TrafficInfoPopup dialog = new TrafficInfoPopup(context, infos);
dialog.setTitle(null);
dialog.setCancelable(true);
dialog.show();
return dialog;
}
@Override
public void onClick(View v)
{
switch (v.getId())
{
case R.id.close:
dismiss();
break;
}
}
/**
*
* <h3><b>TrafficAdapter</b></h3></br>
*
* @author aincc@barusoft.com
* @version 1.3.0
* @since 1.3.0
*/
class TrafficAdapter extends OpenAdapter<FacilTrafficInfo>
{
protected TrafficAdapter(Context context, List<FacilTrafficInfo> listData)
{
super(context, listData);
}
@Override
public View getView(final int position, View convertView, ViewGroup parent)
{
View view = convertView;
ViewHolder viewHolder = null;
if (null == convertView)
{
LayoutInflater inflater = LayoutInflater.from(context);
view = inflater.inflate(R.layout.cell_traffic, parent, false);
viewHolder = new ViewHolder();
viewHolder.cellSelector = (LinearLayout) view.findViewById(R.id.cellSelector);
viewHolder.TRAFTYPE = (TextView) view.findViewById(R.id.TRAFTYPE);
viewHolder.TRAFTYPE.setTypeface(SeoulFont.getInstance().getSeoulHangang());
viewHolder.TRAFINFO = (TextView) view.findViewById(R.id.TRAFINFO);
viewHolder.TRAFINFO.setTypeface(SeoulFont.getInstance().getSeoulHangang());
view.setTag(viewHolder);
}
else
{
viewHolder = (ViewHolder) view.getTag();
}
viewHolder.cellSelector.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
}
});
FacilTrafficInfo info = listData.get(position);
// Logger.d("TYPE : " + info.TRAFTYPE);
// Logger.d("INFO : " + info.TRAFINFO);
viewHolder.TRAFTYPE.setText(SeoulUtils.getTrafficInfo(info.TRAFTYPE));
viewHolder.TRAFINFO.setText(info.TRAFINFO);
return view;
}
/**
*
* <h3><b>ViewHolder</b></h3></br>
*
* @author aincc@barusoft.com
* @version 1.3.0
* @since 1.3.0
*/
class ViewHolder
{
LinearLayout cellSelector;
TextView TRAFTYPE;
TextView TRAFINFO;
}
}
/**
*
* <h3><b>TrafficComparator</b></h3></br>
*
* @author aincc@barusoft.com
* @version 1.3.0
* @since 1.3.0
*/
class TrafficComparator implements Comparator<FacilTrafficInfo>
{
@Override
public int compare(FacilTrafficInfo lhs, FacilTrafficInfo rhs)
{
// 내림차순 ('T' 타입 최우선)
return rhs.TRAFTYPE.compareTo(lhs.TRAFTYPE);
}
}
}