package eu.dnetlib.client.leftColumn;

import com.github.gwtbootstrap.client.ui.Form;
import com.github.gwtbootstrap.client.ui.Heading;
import com.github.gwtbootstrap.client.ui.ListBox;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Widget;

import eu.dnetlib.client.Generate;
import eu.dnetlib.client.widgets.FormFieldSet;
import eu.dnetlib.shared.ValuesOfFields;

public class MapOptionsPanel implements IsWidget{

	private FlowPanel flowPanel = new FlowPanel();		
	private boolean isFromLoad = false;
	
	public MapOptionsPanel(boolean isFromLoad) {

		
		this.isFromLoad = isFromLoad;
		designRegionsSection();
		designDataMode();
		
	}
	
	public void designRegionsSection(){
		Form regionsForm = new Form();
		
		FlowPanel regionsPanel = new FlowPanel();
		regionsPanel.addStyleName("appearance-option-panel");
		
		Heading regions_heading = new Heading(3);
		
		regions_heading.setText("Regions to be shown");	
		regions_heading.addStyleName("headings-appearance");
		
		   final ListBox regionsFamily = new ListBox();
	        regionsFamily.addItem("Whole world", "world");
	        regionsFamily.addItem("South America","005");
	        regionsFamily.addItem("Central America","013");
	        regionsFamily.addItem("North America","021");
	        regionsFamily.addItem("All of Africa","002");
	        regionsFamily.addItem("Central Africa","017");
	        regionsFamily.addItem("Northern Africa","015");
	        regionsFamily.addItem("Southern Africa","018");
	        regionsFamily.addItem("Eastern Asia","030");
	        regionsFamily.addItem("Southern Asia","034");
	        regionsFamily.addItem("Asia/Pacific region","035");
	        regionsFamily.addItem("Oceania","009");
	        regionsFamily.addItem("Middle East","145");
	        regionsFamily.addItem("Central Asia","143");
	        regionsFamily.addItem("Northern Asia","151");
	        regionsFamily.addItem("Northern Europe","154");
	        regionsFamily.addItem("Western Europe","155");
	        regionsFamily.addItem("Southern Europe","039");
	        
	        
	        regionsFamily.addChangeHandler(new ChangeHandler() {
				
				@Override
				public void onChange(ChangeEvent event) {
					// TODO Auto-generated method stub
					ValuesOfFields.getInstance().setRegions(regionsFamily.getValue());
					Generate.getInstance().generateURLs(ValuesOfFields.getInstance(), 1);
				}
			});
	      
		    
	        
	        if(isFromLoad){
	        	regionsFamily.setSelectedValue(ValuesOfFields.getInstance().getRegions());
	        }else{
	        	ValuesOfFields.getInstance().setRegions("world");
	        }
	        
	        regionsPanel.add(regions_heading);
	        regionsForm.add(new FormFieldSet("Region", regionsFamily));
	        regionsPanel.add(regionsForm);
	        
	        flowPanel.add(regionsPanel);
	}
	
	public void designDataMode(){
		Form dataModeForm = new Form();
		
		FlowPanel dataModePanel = new FlowPanel();
		dataModePanel.addStyleName("appearance-option-panel");
		
		Heading dataMode_heading = new Heading(3);
		
		dataMode_heading.setText("What to color");	
		dataMode_heading.addStyleName("headings-appearance");
		
		   final ListBox dataMode = new ListBox();
	        dataMode.addItem("Whole regions", "regions");
	        dataMode.addItem("Markers on each region","markers");
	      
	        
	        
	        dataMode.addChangeHandler(new ChangeHandler() {
				
				@Override
				public void onChange(ChangeEvent event) {
					// TODO Auto-generated method stub
					ValuesOfFields.getInstance().setDataMode(dataMode.getValue());
					Generate.getInstance().generateURLs(ValuesOfFields.getInstance(), 1);
				}
			});
	      
	        
	        if(isFromLoad){
	        	dataMode.setSelectedValue(ValuesOfFields.getInstance().getDataMode());
	        }else{
	        	 ValuesOfFields.getInstance().setDataMode("regions");
	        }
		   
	      
	        
	        dataModePanel.add(dataMode_heading);
	        dataModeForm.add(new FormFieldSet("Display mode", dataMode));
	        dataModePanel.add(dataModeForm);
	        
	        flowPanel.add(dataModePanel);
	}
	
	@Override
	public Widget asWidget() {
		// TODO Auto-generated method stub
		return flowPanel;
	}

}
