import com.google.gwt.core.client.EntryPoint;
import com.smartgwt.client.types.Alignment;
import com.smartgwt.client.types.ListGridFieldType;
import com.smartgwt.client.util.SC;
import com.smartgwt.client.widgets.ImgButton;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.grid.ListGrid;
import com.smartgwt.client.widgets.grid.ListGridField;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import com.smartgwt.client.widgets.layout.HLayout;
import com.smartgwt.client.widgets.layout.VLayout;
import com.smartgwt.client.widgets.menu.IMenuButton;
import com.smartgwt.client.widgets.menu.Menu;
import com.smartgwt.client.widgets.menu.MenuItem;
import com.ssdi.test.client.listgrid.CountrySampleData; 

/**
 * Entry point classes define <code>onModuleLoad()</code>.
 */
public class TestsmartGwtProject implements EntryPoint {
	VLayout layout ;
  IMenuButton button;
	public void onModuleLoad() {
	   mainfunction();

	  }

	  
	  public void mainfunction() {
	    VLayout vlayout = new VLayout();
	    vlayout.setWidth(1000);
	    vlayout.setHeight(599);
	    final ListGrid countryGrid = new ListGrid() {  
	      @Override  
	      protected com.smartgwt.client.widgets.Canvas createRecordComponent(final ListGridRecord record, Integer colNum) {  

	          String fieldName = this.getFieldName(colNum);  

	          if (fieldName.equals("iconField")) {  
	              HLayout recordCanvas = new HLayout(3);  
	              recordCanvas.setHeight(22);  
	              recordCanvas.setWidth100();  
	              recordCanvas.setAlign(Alignment.CENTER);  
	              ImgButton editImg = new ImgButton();  
	              editImg.setShowDown(false);  
	              editImg.setShowRollOver(false);  
	              editImg.setLayoutAlign(Alignment.CENTER);  
	              editImg.setSrc("silk/comment_edit.png");  
	              editImg.setPrompt("Edit Comments");  
	              editImg.setHeight(16);  
	              editImg.setWidth(16);  
	              editImg.addClickHandler(new ClickHandler() {  
	                  public void onClick(ClickEvent event) {  
	                      SC.say("Edit Comment Icon Clicked for country : " + record.getAttribute("countryName"));  
	                  }  
	              });  

	              ImgButton chartImg = new ImgButton();  
	              chartImg.setShowDown(false);  
	              chartImg.setShowRollOver(false);  
	              chartImg.setAlign(Alignment.CENTER);  
	              chartImg.setSrc("silk/chart_bar.png");  
	              chartImg.setPrompt("View Chart");  
	              chartImg.setHeight(16);  
	              chartImg.setWidth(16);  
	              chartImg.addClickHandler(new ClickHandler() {  
	                  public void onClick(ClickEvent event) {  
	                      SC.say("Chart Icon Clicked for country : " + record.getAttribute("countryName"));  
	                  }  
	              });  

	              recordCanvas.addMember(editImg);  
	              recordCanvas.addMember(chartImg);  
	              return recordCanvas;  
	          } else if (fieldName.equals("buttonField")) {  
	              button = new IMenuButton();  
	              button.setHeight(18);  
	              button.setWidth(65);                      
	              button.setIcon("flags/16/" + record.getAttribute("countryCode") + ".png");  
	              button.setTitle("Info");  
	              button.addClickHandler(new ClickHandler() {  
	                  public void onClick(ClickEvent event) {  
	                     callmenu();
	                  }
	              });  
	              return button;  
	          } else {  
	              return null;  
	          }  

	      }  
	  };  
	  countryGrid.setWidth(1000);  
	  countryGrid.setHeight(600);  

	  countryGrid.setVirtualScrolling(false);          
	  countryGrid.setShowRecordComponents(true);          
	  countryGrid.setShowRecordComponentsByCell(true);  
	  countryGrid.setCanRemoveRecords(true);  

	  ListGridField countryCodeField = new ListGridField("countryCode", "Flag", 40);  
	  countryCodeField.setAlign(Alignment.CENTER);  
	  countryCodeField.setType(ListGridFieldType.IMAGE);  
	  countryCodeField.setImageURLPrefix("flags/16/");  
	  countryCodeField.setImageURLSuffix(".png");  

	  ListGridField nameField = new ListGridField("countryName", "Country");  
	  ListGridField capitalField = new ListGridField("capital", "Capital");  
	  ListGridField continentField = new ListGridField("continent", "Continent");  

	  ListGridField buttonField = new ListGridField("buttonField", "Info");  
	  buttonField.setAlign(Alignment.CENTER);  
	    
	  ListGridField iconField = new ListGridField("iconField", "Comments/Stats");  
	  iconField.setWidth(100);  

	  countryGrid.setFields(countryCodeField, nameField, capitalField, continentField, buttonField, iconField);  
	  countryGrid.setCanResizeFields(true);  
	  countryGrid.setData(CountrySampleData.getRecords());  

	  countryGrid.draw();
	  vlayout.addMember(countryGrid);
	  vlayout.show();  
	    
	  }

	  private void callmenu() {
	    // TODO Auto-generated method stub
	    Menu menu = new Menu();  
	    menu.setAutoFitFieldWidths(true);
	    MenuItem newItem = new MenuItem("New");  
	    MenuItem openItem = new MenuItem("Open");                 
	    menu.setItems(newItem, openItem); 
	    menu.showContextMenu();
	    button.setMenu(menu);
	  }  
}