package com.jecelyin.widget;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.*;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import com.jecelyin.editor.JecEditor;
import com.jecelyin.editor.R;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class JecMenu extends Dialog implements OnItemClickListener
{
private ViewGroup mViewGroup;
private GridView mGrid;
private OnMenuItemSelectedListener mOnMenuItemSelectedListener;
private int[][] mMenuItemLists = new int[][]{
new int[] {R.id.menu_reopen, R.string.reopen, R.drawable.menu_open},
new int[] {R.id.menu_saveas, R.string.saveas, R.drawable.menu_saveas},
new int[] {R.id.menu_highlight, R.string.highlight, R.drawable.menu_highlight},
new int[] {R.id.menu_encoding, R.string.encoding, R.drawable.menu_encoding},
new int[] {R.id.menu_search_replace, R.string.search_replace, R.drawable.menu_search},
new int[] {R.id.menu_pipe, R.string.open_with, R.drawable.menu_openwith},
new int[] {R.id.menu_preferences, R.string.preferences, R.drawable.menu_setting},
new int[] {R.id.menu_exit, R.string.exit, R.drawable.menu_exit},
};
private ArrayList<Map<String, Object>> mMenuItems = new ArrayList<Map<String,Object>>();
public JecMenu(Context context)
{
super(context);
init(context);
}
public JecMenu(Context context, int theme)
{
super(context, theme);
init(context);
}
private void init(Context context)
{
requestWindowFeature(Window.FEATURE_NO_TITLE);
mViewGroup = (ViewGroup) LayoutInflater.from(context).inflate(R.layout.main_menu, null);
mGrid = (GridView)mViewGroup.findViewById(R.id.menu_grid);
TextView verTextView = (TextView)mViewGroup.findViewById(R.id.menu_version);
verTextView.setText(JecEditor.version);
HashMap<String, Object> map;
for(final int[] item: mMenuItemLists)
{
map = new HashMap<String, Object>();
map.put("id", item[0]);
map.put("text", context.getString(item[1]));
map.put("icon", item[2]);
mMenuItems.add(map);
}
SimpleAdapter mAdapter = new SimpleAdapter(
getContext()
, mMenuItems
, R.layout.main_menu_item
, new String[]{ "text", "icon" }
, new int[]{ R.id.main_menu_text, R.id.main_menu_icon }
);
mGrid.setAdapter(mAdapter);
mGrid.setOnItemClickListener(this);
}
protected void onCreate(Bundle mBundle)
{
super.onCreate(mBundle);
setContentView(mViewGroup);
WindowManager.LayoutParams attr = getWindow().getAttributes();
attr.gravity = Gravity.CENTER|Gravity.BOTTOM;
attr.verticalMargin = 0;
//getWindow().getAttributes().alpha = 0.5F;
attr.dimAmount = 0.0F;
/*getWindow().getAttributes().width = (int)getContext().getResources().getDimension(2131230777);
this.s = (int)getContext().getResources().getDimension(2131230777);
getWindow().setBackgroundDrawableResource(2130838102);*/
getWindow().setBackgroundDrawableResource(R.drawable.main_menu_bg);
//按非窗口区域时,可以关闭窗口
setCanceledOnTouchOutside(true);
//Toast.makeText(getContext(), "Menu onCreate", Toast.LENGTH_LONG).show();
}
protected void onStart()
{
super.onStart();
/*Logger.a("MttPopMenu", "onstart");
d();
int i1 = b();
getWindow().getAttributes().height = this.t;
getWindow().getAttributes().x = (this.h.x - this.s / 2);
if (i1 != f)
getWindow().getAttributes().y = this.h.y;
else
getWindow().getAttributes().y = (this.h.y - this.t);
g = 1 + g;*/
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
int itemId = (Integer) mMenuItems.get(position).get("id");
dismiss();
mOnMenuItemSelectedListener.onMenuItemSelected(itemId, view);
}
public void setOnMenuItemSelectedListener(OnMenuItemSelectedListener l)
{
mOnMenuItemSelectedListener = l;
}
public interface OnMenuItemSelectedListener
{
public boolean onMenuItemSelected(int id, View v);
}
}