package eu.dnetlib.enabling.ui.common.widgets;

import java.util.List;

import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.MultiWordSuggestOracle;
import com.google.gwt.user.client.ui.SuggestBox;


 

public class SuggestBoxWithLabel extends SuggestBox implements WithLabel, MyFormComponent<String>, AsyncCallback<List<String>> {

	private Label label;
	private String formName;
	private int position;
	
	public SuggestBoxWithLabel(String name, int position) {
		super(new MultiWordSuggestOracle());
		label = new Label(name);
		this.formName = name;
		this.position = position;
	}

	public void setSuggests(List<String> list) {
		MultiWordSuggestOracle oracle = (MultiWordSuggestOracle) getSuggestOracle();
		oracle.clear();
		oracle.addAll(list);
	}

	@Override
	public void onSuccess(List<String> list) {
		setSuggests(list);
	}

	@Override
	public void onFailure(Throwable arg0) {
		((MultiWordSuggestOracle) getSuggestOracle()).clear();
	}		

	@Override
	public Label getLabel() {
		return label;
	}

	@Override
	public void setTextLabel(String text) {
		label.setText(text);
	}

	@Override
	public String getFieldName() {
		return formName;
	}

	@Override
	public String getFieldValue() {
		return getValue();
	}

	@Override
	public int getPosition() {
		return position;
	}

}
