package hh.dejsem.hack;

import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;

import java.util.ArrayList;

import hh.dejsem.Act;
import hh.dejsem.R;

public class HackContextMenu extends Act implements View.OnClickListener {

	public enum PanelMenuItem {
		//-------------------------------------------------------------
		// intenzívnější zkouška kontextového menu/submenu
		//-------------------------------------------------------------
		M1() { void action(HackContextMenu target) throws Exception { target.handleMenuItem11(); } },
		M2("zkouška 2"),
		M3("zkouška 3") { void action(HackContextMenu target) throws Exception { target.handleMenuItem33(); } };

		final String title;
		void action(HackContextMenu target) throws Exception {};

		PanelMenuItem() { title = name(); }
		PanelMenuItem(String n) { this.title = n; }
	}
	ArrayList<PanelMenuItem> items = new ArrayList<PanelMenuItem>();
	Button b1, b2, b3, b4;

	@Override
	public void onCreate(Bundle b) {
		super.onCreate(b);
		setContentView(R.layout.hack);
		for(PanelMenuItem p: PanelMenuItem.values()) items.add(p.ordinal(), p);
//		panelMenu = new HackPanelMenu(d);
		b1 = (Button)findViewById(R.id.bHack_1);
		registerForContextMenu(b1);
		b1.setOnClickListener(this);

		b2 = (Button)findViewById(R.id.bHack_2);
		registerForContextMenu(b2);
		b2.setOnClickListener(this);

		b3 = (Button)findViewById(R.id.bHack_3);
		registerForContextMenu(b3);
		b3.setOnClickListener(this);

		b4 = (Button)findViewById(R.id.bHack_4);
		b4.setOnClickListener(this);
	}

	@Override
	public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
		d.l("HackContextMenu.onCreateContextMenu");
//		panelMenu.createContextMenu(menu, v, menuInfo);
		switch(v.getId()) {
			case R.id.bHack_1:
				menu.add(Menu.NONE, PanelMenuItem.M1.ordinal(), Menu.NONE, PanelMenuItem.M1.title);
				Menu smenu = menu.addSubMenu(Menu.NONE, 9999, Menu.NONE, "submenu S1");
				smenu.add(Menu.NONE, PanelMenuItem.M2.ordinal(), Menu.NONE, PanelMenuItem.M2.title);
				smenu.add(Menu.NONE, PanelMenuItem.M3.ordinal(), Menu.NONE, PanelMenuItem.M3.title);
				menu.add(Menu.NONE, 22, Menu.CATEGORY_CONTAINER + 1, "expl. zkouška 2");
				menu.add(Menu.NONE, 33, Menu.CATEGORY_CONTAINER + 2, "expl. zkouška 3");
				break;
			case R.id.bHack_2:
				menu.add(Menu.NONE, 22, Menu.CATEGORY_CONTAINER + 1, "expl. zkouška 2");
				menu.add(Menu.NONE, PanelMenuItem.M3.ordinal(), Menu.NONE, PanelMenuItem.M3.title);
				menu.add(Menu.NONE, 33, Menu.CATEGORY_CONTAINER + 2, "expl. zkouška 3");
				break;
			case R.id.bHack_3:
				menu.add(Menu.NONE, PanelMenuItem.M1.ordinal(), Menu.NONE, PanelMenuItem.M1.title);
				menu.add(Menu.NONE, 22, Menu.CATEGORY_CONTAINER + 1, "expl. zkouška 2");
				menu.add(Menu.NONE, PanelMenuItem.M1.ordinal(), Menu.NONE, PanelMenuItem.M1.title);
				break;
		}
	}

	@Override
	public void onClick(View v) {
		d.l("open context menu");
		switch(v.getId()) {
			case R.id.bHack_1:
				openContextMenu(b1);
				break;
			case R.id.bHack_2:
				openContextMenu(b2);
				break;
			case R.id.bHack_3:
				openContextMenu(b3);
				break;
			case R.id.bHack_4:
				handleMenuItem44();
				break;
		}
	}

	@Override
	public boolean onContextItemSelected(MenuItem item) {
		d.l(String.format("handleContextItemSelected, item id=%d", item.getItemId()));
		if(item.getItemId() < items.size())
			try { items.get(item.getItemId()).action(this); }
			catch(Exception e) {}
			finally { return true; }
//		if(panelMenu.handleContextItemSelected(item, this)) return true;
		return super.onContextItemSelected(item);
	}

	public void handleMenuItem11() { d.l("handleMenuItem11"); }

	public void handleMenuItem33() { d.l("handleMenuItem33"); }

	public void handleMenuItem44() { d.l("handleMenuItem44"); }
}
