package com.airlock.iam.plugin.configeditor.field;

import com.airlock.iam.plugin.configeditor.data.PropertyAdapter;
import com.vaadin.v7.data.Property;
import com.vaadin.v7.data.Property.ValueChangeEvent;
import com.vaadin.v7.ui.AbstractField;
import com.vaadin.v7.ui.TextField;
import java.lang.annotation.Annotation;

public class MedusaTextField extends MedusaField<Annotation, String> {
   public MedusaTextField(PropertyAdapter<? extends Annotation> propertyAdapter) {
      super(propertyAdapter);
   }

   @Override
   public AbstractField<String> createInnerField() {
      TextField field = new TextField();
      field.setWidth("100%");
      field.setImmediate(true);
      field.setBuffered(false);
      field.setNullRepresentation("");
      return field;
   }

   public void setPropertyDataSource(Property newDataSource) {
      this.getInnerField().setPropertyDataSource(newDataSource);
      this.updateUiAndValidate();
   }

   public Property<?> getPropertyDataSource() {
      return this.getInnerField().getPropertyDataSource();
   }

   @Override
   public void valueChange(ValueChangeEvent event) {
      this.propagateNullValueIfFieldIsUndefined();
      super.valueChange(event);
   }
}
