package eu.dnetlib.client.shared;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.PopupPanel;
import com.sencha.gxt.widget.core.client.container.AbstractHtmlLayoutContainer.HtmlData;
import com.sencha.gxt.widget.core.client.container.HtmlLayoutContainer;

public class ConfirmBox {

	private PopupPanel dialogBox = new PopupPanel();
	private Button yes ;
	private Button no ;
	private Button saveAndProceed ;

	private HTML message;

	public ConfirmBox(String message) { 
		this(message, false);
	}
	public ConfirmBox(String message, boolean isDelete) { 
		saveAndProceed = new Button("Save changes and proceed");

		if(isDelete){
			yes = new Button("Yes");
			no = new Button("No");
			saveAndProceed.setVisible(false);
		}
		else{
			yes = new Button("Discard");
			no = new Button("Cancel");

		}
		dialogBox.setStyleName("confirmBox");
		
		HtmlLayoutContainer con = new HtmlLayoutContainer(getTableMarkup());
		dialogBox.add(con);
		this.message = new HTML(message);
		con.add(this.message, new HtmlData(".message"));
		con.add(no, new HtmlData(".no"));
		con.add(yes, new HtmlData(".yes"));
		con.add(saveAndProceed, new HtmlData(".saveAndProceed"));
		yes.setEnabled(true);
		no.setEnabled(true);
		saveAndProceed.setEnabled(true);

		yes.addClickHandler( new ClickHandler() {

 			public void onClick(ClickEvent event) {
		 
				yes.setEnabled(false);
				no.setEnabled(true);
				saveAndProceed.setEnabled(true);

				dialogBox.hide();


			}
		});
		no.addClickHandler(new ClickHandler() {
 
			public void onClick(ClickEvent event) {
 				no.setEnabled(false);
				yes.setEnabled(true);
				saveAndProceed.setEnabled(true);

				dialogBox.hide();

			}
		});
		saveAndProceed.addClickHandler(new ClickHandler() {
			 
			public void onClick(ClickEvent event) {
 				saveAndProceed.setEnabled(false);
				yes.setEnabled(true);
				no.setEnabled(true);

				dialogBox.hide();

			}
		});
	}

	public void addYesHandler(ClickHandler handler) {
		yes.addClickHandler(handler);
	}

	public void addNoHandler(ClickHandler handler) {
		no.addClickHandler(handler);
	}
    

	public PopupPanel getDialogBox() {
		return this.dialogBox;
	}

	public Button getYes() {
		return yes;
	}

	public Button getNo() {
		return no;
	}
	public Button getSaveAndProceed() {
		return saveAndProceed;
	}
 

	private native String getTableMarkup() /*-{
		return [ '<table width=100% cellpadding=0 cellspacing=10>',
				'<tr><td class=message rowspan=3></td></tr>',
				'<tr> <td class=yes ></td> <td class=no></td> <td class=saveAndProceed></td> </tr>',
				'</table>'

		].join("");
	}-*/;

}
