package eu.dnetlib.client.header;

import com.github.gwtbootstrap.client.ui.Button;
import com.github.gwtbootstrap.client.ui.Modal;
import com.github.gwtbootstrap.client.ui.constants.ButtonType;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Widget;

import eu.dnetlib.client.header.SaveWidget.SaveListener;

public class NewFeatureWidget implements IsWidget{

	
	private FlowPanel flowPanel = new FlowPanel();
	
	
	public interface HideListener{
		public void onEvent();
	}
	
	private HideListener hideListener;
	
	public void setHideListener(HideListener hideListener){
		this.hideListener = hideListener;
	}
	
	public NewFeatureWidget() {
		
		designPanel(false);
	}
	
	
	private void designPanel(boolean refresh){
		
		flowPanel.addStyleName("newFeature");
		
		flowPanel.add(new HTML("<p><b>All your current data will be lost</b></p>"));
		flowPanel.add(new HTML("<br/>"));
		flowPanel.add(new HTML("Do you want to save your current data before starting a new session?"));
		
		
		final Button saveDataButton = new Button();
		if(refresh){

			saveDataButton.setType(ButtonType.SUCCESS);
			saveDataButton.setText("Saved!");
			saveDataButton.setEnabled(false);
		}else{
			saveDataButton.setText("Save..");
			saveDataButton.setType(ButtonType.DEFAULT);
		}
		
		saveDataButton.addClickHandler(new ClickHandler() {
			
			@Override
			public void onClick(ClickEvent event) {
				SaveWidget tempSaveWidget = new SaveWidget();
				SaveListener saveListener = new SaveListener() {
					
					@Override
					public void onEvent() {
						// TODO Auto-generated method stub
						flowPanel.clear();
						designPanel(true);
					}
				};
				flowPanel.clear();
				tempSaveWidget.setSaveListener(saveListener);
				flowPanel.add(tempSaveWidget.asWidget());

			}
		});
		
		flowPanel.add(saveDataButton);
		
		Button okButton = new Button();
		Button cancelButton = new Button();
		
		okButton.setText("OK!");
		cancelButton.setText("Cancel");
		okButton.addStyleName("newFeature-button");
		cancelButton.addStyleName("newFeature-button");
		okButton.setType(ButtonType.SUCCESS);
		cancelButton.setType(ButtonType.DEFAULT);
		
		okButton.addClickHandler(new ClickHandler() {
			
			@Override
			public void onClick(ClickEvent event) {
				Window.Location.reload();
			}
		});
		
		cancelButton.addClickHandler(new ClickHandler() {
			
			@Override
			public void onClick(ClickEvent event) {
				if(hideListener!=null){
					hideListener.onEvent();
				}
			}
		});
		
		flowPanel.add(new HTML("<br/>"));
		flowPanel.add(new HTML("<br/>"));
		flowPanel.add(okButton);
		flowPanel.add(cancelButton);
		
	}
	
	@Override
	public Widget asWidget() {
		return flowPanel;
	}

}
