package com.akjava.gwt.lib.client.widget.cell;
import com.akjava.gwt.lib.client.datalist.CellContextMenu;
import com.google.gwt.event.dom.client.ContextMenuEvent;
import com.google.gwt.event.dom.client.ContextMenuHandler;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.ui.MenuBar;
import com.google.gwt.user.client.ui.MenuItem;
import com.google.gwt.user.client.ui.PopupPanel;
public class SimpleContextMenu implements ContextMenuHandler,CellContextMenu{
private PopupPanel contextMenu;
private MenuBar menu=new MenuBar(true);
public PopupPanel getContextMenu() {
return contextMenu;
}
public MenuBar getMenu() {
return menu;
}
public SimpleContextMenu(){
this.contextMenu = new PopupPanel(true);
contextMenu.add(menu);
this.contextMenu.hide();
}
public void addCommand(String label,Command command){
menu.addItem(new MenuItem(label, true, command));
}
public void addCommand(MenuBar parent,String label,Command command){
parent.addItem(new MenuItem(label, true, command));
}
public MenuBar makeSubMenu(String label){
MenuBar menuBar=new MenuBar(true);
menu.addItem(label,menuBar);
return menuBar;
}
public void addSeparator(){
menu.addSeparator();
}
public void hide(){
this.contextMenu.hide();
}
@Override
public void onContextMenu(ContextMenuEvent event) {
if(!isAvaiableContextMenu()){
return;
}
event.preventDefault();
event.stopPropagation();
onContextMenu(event.getNativeEvent().getClientX(), event.getNativeEvent().getClientY());
}
public boolean isAvaiableContextMenu(){
return true;
}
private int clientX;
public int getClientX() {
return clientX;
}
public int getClientY() {
return clientY;
}
private int clientY;
@Override
public void onContextMenu(int clientX, int clientY) {
if(!isAvaiableContextMenu()){
return;
}
this.clientX=clientX;
this.clientY=clientY;
// TODO Auto-generated method stub
this.contextMenu.setPopupPosition(clientX, clientY);
this.contextMenu.show();
}
}