/*
* Copyright 2000-2013 Vaadin Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.vaadin.tests.themes.valo;
import java.time.LocalDate;
import java.util.Date;
import java.util.Locale;
import com.vaadin.navigator.View;
import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent;
import com.vaadin.server.UserError;
import com.vaadin.shared.ui.datefield.DateResolution;
import com.vaadin.tests.components.TestDateField;
import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.CssLayout;
import com.vaadin.ui.FormLayout;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.InlineDateField;
import com.vaadin.ui.Label;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.themes.ValoTheme;
import com.vaadin.v7.data.fieldgroup.FieldGroup;
import com.vaadin.v7.data.util.ObjectProperty;
import com.vaadin.v7.data.util.PropertysetItem;
public class DateFields extends VerticalLayout implements View {
public DateFields() {
setSpacing(false);
Label h1 = new Label("Date Fields");
h1.addStyleName(ValoTheme.LABEL_H1);
addComponent(h1);
HorizontalLayout row = new HorizontalLayout();
row.addStyleName(ValoTheme.LAYOUT_HORIZONTAL_WRAPPING);
addComponent(row);
AbstractDateField<LocalDate, DateResolution> date = new TestDateField("Default resolution");
setDate(date);
row.addComponent(date);
date = new TestDateField("Error");
setDate(date);
date.setComponentError(new UserError("Fix it, now!"));
row.addComponent(date);
date = new TestDateField("Error, borderless");
setDate(date);
date.setComponentError(new UserError("Fix it, now!"));
date.addStyleName(ValoTheme.DATEFIELD_BORDERLESS);
row.addComponent(date);
CssLayout group = new CssLayout();
group.setCaption("Grouped with a Button");
group.addStyleName(ValoTheme.LAYOUT_COMPONENT_GROUP);
row.addComponent(group);
final TestDateField date2 = new TestDateField();
group.addComponent(date2);
Button today = new Button("Today", new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
date2.setValue(LocalDate.now());
}
});
group.addComponent(today);
date = new TestDateField("Default resolution, explicit size");
setDate(date);
row.addComponent(date);
date.setWidth("260px");
date.setHeight("60px");
date = new TestDateField("Day resolution");
setDate(date);
date.setResolution(DateResolution.DAY);
row.addComponent(date);
date = new TestDateField("Month resolution");
setDate(date);
date.setResolution(DateResolution.MONTH);
row.addComponent(date);
date = new TestDateField("Year resolution");
setDate(date);
date.setResolution(DateResolution.YEAR);
row.addComponent(date);
date = new TestDateField("Custom color");
setDate(date);
date.setResolution(DateResolution.DAY);
date.addStyleName("color1");
row.addComponent(date);
date = new TestDateField("Custom color");
setDate(date);
date.setResolution(DateResolution.DAY);
date.addStyleName("color2");
row.addComponent(date);
date = new TestDateField("Custom color");
setDate(date);
date.setResolution(DateResolution.DAY);
date.addStyleName("color3");
row.addComponent(date);
date = new TestDateField("Small");
setDate(date);
date.setResolution(DateResolution.DAY);
date.addStyleName(ValoTheme.DATEFIELD_SMALL);
row.addComponent(date);
date = new TestDateField("Large");
setDate(date);
date.setResolution(DateResolution.DAY);
date.addStyleName(ValoTheme.DATEFIELD_LARGE);
row.addComponent(date);
date = new TestDateField("Borderless");
setDate(date);
date.setResolution(DateResolution.DAY);
date.addStyleName(ValoTheme.DATEFIELD_BORDERLESS);
row.addComponent(date);
date = new TestDateField("Week numbers");
setDate(date);
date.setResolution(DateResolution.DAY);
date.setLocale(new Locale("fi", "fi"));
date.setShowISOWeekNumbers(true);
row.addComponent(date);
date = new TestDateField("Custom format");
setDate(date);
date.setDateFormat("E dd/MM/yyyy");
row.addComponent(date);
date = new TestDateField("Tiny");
setDate(date);
date.setResolution(DateResolution.DAY);
date.addStyleName(ValoTheme.DATEFIELD_TINY);
row.addComponent(date);
date = new TestDateField("Huge");
setDate(date);
date.setResolution(DateResolution.DAY);
date.addStyleName(ValoTheme.DATEFIELD_HUGE);
row.addComponent(date);
date = new InlineDateField("Date picker");
setDate(date);
setDateRange(date);
row.addComponent(date);
date = new InlineDateField("Date picker with week numbers");
setDate(date);
date.setLocale(new Locale("fi", "fi"));
date.setShowISOWeekNumbers(true);
row.addComponent(date);
PropertysetItem item = new PropertysetItem();
item.addItemProperty("date", new ObjectProperty<>(getDefaultOldDate()));
FormLayout form = new FormLayout();
form.setMargin(false);
FieldGroup binder = new FieldGroup(item);
form.addComponent(
binder.buildAndBind("Picker in read-only field group", "date"));
binder.setReadOnly(true);
row.addComponent(form);
}
private void setDateRange(AbstractDateField<LocalDate, DateResolution> date) {
date.setRangeStart(getDefaultDate());
LocalDate endDate = getDefaultDate();
date.setRangeEnd(endDate.plusMonths(1));
}
private void setDate(AbstractDateField<LocalDate, DateResolution> date) {
date.setValue(getDefaultDate());
}
private LocalDate getDefaultDate() {
if (ValoThemeUI.isTestMode()) {
return LocalDate.of(2014, 6, 7);
} else {
return LocalDate.now();
}
}
private Date getDefaultOldDate() {
if (ValoThemeUI.isTestMode()) {
return new Date(2014 - 1900, 5, 7);
} else {
return new Date();
}
}
@Override
public void enter(ViewChangeEvent event) {
// TODO Auto-generated method stub
}
}