package au.com.vaadinutils.jasper.scheduler;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import com.vaadin.data.Property;
import com.vaadin.data.Validator;
import com.vaadin.data.Validator.InvalidValueException;
import com.vaadin.ui.CheckBox;
import com.vaadin.ui.Field;
import com.vaadin.ui.HorizontalLayout;
public class DayOfWeekCheckBoxes extends HorizontalLayout implements Field<String>
{
// Logger logger = LogManager.getLogger();
private static final long serialVersionUID = -3339061540299550077L;
private Property<String> datasource;
List<CheckBox> boxes = new LinkedList<CheckBox>();
private boolean required;
/**
* days of week as per DateTimeConstants mon = 1 , sun = 7
*/
public DayOfWeekCheckBoxes()
{
setSpacing(true);
setSizeFull();
String days1[] = new String[] { "Mon", "Tue", "Wed", "Thur", "Fri", "Sat", "Sun" };
int ctr = 1;
for (String day : days1)
{
CheckBox dayCheck = new CheckBox(day);
dayCheck.setData(ctr++);
addComponent(dayCheck);
boxes.add(dayCheck);
}
}
public void focus()
{
super.focus();
}
@Override
public boolean isInvalidCommitted()
{
return false;
}
@Override
public void setInvalidCommitted(boolean isCommitted)
{
}
@Override
public void commit() throws SourceException, InvalidValueException
{
datasource.setValue(getValue());
}
@Override
public void discard() throws SourceException
{
setValue(datasource.getValue());
}
@Override
public void setBuffered(boolean buffered)
{
// TODO Auto-generated method stub
}
@Override
public boolean isBuffered()
{
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isModified()
{
// TODO Auto-generated method stub
return false;
}
@Override
public void addValidator(Validator validator)
{
// TODO Auto-generated method stub
}
@Override
public void removeValidator(Validator validator)
{
// TODO Auto-generated method stub
}
@Override
public void removeAllValidators()
{
// TODO Auto-generated method stub
}
@Override
public Collection<Validator> getValidators()
{
// TODO Auto-generated method stub
return null;
}
@Override
public boolean isValid()
{
return true;
}
@Override
public void validate() throws InvalidValueException
{
if (isVisible() && getValue().length() == 0)
{
throw new InvalidValueException("You must select at least one day");
}
}
@Override
public boolean isInvalidAllowed()
{
return false;
}
@Override
public void setInvalidAllowed(boolean invalidValueAllowed) throws UnsupportedOperationException
{
}
@Override
public String getValue()
{
String value = "";
int i = 1;
for (CheckBox box : boxes)
{
if (box.getValue())
{
if (value.length() > 0)
{
value += ",";
}
value += i;
}
i++;
}
return value;
}
@Override
public void setValue(String newValue) throws com.vaadin.data.Property.ReadOnlyException
{
for (CheckBox box : boxes)
{
box.setValue(false);
}
if (newValue != null && newValue.length() > 0)
{
String[] values = newValue.split(",");
for (String value : values)
{
int index = Integer.parseInt(value);
if (index > 0)
{
boxes.get(index - 1).setValue(true);
}
}
}
}
@Override
public Class<? extends String> getType()
{
return String.class;
}
@Override
public void addValueChangeListener(com.vaadin.data.Property.ValueChangeListener listener)
{
// TODO Auto-generated method stub
}
@Override
public void addListener(com.vaadin.data.Property.ValueChangeListener listener)
{
// TODO Auto-generated method stub
}
@Override
public void removeValueChangeListener(com.vaadin.data.Property.ValueChangeListener listener)
{
// TODO Auto-generated method stub
}
@Override
public void removeListener(com.vaadin.data.Property.ValueChangeListener listener)
{
// TODO Auto-generated method stub
}
@Override
public void valueChange(com.vaadin.data.Property.ValueChangeEvent event)
{
// TODO Auto-generated method stub
}
@SuppressWarnings("unchecked")
@Override
public void setPropertyDataSource(@SuppressWarnings("rawtypes") Property newDataSource)
{
datasource = newDataSource;
if (datasource != null)
{
setValue(datasource.getValue());
}
else
{
setValue(null);
}
}
@SuppressWarnings("rawtypes")
@Override
public Property getPropertyDataSource()
{
return datasource;
}
@Override
public int getTabIndex()
{
return 0;
}
@Override
public void setTabIndex(int tabIndex)
{
}
@Override
public boolean isRequired()
{
return required;
}
@Override
public void setRequired(boolean required)
{
this.required = required;
}
@Override
public void setRequiredError(String requiredMessage)
{
// TODO Auto-generated method stub
}
@Override
public String getRequiredError()
{
return "You must select at least one day";
}
@Override
public boolean isEmpty()
{
// TODO Auto-generated method stub
return false;
}
@Override
public void clear()
{
// TODO Auto-generated method stub
}
}