Example usage for com.vaadin.ui.themes ValoTheme TEXTFIELD_TINY

List of usage examples for com.vaadin.ui.themes ValoTheme TEXTFIELD_TINY

Introduction

In this page you can find the example usage for com.vaadin.ui.themes ValoTheme TEXTFIELD_TINY.

Prototype

String TEXTFIELD_TINY

To view the source code for com.vaadin.ui.themes ValoTheme TEXTFIELD_TINY.

Click Source Link

Document

Tiny size text field.

Usage

From source file:com.coatl.vaadin.grids.ixGridTabla.java

public final void configurar() {
    getEncabezado().addComponent(titulo);
    titulo.setCaptionAsHtml(true);//from  w ww  . j a  v  a  2 s.c om
    titulo.setStyleName("titulo2");

    sepFiltro.setCaptionAsHtml(true);
    sepFiltro.setWidth("21px");
    textoFiltro.setHeight("32px");

    getEncabezado().addComponent(sepFiltro);
    getEncabezado().addComponent(textoFiltro);
    textoFiltro.setStyleName("margintop4");

    filtro.addStyleName(ValoTheme.TEXTFIELD_TINY);
    getEncabezado().addComponent(getFiltro());
    getFiltro().addStyleName("margintop4");
    getEncabezado().addComponent(cualquiera);
    cualquiera.addStyleName("margintop6");
    //cualquiera.addStyleName("margin3");
    //cualquiera.addStyleName("margintop6");
    //this.getEncabezado().setMargin(true);

    this.setComponenteSuperior(getEncabezado());

    anterior.setHeight("25px");
    siguiente.setHeight("25px");

    paginador.addComponent(anterior);
    paginador.addComponent(infoPaginas);
    paginador.addComponent(siguiente);
    paginador.addComponent(infoRenglones);

    anterior.addClickListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent event) {
            pagina--;
            if (pagina < 0) {
                pagina = 0;
            }
            armarTabla();
        }
    });

    siguiente.addClickListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent event) {
            pagina++;

            long maxpag = 0;
            if (renglonesPorPagina > 0) {
                long tReng = 0;
                if (tabla != null) {
                    tReng = tabla.getTotalDeRenglones();
                }
                maxpag = tReng / renglonesPorPagina;
            }

            if (pagina > maxpag) {
                pagina = maxpag;
            }
            armarTabla();
        }
    });

    cualquiera.addListener(new Property.ValueChangeListener() {
        @Override
        public void valueChange(ValueChangeEvent event) {
            armarTabla();
        }
    });

    this.setComponenteInferior(paginador);

    filtro.addListener(new ixCambioDeFiltroGridTabla(this));

}

From source file:com.dungnv.streetfood.view.DishSearchDetail.java

private void init() {
    layout = new VerticalLayout();
    layout.setSpacing(true);/* w  ww .ja v  a2s . c  o  m*/
    layout.setMargin(true);

    form = new FormLayout();
    form.addStyleName("light");
    //                form.addStyleName("outlined");
    form.setSizeFull();
    form.setMargin(true);
    form.setSpacing(true);
    layout.addComponent(form);

    tfName = new TextField(BundleUtils.getLanguage("lbl.dish.name"));
    tfName.setWidth(80.0f, Unit.PERCENTAGE);
    form.addComponent(tfName);

    tfShortDescription = new TextField(BundleUtils.getLanguage("lbl.dish.shortDescription"));
    tfShortDescription.setWidth(80.0f, Unit.PERCENTAGE);
    form.addComponent(tfShortDescription);

    HorizontalLayout hlStatus = new HorizontalLayout();
    hlStatus.setCaption(BundleUtils.getLanguage("lbl.status"));
    hlStatus.addStyleName("horizontal");
    hlStatus.setSpacing(true);
    form.addComponent(hlStatus);

    cbActive = new CheckBox(BundleUtils.getLanguage("lbl.active"));
    cbActive.setValue(Boolean.TRUE);
    hlStatus.addComponent(cbActive);

    cbInActive = new CheckBox(BundleUtils.getLanguage("lbl.inActive"));
    cbInActive.setValue(Boolean.TRUE);
    hlStatus.addComponent(cbInActive);

    String regexDouble = "[0-9]*.?[0-9]?";
    String regexInteger = "[0-9]*";

    tfViewCountFrom = new TextField();
    tfViewCountFrom.setWidth(200.0f, Unit.PIXELS);
    tfViewCountFrom.addStyleName(ValoTheme.TEXTFIELD_TINY);
    tfViewCountFrom.addStyleName(ValoTheme.TEXTFIELD_ALIGN_RIGHT);

    CSValidator vlViewCountFrom = new CSValidator();
    vlViewCountFrom.extend(tfViewCountFrom);
    vlViewCountFrom.setRegExp(regexInteger);
    vlViewCountFrom.setPreventInvalidTyping(true);
    tfViewCountFrom.addValidator(new RegexpValidator(regexInteger, "Not a number"));

    tfViewCountTo = new TextField();
    tfViewCountTo.setWidth(200.0f, Unit.PIXELS);
    tfViewCountTo.addStyleName(ValoTheme.TEXTFIELD_TINY);
    tfViewCountTo.addStyleName(ValoTheme.TEXTFIELD_ALIGN_RIGHT);
    CSValidator vlViewCountTo = new CSValidator();
    vlViewCountTo.extend(tfViewCountTo);
    vlViewCountTo.setRegExp(regexInteger);
    vlViewCountTo.setPreventInvalidTyping(true);
    tfViewCountTo.addValidator(new RegexpValidator(regexInteger, "Not a number"));

    HorizontalLayout hlViewCount = new HorizontalLayout(tfViewCountFrom, new Label("-"), tfViewCountTo);
    hlViewCount.setCaption(BundleUtils.getLanguage("lbl.dish.viewCount"));
    hlViewCount.setSpacing(true);
    form.addComponent(hlViewCount);

    tfCommentCountFrom = new TextField();
    tfCommentCountFrom.setWidth(200.0f, Unit.PIXELS);
    tfCommentCountFrom.addStyleName(ValoTheme.TEXTFIELD_TINY);
    tfCommentCountFrom.addStyleName(ValoTheme.TEXTFIELD_ALIGN_RIGHT);

    CSValidator vlCommentCountFrom = new CSValidator();
    vlCommentCountFrom.extend(tfCommentCountFrom);
    vlCommentCountFrom.setRegExp(regexInteger);
    vlCommentCountFrom.setPreventInvalidTyping(true);
    tfCommentCountFrom.addValidator(new RegexpValidator(regexInteger, "Not a number"));

    tfCommentCountTo = new TextField();
    tfCommentCountTo.setWidth(200.0f, Unit.PIXELS);
    tfCommentCountTo.addStyleName(ValoTheme.TEXTFIELD_TINY);
    tfCommentCountTo.addStyleName(ValoTheme.TEXTFIELD_ALIGN_RIGHT);
    CSValidator vlCommentCountTo = new CSValidator();
    vlCommentCountTo.extend(tfCommentCountTo);
    vlCommentCountTo.setRegExp(regexInteger);
    vlCommentCountTo.setPreventInvalidTyping(true);
    tfCommentCountTo.addValidator(new RegexpValidator(regexInteger, "Not a number"));

    HorizontalLayout hlCommentCount = new HorizontalLayout(tfCommentCountFrom, new Label("-"),
            tfCommentCountTo);
    hlCommentCount.setCaption(BundleUtils.getLanguage("lbl.dish.commentCount"));
    hlCommentCount.setSpacing(true);
    form.addComponent(hlCommentCount);

    tfShareCountFrom = new TextField();
    tfShareCountFrom.setWidth(200.0f, Unit.PIXELS);
    tfShareCountFrom.addStyleName(ValoTheme.TEXTFIELD_TINY);
    tfShareCountFrom.addStyleName(ValoTheme.TEXTFIELD_ALIGN_RIGHT);

    CSValidator vlShareCountFrom = new CSValidator();
    vlShareCountFrom.extend(tfShareCountFrom);
    vlShareCountFrom.setRegExp(regexInteger);
    vlShareCountFrom.setPreventInvalidTyping(true);
    tfShareCountFrom.addValidator(new RegexpValidator(regexInteger, "Not a number"));

    tfShareCountTo = new TextField();
    tfShareCountTo.setWidth(200.0f, Unit.PIXELS);
    tfShareCountTo.addStyleName(ValoTheme.TEXTFIELD_TINY);
    tfShareCountTo.addStyleName(ValoTheme.TEXTFIELD_ALIGN_RIGHT);
    CSValidator vlShareCountTo = new CSValidator();
    vlShareCountTo.extend(tfShareCountTo);
    vlShareCountTo.setRegExp(regexInteger);
    vlShareCountTo.setPreventInvalidTyping(true);
    tfShareCountTo.addValidator(new RegexpValidator(regexInteger, "Not a number"));

    HorizontalLayout hlShareCount = new HorizontalLayout(tfShareCountFrom, new Label("-"), tfShareCountTo);
    hlShareCount.setCaption(BundleUtils.getLanguage("lbl.dish.shareCount"));
    hlShareCount.setSpacing(true);
    form.addComponent(hlShareCount);

    tfRatingFrom = new TextField();
    tfRatingFrom.setWidth(200.0f, Unit.PIXELS);
    tfRatingFrom.addStyleName(ValoTheme.TEXTFIELD_TINY);
    tfRatingFrom.addStyleName(ValoTheme.TEXTFIELD_ALIGN_RIGHT);

    CSValidator vlRatingFrom = new CSValidator();
    vlRatingFrom.extend(tfRatingFrom);
    vlRatingFrom.setRegExp(regexDouble);
    vlRatingFrom.setPreventInvalidTyping(true);
    tfRatingFrom.addValidator(new RegexpValidator(regexDouble, "Not a number"));

    tfRatingTo = new TextField();
    tfRatingTo.setWidth(200.0f, Unit.PIXELS);
    tfRatingTo.addStyleName(ValoTheme.TEXTFIELD_TINY);
    tfRatingTo.addStyleName(ValoTheme.TEXTFIELD_ALIGN_RIGHT);
    CSValidator vlRatingTo = new CSValidator();
    vlRatingTo.extend(tfRatingTo);
    vlRatingTo.setRegExp(regexDouble);
    vlRatingTo.setPreventInvalidTyping(true);
    tfRatingTo.addValidator(new RegexpValidator(regexDouble, "Not a number"));

    HorizontalLayout hlRating = new HorizontalLayout(tfRatingFrom, new Label("-"), tfRatingTo);
    hlRating.setCaption(BundleUtils.getLanguage("lbl.dish.rating"));
    hlRating.setSpacing(true);
    form.addComponent(hlRating);

    tagSuggestFieldUI = new TagSuggestFieldUI(false);
    tagSuggestFieldUI.setWidth(80.0f, Unit.PERCENTAGE);
    form.addComponent(tagSuggestFieldUI);

    Map<String, LocaleDTO> mapLocale = ClientServiceImpl.getAllLocales();
    if (mapLocale != null && !mapLocale.isEmpty()) {
        List<LocaleDTO> listLocale = new ArrayList<>(mapLocale.values());
        listLocale.stream().map((localeDTO) -> new OptionGroupUI(localeDTO.getLocale()//
                , localeDTO.getId())).forEach((ogLocale) -> {
                    form.addComponent(ogLocale);
                    listOgLocale.add(ogLocale);
                });
    }

    HorizontalLayout hlButton = new HorizontalLayout();
    hlButton.setSpacing(true);
    hlButton.setMargin(true);
    form.addComponent(hlButton);

    btnSearch = new Button(BundleUtils.getLanguage("lbl.search"), FontAwesome.SEARCH);
    hlButton.addComponent(btnSearch);

    btnExportExcel = new Button(BundleUtils.getLanguage("lbl.exportExcel"), FontAwesome.FILE_EXCEL_O);
    hlButton.addComponent(btnExportExcel);

    btnExportXML = new Button(BundleUtils.getLanguage("lbl.exportXML"), FontAwesome.FILE_CODE_O);
    hlButton.addComponent(btnExportXML);

    btnCancel = new Button(BundleUtils.getLanguage("lbl.cancel"), FontAwesome.BAN);
    hlButton.addComponent(btnCancel);

}

From source file:com.dungnv.streetfood.view.RestaurantSearchDetail.java

private void init() {
    layout = new VerticalLayout();
    layout.setSpacing(true);//from  w  w w .  j  a  v a  2s  .c o  m
    layout.setMargin(true);

    form = new FormLayout();
    form.addStyleName("light");
    //                form.addStyleName("outlined");
    form.setSizeFull();
    form.setMargin(true);
    form.setSpacing(true);
    layout.addComponent(form);

    tfName = new TextField(BundleUtils.getLanguage("lbl.restaurant.name"));
    tfName.setWidth(80.0f, Unit.PERCENTAGE);
    form.addComponent(tfName);

    tfIntroduce = new TextField(BundleUtils.getLanguage("lbl.restaurant.introduce"));
    tfIntroduce.setWidth(80.0f, Unit.PERCENTAGE);
    form.addComponent(tfIntroduce);

    HorizontalLayout hlStatus = new HorizontalLayout();
    hlStatus.setCaption(BundleUtils.getLanguage("lbl.status"));
    hlStatus.addStyleName("horizontal");
    hlStatus.setSpacing(true);
    form.addComponent(hlStatus);

    cbActive = new CheckBox(BundleUtils.getLanguage("lbl.active"));
    cbActive.setValue(Boolean.TRUE);
    hlStatus.addComponent(cbActive);

    cbInActive = new CheckBox(BundleUtils.getLanguage("lbl.inActive"));
    cbInActive.setValue(Boolean.TRUE);
    hlStatus.addComponent(cbInActive);

    tfAddress = new TextField(BundleUtils.getLanguage("lbl.restaurant.address"));
    tfAddress.setWidth(80.0f, Unit.PERCENTAGE);
    form.addComponent(tfAddress);

    tfPhoneNumber = new TextField(BundleUtils.getLanguage("lbl.restaurant.phoneNumber"));
    tfPhoneNumber.setWidth(80.0f, Unit.PERCENTAGE);
    form.addComponent(tfPhoneNumber);

    tfCapacity = new TextField(BundleUtils.getLanguage("lbl.restaurant.capacity"));
    tfCapacity.setWidth(80.0f, Unit.PERCENTAGE);
    form.addComponent(tfCapacity);

    HorizontalLayout hlCarParking = new HorizontalLayout();
    hlCarParking.setCaption(BundleUtils.getLanguage("lbl.restaurant.carParking"));
    hlCarParking.addStyleName("horizontal");
    hlCarParking.setSpacing(true);
    form.addComponent(hlCarParking);

    cbCarParkingYes = new CheckBox(BundleUtils.getLanguage("lbl.yes"));
    cbCarParkingYes.setValue(Boolean.TRUE);
    hlCarParking.addComponent(cbCarParkingYes);

    cbCarParkingNo = new CheckBox(BundleUtils.getLanguage("lbl.no"));
    cbCarParkingNo.setValue(Boolean.TRUE);
    hlCarParking.addComponent(cbCarParkingNo);

    HorizontalLayout hlMotobikeParking = new HorizontalLayout();
    hlMotobikeParking.setCaption(BundleUtils.getLanguage("lbl.status"));
    hlMotobikeParking.addStyleName("horizontal");
    hlMotobikeParking.setSpacing(true);
    form.addComponent(hlMotobikeParking);

    cbMotobikeParkingYes = new CheckBox(BundleUtils.getLanguage("lbl.yes"));
    cbMotobikeParkingYes.setValue(Boolean.TRUE);
    hlMotobikeParking.addComponent(cbMotobikeParkingYes);

    cbMotobikeParkingNo = new CheckBox(BundleUtils.getLanguage("lbl.no"));
    cbMotobikeParkingNo.setValue(Boolean.TRUE);
    hlMotobikeParking.addComponent(cbMotobikeParkingNo);

    tfOperatingTimeStart = new TimeField();
    tfOperatingTimeEnd = new TimeField();

    HorizontalLayout hlOperatingTime = new HorizontalLayout(tfOperatingTimeStart, new Label(" - "),
            tfOperatingTimeEnd);
    hlOperatingTime.setCaption(BundleUtils.getLanguage("lbl.restaurant.operatingTime"));
    hlOperatingTime.setSpacing(true);
    form.addComponent(hlOperatingTime);

    String regexDouble = "[0-9]*.?[0-9]?";
    String regexInteger = "[0-9]*";

    tfViewCountFrom = new TextField();
    tfViewCountFrom.setWidth(200.0f, Unit.PIXELS);
    tfViewCountFrom.addStyleName(ValoTheme.TEXTFIELD_TINY);
    tfViewCountFrom.addStyleName(ValoTheme.TEXTFIELD_ALIGN_RIGHT);

    CSValidator vlViewCountFrom = new CSValidator();
    vlViewCountFrom.extend(tfViewCountFrom);
    vlViewCountFrom.setRegExp(regexInteger);
    vlViewCountFrom.setPreventInvalidTyping(true);
    tfViewCountFrom.addValidator(new RegexpValidator(regexInteger, "Not a number"));

    tfViewCountTo = new TextField();
    tfViewCountTo.setWidth(200.0f, Unit.PIXELS);
    tfViewCountTo.addStyleName(ValoTheme.TEXTFIELD_TINY);
    tfViewCountTo.addStyleName(ValoTheme.TEXTFIELD_ALIGN_RIGHT);
    CSValidator vlViewCountTo = new CSValidator();
    vlViewCountTo.extend(tfViewCountTo);
    vlViewCountTo.setRegExp(regexInteger);
    vlViewCountTo.setPreventInvalidTyping(true);
    tfViewCountTo.addValidator(new RegexpValidator(regexInteger, "Not a number"));

    HorizontalLayout hlViewCount = new HorizontalLayout(tfViewCountFrom, new Label("-"), tfViewCountTo);
    hlViewCount.setCaption(BundleUtils.getLanguage("lbl.restaurant.viewCount"));
    hlViewCount.setSpacing(true);
    form.addComponent(hlViewCount);

    tfCommentCountFrom = new TextField();
    tfCommentCountFrom.setWidth(200.0f, Unit.PIXELS);
    tfCommentCountFrom.addStyleName(ValoTheme.TEXTFIELD_TINY);
    tfCommentCountFrom.addStyleName(ValoTheme.TEXTFIELD_ALIGN_RIGHT);

    CSValidator vlCommentCountFrom = new CSValidator();
    vlCommentCountFrom.extend(tfCommentCountFrom);
    vlCommentCountFrom.setRegExp(regexInteger);
    vlCommentCountFrom.setPreventInvalidTyping(true);
    tfCommentCountFrom.addValidator(new RegexpValidator(regexInteger, "Not a number"));

    tfCommentCountTo = new TextField();
    tfCommentCountTo.setWidth(200.0f, Unit.PIXELS);
    tfCommentCountTo.addStyleName(ValoTheme.TEXTFIELD_TINY);
    tfCommentCountTo.addStyleName(ValoTheme.TEXTFIELD_ALIGN_RIGHT);
    CSValidator vlCommentCountTo = new CSValidator();
    vlCommentCountTo.extend(tfCommentCountTo);
    vlCommentCountTo.setRegExp(regexInteger);
    vlCommentCountTo.setPreventInvalidTyping(true);
    tfCommentCountTo.addValidator(new RegexpValidator(regexInteger, "Not a number"));

    HorizontalLayout hlCommentCount = new HorizontalLayout(tfCommentCountFrom, new Label("-"),
            tfCommentCountTo);
    hlCommentCount.setCaption(BundleUtils.getLanguage("lbl.restaurant.commentCount"));
    hlCommentCount.setSpacing(true);
    form.addComponent(hlCommentCount);

    tfShareCountFrom = new TextField();
    tfShareCountFrom.setWidth(200.0f, Unit.PIXELS);
    tfShareCountFrom.addStyleName(ValoTheme.TEXTFIELD_TINY);
    tfShareCountFrom.addStyleName(ValoTheme.TEXTFIELD_ALIGN_RIGHT);

    CSValidator vlShareCountFrom = new CSValidator();
    vlShareCountFrom.extend(tfShareCountFrom);
    vlShareCountFrom.setRegExp(regexInteger);
    vlShareCountFrom.setPreventInvalidTyping(true);
    tfShareCountFrom.addValidator(new RegexpValidator(regexInteger, "Not a number"));

    tfShareCountTo = new TextField();
    tfShareCountTo.setWidth(200.0f, Unit.PIXELS);
    tfShareCountTo.addStyleName(ValoTheme.TEXTFIELD_TINY);
    tfShareCountTo.addStyleName(ValoTheme.TEXTFIELD_ALIGN_RIGHT);
    CSValidator vlShareCountTo = new CSValidator();
    vlShareCountTo.extend(tfShareCountTo);
    vlShareCountTo.setRegExp(regexInteger);
    vlShareCountTo.setPreventInvalidTyping(true);
    tfShareCountTo.addValidator(new RegexpValidator(regexInteger, "Not a number"));

    HorizontalLayout hlShareCount = new HorizontalLayout(tfShareCountFrom, new Label("-"), tfShareCountTo);
    hlShareCount.setCaption(BundleUtils.getLanguage("lbl.restaurant.shareCount"));
    hlShareCount.setSpacing(true);
    form.addComponent(hlShareCount);

    tfRatingFrom = new TextField();
    tfRatingFrom.setWidth(200.0f, Unit.PIXELS);
    tfRatingFrom.addStyleName(ValoTheme.TEXTFIELD_TINY);
    tfRatingFrom.addStyleName(ValoTheme.TEXTFIELD_ALIGN_RIGHT);

    CSValidator vlRatingFrom = new CSValidator();
    vlRatingFrom.extend(tfRatingFrom);
    vlRatingFrom.setRegExp(regexDouble);
    vlRatingFrom.setPreventInvalidTyping(true);
    tfRatingFrom.addValidator(new RegexpValidator(regexDouble, "Not a number"));

    tfRatingTo = new TextField();
    tfRatingTo.setWidth(200.0f, Unit.PIXELS);
    tfRatingTo.addStyleName(ValoTheme.TEXTFIELD_TINY);
    tfRatingTo.addStyleName(ValoTheme.TEXTFIELD_ALIGN_RIGHT);
    CSValidator vlRatingTo = new CSValidator();
    vlRatingTo.extend(tfRatingTo);
    vlRatingTo.setRegExp(regexDouble);
    vlRatingTo.setPreventInvalidTyping(true);
    tfRatingTo.addValidator(new RegexpValidator(regexDouble, "Not a number"));

    HorizontalLayout hlRating = new HorizontalLayout(tfRatingFrom, new Label("-"), tfRatingTo);
    hlRating.setCaption(BundleUtils.getLanguage("lbl.restaurant.rating"));
    hlRating.setSpacing(true);
    form.addComponent(hlRating);

    tfPriceFromVn = new TextField();
    tfPriceFromVn.setWidth(200.0f, Unit.PIXELS);
    tfPriceFromVn.addStyleName(ValoTheme.TEXTFIELD_TINY);
    tfPriceFromVn.addStyleName(ValoTheme.TEXTFIELD_ALIGN_RIGHT);

    CSValidator vlPriceFromVn = new CSValidator();
    vlPriceFromVn.extend(tfPriceFromVn);
    vlPriceFromVn.setRegExp(regexDouble);
    vlPriceFromVn.setPreventInvalidTyping(true);
    tfPriceFromVn.addValidator(new RegexpValidator(regexDouble, "Not a number"));

    tfPriceToVn = new TextField();
    tfPriceToVn.setWidth(200.0f, Unit.PIXELS);
    tfPriceToVn.addStyleName(ValoTheme.TEXTFIELD_TINY);
    tfPriceToVn.addStyleName(ValoTheme.TEXTFIELD_ALIGN_RIGHT);

    CSValidator vlPriceToVn = new CSValidator();
    vlPriceToVn.extend(tfPriceToVn);
    vlPriceToVn.setRegExp(regexDouble);
    vlPriceToVn.setPreventInvalidTyping(true);
    tfPriceToVn.addValidator(new RegexpValidator(regexDouble, "Not a number"));

    HorizontalLayout hlPriceVn = new HorizontalLayout(tfPriceFromVn, new Label("-"), tfPriceToVn,
            new Label("VND"));
    hlPriceVn.setCaption(BundleUtils.getLanguage("lbl.restaurant.priceVn"));
    hlPriceVn.setSpacing(true);
    form.addComponent(hlPriceVn);

    tfPriceFromEn = new TextField();
    tfPriceFromEn.setWidth(200.0f, Unit.PIXELS);
    tfPriceFromEn.addStyleName(ValoTheme.TEXTFIELD_TINY);
    tfPriceFromEn.addStyleName(ValoTheme.TEXTFIELD_ALIGN_RIGHT);

    CSValidator vlPriceFromEn = new CSValidator();
    vlPriceFromEn.extend(tfPriceFromEn);
    vlPriceFromEn.setRegExp(regexDouble);
    vlPriceFromEn.setPreventInvalidTyping(true);
    tfPriceFromEn.addValidator(new RegexpValidator(regexDouble, "Not a number"));

    tfPriceToEn = new TextField();
    tfPriceToEn.setWidth(200.0f, Unit.PIXELS);
    tfPriceToEn.addStyleName(ValoTheme.TEXTFIELD_TINY);
    tfPriceToEn.addStyleName(ValoTheme.TEXTFIELD_ALIGN_RIGHT);

    CSValidator vlPriceToEn = new CSValidator();
    vlPriceToEn.extend(tfPriceToEn);
    vlPriceToEn.setRegExp(regexDouble);
    vlPriceToEn.setPreventInvalidTyping(true);
    tfPriceToEn.addValidator(new RegexpValidator(regexDouble, "Not a number"));

    HorizontalLayout hlPriceEn = new HorizontalLayout(tfPriceFromEn, new Label("-"), tfPriceToEn,
            new Label("USD"));
    hlPriceEn.setCaption(BundleUtils.getLanguage("lbl.restaurant.priceEn"));
    hlPriceEn.setSpacing(true);
    form.addComponent(hlPriceEn);

    tfWaitingTimeFrom = new TextField();
    tfWaitingTimeFrom.setWidth(200.0f, Unit.PIXELS);
    tfWaitingTimeFrom.addStyleName(ValoTheme.TEXTFIELD_TINY);
    tfWaitingTimeFrom.addStyleName(ValoTheme.TEXTFIELD_ALIGN_RIGHT);

    CSValidator vlWaitingTimeFrom = new CSValidator();
    vlWaitingTimeFrom.extend(tfWaitingTimeFrom);
    vlWaitingTimeFrom.setRegExp(regexDouble);
    vlWaitingTimeFrom.setPreventInvalidTyping(true);
    tfWaitingTimeFrom.addValidator(new RegexpValidator(regexDouble, "Not a number"));

    tfWaitingTimeTo = new TextField();
    tfWaitingTimeTo.setWidth(200.0f, Unit.PIXELS);
    tfWaitingTimeTo.addStyleName(ValoTheme.TEXTFIELD_TINY);
    tfWaitingTimeTo.addStyleName(ValoTheme.TEXTFIELD_ALIGN_RIGHT);
    CSValidator vlWaitingTimeTo = new CSValidator();
    vlWaitingTimeTo.extend(tfWaitingTimeTo);
    vlWaitingTimeTo.setRegExp(regexDouble);
    vlWaitingTimeTo.setPreventInvalidTyping(true);
    tfWaitingTimeTo.addValidator(new RegexpValidator(regexDouble, "Not a number"));

    HorizontalLayout hlWaitingTime = new HorizontalLayout(tfWaitingTimeFrom, new Label("-"), tfWaitingTimeTo);
    hlWaitingTime.setCaption(BundleUtils.getLanguage("lbl.dish.waitingTime"));
    hlWaitingTime.setSpacing(true);
    form.addComponent(hlWaitingTime);

    Map<String, LocaleDTO> mapLocale = ClientServiceImpl.getAllLocales();
    if (mapLocale != null && !mapLocale.isEmpty()) {
        List<LocaleDTO> listLocale = new ArrayList<>(mapLocale.values());
        listLocale.stream().map((localeDTO) -> new OptionGroupUI(localeDTO.getLocale()//
                , localeDTO.getId())).forEach((ogLocale) -> {
                    form.addComponent(ogLocale);
                    listOgLocale.add(ogLocale);
                });
    }

    tagSuggestFieldUI = new TagSuggestFieldUI(false);
    tagSuggestFieldUI.setWidth(80.0f, Unit.PERCENTAGE);
    form.addComponent(tagSuggestFieldUI);

    HorizontalLayout hlButton = new HorizontalLayout();
    hlButton.setSpacing(true);
    hlButton.setMargin(true);
    form.addComponent(hlButton);

    btnSearch = new Button(BundleUtils.getLanguage("lbl.search"), FontAwesome.SEARCH);
    hlButton.addComponent(btnSearch);

    btnExportExcel = new Button(BundleUtils.getLanguage("lbl.exportExcel"), FontAwesome.FILE_EXCEL_O);
    hlButton.addComponent(btnExportExcel);

    btnExportXML = new Button(BundleUtils.getLanguage("lbl.exportXML"), FontAwesome.FILE_CODE_O);
    hlButton.addComponent(btnExportXML);

    btnCancel = new Button(BundleUtils.getLanguage("lbl.cancel"), FontAwesome.BAN);
    hlButton.addComponent(btnCancel);

}

From source file:com.mechanicshop.components.DataEntryLayout.java

private void buildLayout() {
    FormLayout formLayout1 = new FormLayout();

    formLayout1.setMargin(new MarginInfo(false, false, false, true));
    formLayout1.setSpacing(true);/*from   w w w  .j a v a  2s. c o  m*/

    FormLayout formLayout2 = new FormLayout();
    formLayout2.setMargin(new MarginInfo(false, false, false, true));
    formLayout2.setSpacing(true);

    FormLayout formLayout3 = new FormLayout();
    formLayout3.setMargin(new MarginInfo(false, true, false, true));
    formLayout3.setSpacing(true);

    tfTag.setStyleName(ValoTheme.TEXTFIELD_TINY);
    tfTag.setWidth("180px");
    tfTag.setMaxLength(3);
    tfTag.setNullRepresentation("");
    tfPhone.setStyleName(ValoTheme.TEXTFIELD_TINY);
    tfPhone.setWidth("180px");
    tfPhone.setNullRepresentation("");
    tfPhone.setMaxLength(11);
    tfName.setStyleName(ValoTheme.TEXTFIELD_TINY);
    tfName.setWidth("180px");
    tfName.setMaxLength(50);
    tfName.setNullRepresentation("");
    tfVehicle.setWidth("180px");
    tfVehicle.setStyleName(ValoTheme.TEXTFIELD_TINY);
    tfVehicle.setMaxLength(75);
    tfVehicle.setNullRepresentation("");
    tfLicensePlate.setStyleName(ValoTheme.TEXTFIELD_TINY);
    tfLicensePlate.setWidth("180px");
    tfLicensePlate.setMaxLength(10);
    tfLicensePlate.setNullRepresentation("");
    tfVin.setWidth("180px");
    tfVin.setStyleName(ValoTheme.TEXTFIELD_TINY);
    tfVin.setMaxLength(17);
    tfVin.setNullRepresentation("");
    dfInShop.setImmediate(true);
    dfInShop.addStyleName(ValoTheme.DATEFIELD_TINY);
    dfInShop.setInputPrompt("Select");
    dfInShop.setWidth("120px");

    dfOutShop.setImmediate(true);
    dfOutShop.addStyleName(ValoTheme.DATEFIELD_TINY);
    dfOutShop.setInputPrompt("Select");
    dfOutShop.setWidth("120px");

    nsStatus.addItems("In", "Out", "Pending", "Ready", "Comeback");
    nsStatus.setImmediate(true);
    nsStatus.setWidth("120px");
    nsStatus.setStyleName(ValoTheme.COMBOBOX_TINY);
    nsStatus.setValue("In");
    tfMileage.setWidth("120px");
    tfMileage.setStyleName(ValoTheme.TEXTFIELD_TINY);
    tfMileage.setMaxLength(6);
    tfMileage.setNullRepresentation("");
    tfPicked.setWidth("120px");
    tfPicked.setStyleName(ValoTheme.TEXTFIELD_TINY);
    tfPicked.setMaxLength(3);
    tfPicked.setNullRepresentation("");
    tfPayment.setWidth("180px");
    tfPayment.setStyleName(ValoTheme.TEXTFIELD_TINY);
    tfPayment.setMaxLength(50);
    tfPayment.setNullRepresentation("");
    taRemarks.setWidth("500px");
    taRemarks.setStyleName(ValoTheme.TEXTFIELD_TINY);
    taRemarks.setMaxLength(500);
    taRemarks.setNullRepresentation("");
    tfRebuilder.setWidth("180px");
    tfRebuilder.setStyleName(ValoTheme.TEXTFIELD_TINY);
    tfRebuilder.setMaxLength(20);
    tfRebuilder.setNullRepresentation("");
    tfInstaller.setWidth("180px");
    tfInstaller.setStyleName(ValoTheme.TEXTFIELD_TINY);
    tfInstaller.setMaxLength(20);
    tfInstaller.setNullRepresentation("");
    tfFirstCheckBy.setWidth("500px");
    tfFirstCheckBy.setStyleName(ValoTheme.TEXTFIELD_TINY);
    tfFirstCheckBy.setMaxLength(100);
    tfFirstCheckBy.setNullRepresentation("");
    tfSecondCheckBy.setWidth("500px");
    tfSecondCheckBy.setStyleName(ValoTheme.TEXTFIELD_TINY);
    tfSecondCheckBy.setMaxLength(100);
    tfSecondCheckBy.setNullRepresentation("");
    dfFirstCheckDate.setImmediate(true);
    dfFirstCheckDate.addStyleName(ValoTheme.DATEFIELD_TINY);
    dfFirstCheckDate.setInputPrompt("Select");
    dfFirstCheckDate.setWidth("120px");

    dfSecondCheckDate.setImmediate(true);
    dfSecondCheckDate.addStyleName(ValoTheme.DATEFIELD_TINY);
    dfSecondCheckDate.setInputPrompt("Select");
    dfSecondCheckDate.setWidth("120px");

    taMedia.setWidth("500px");
    taMedia.setStyleName(ValoTheme.TEXTFIELD_TINY);
    taMedia.setNullRepresentation("");
    taMedia2.setWidth("500px");
    taMedia2.setStyleName(ValoTheme.TEXTFIELD_TINY);
    taMedia2.setNullRepresentation("");
    tfReferedBy.setWidth("180px");
    tfReferedBy.setStyleName(ValoTheme.TEXTFIELD_TINY);
    tfReferedBy.setMaxLength(20);
    tfReferedBy.setNullRepresentation("");
    tfWarrantyLimit.setWidth("180px");
    tfWarrantyLimit.setStyleName(ValoTheme.TEXTFIELD_TINY);
    tfWarrantyLimit.setMaxLength(5);
    tfWarrantyLimit.setNullRepresentation("");
    nsWarranty.setWidth("120px");
    nsWarranty.setStyleName(ValoTheme.TEXTFIELD_TINY);
    nsWarranty.addItems("YES", "NO");
    nsWarranty.setValue("NO");
    nsWarranty.setStyleName(ValoTheme.COMBOBOX_TINY);

    nsSMS.setWidth("120px");
    nsSMS.setStyleName(ValoTheme.TEXTFIELD_TINY);
    nsSMS.addItems("YES", "NO");
    nsSMS.setValue("NO");
    nsComeback.setWidth("120px");
    nsComeback.setStyleName(ValoTheme.TEXTFIELD_TINY);
    nsComeback.addItems("YES", "NO");
    nsComeback.setValue("NO");
    nsComeback.setStyleName(ValoTheme.COMBOBOX_TINY);

    formLayout1.addComponents(tfTag, tfPhone, tfName, tfVehicle, tfPayment, tfRebuilder, tfInstaller,
            tfLicensePlate, tfVin, tfReferedBy, tfWarrantyLimit);

    formLayout2.addComponents(nsWarranty, dfInShop, dfOutShop, nsStatus, nsSMS, nsComeback, tfMileage, tfPicked,
            dfFirstCheckDate, dfSecondCheckDate);

    formLayout3.addComponents(tfFirstCheckBy, tfSecondCheckBy, taRemarks, taMedia, taMedia2);

    HorizontalLayout layoutButtons = new HorizontalLayout();
    layoutButtons.setMargin(new MarginInfo(false, true, false, true));

    sendBtn.addClickListener(new ClickListener() {

        @Override
        public void buttonClick(ClickEvent event) {

            Integer tag = null;
            Integer mileage = null;
            if (tfTag.getValue() != null)
                if (!tfTag.getValue().isEmpty()) {
                    tag = (Integer.parseInt(tfTag.getValue()));
                } else
                    tag = null;

            if (tfMileage.getValue() != null)
                if (!tfMileage.getValue().isEmpty()) {
                    mileage = (Integer.parseInt(tfMileage.getValue()));
                } else
                    mileage = null;

            Object[] args = new Object[] { tag, tfPhone.getValue(), tfName.getValue(), tfVehicle.getValue(),
                    tfLicensePlate.getValue(), tfVin.getValue(), dfInShop.getValue(), dfOutShop.getValue(),
                    nsStatus.getValue(), mileage, tfPicked.getValue(), tfPayment.getValue(),
                    taRemarks.getValue(), tfRebuilder.getValue(), tfInstaller.getValue(),
                    tfFirstCheckBy.getValue(), tfSecondCheckBy.getValue(), dfFirstCheckDate.getValue(),
                    dfSecondCheckDate.getValue(), taMedia.getValue(), taMedia2.getValue(),
                    tfReferedBy.getValue(), tfWarrantyLimit.getValue(), nsWarranty.getValue(), nsSMS.getValue(),
                    nsComeback.getValue() };

            if (sendBtn.getCaption().equals("Add")) {
                try {
                    String status = nsStatus.getValue().toString();
                    searchService.insertCar(args, status);
                    Notification.show("Entry inserted succesfully");
                    close();
                } catch (Exception e) {
                    e.printStackTrace();
                    Notification.show("An error has occurred", Notification.Type.ERROR_MESSAGE);
                }
            } else {
                try {
                    searchService.editCar(args, tableName, no);
                    Notification.show("Entry edited succesfully");
                    close();
                } catch (Exception e) {
                    e.printStackTrace();
                    Notification.show("An error has occurred", Notification.Type.ERROR_MESSAGE);
                }

            }
        }

    });
    sendBtn.setImmediate(true);
    sendBtn.setStyleName(ValoTheme.BUTTON_TINY);
    sendBtn.addStyleName(ValoTheme.BUTTON_FRIENDLY);

    layoutButtons.setSizeUndefined();
    layoutButtons.setSpacing(true);
    layoutButtons.addComponents(sendBtn);

    hLayoutForms.addComponents(formLayout1, formLayout2, formLayout3);

    mainLayout.addComponent(hLayoutForms);
    mainLayout.addComponent(layoutButtons);
    mainLayout.setComponentAlignment(hLayoutForms, Alignment.MIDDLE_CENTER);
    mainLayout.setComponentAlignment(layoutButtons, Alignment.MIDDLE_LEFT);
    mainLayout.setExpandRatio(hLayoutForms, 3);

}

From source file:com.mechanicshop.components.TableLayout.java

private void buildLayout() {
    HorizontalLayout layoutTitle = new HorizontalLayout();
    layoutTitle.setSizeUndefined();//from w  ww .ja v a2 s  .  c o m
    layoutTitle.setWidth("100%");
    layoutTitle.setSpacing(false);
    layoutTitle.setMargin(false);
    titleLabel.addStyleName(ValoTheme.LABEL_H2);
    titleLabel.addStyleName(ValoTheme.LABEL_COLORED);
    titleLabel.addStyleName(ValoTheme.LABEL_NO_MARGIN);
    titleLabel.addStyleName(ValoTheme.LABEL_BOLD);
    titleLabel.setSizeUndefined();

    layoutTitle.addComponent(titleLabel);
    layoutTitle.setComponentAlignment(titleLabel, Alignment.MIDDLE_CENTER);

    VerticalLayout layoutTable = new VerticalLayout();

    layoutTable.addComponent(table);
    layoutTable.setComponentAlignment(table, Alignment.TOP_CENTER);
    layoutTable.setSizeFull();

    layoutTable.setSpacing(true);
    HorizontalLayout layoutButtons = new HorizontalLayout();
    layoutButtons.setMargin(false);
    layoutButtons.setSpacing(true);
    layoutButtons.setSizeUndefined();
    layoutButtons.setWidth("100%");
    Button addBtn = new Button("Add new Car");
    addBtn.addClickListener(addBtnListener);
    addBtn.setImmediate(true);
    addBtn.setStyleName(ValoTheme.BUTTON_TINY);
    addBtn.addStyleName(ValoTheme.BUTTON_FRIENDLY);
    Button deleteBtn = new Button("Delete Selected");
    deleteBtn.setStyleName(ValoTheme.BUTTON_TINY);
    deleteBtn.addStyleName(ValoTheme.BUTTON_DANGER);
    deleteBtn.setImmediate(true);
    deleteBtn.addClickListener(removeListener);

    btnSendSMS.setStyleName(ValoTheme.BUTTON_TINY);
    btnSendSMS.addStyleName(ValoTheme.BUTTON_FRIENDLY);
    btnSendSMS.setImmediate(true);
    btnSendSMS.addClickListener(sendSMSBtnListener);

    searchTextField.setImmediate(true);
    searchTextField.addStyleName(ValoTheme.TEXTFIELD_TINY);
    searchTextField.addTextChangeListener(filterChangeListener);
    Label lbSearch = new Label("Search");
    lbSearch.addStyleName(ValoTheme.LABEL_TINY);
    lbSearch.setSizeUndefined();
    layoutButtons.addComponents(lbSearch, searchTextField, addBtn, deleteBtn, btnSendSMS);

    layoutButtons.setComponentAlignment(lbSearch, Alignment.MIDDLE_LEFT);
    layoutButtons.setComponentAlignment(searchTextField, Alignment.BOTTOM_LEFT);
    layoutButtons.setComponentAlignment(addBtn, Alignment.BOTTOM_RIGHT);
    layoutButtons.setComponentAlignment(deleteBtn, Alignment.BOTTOM_RIGHT);
    layoutButtons.setComponentAlignment(btnSendSMS, Alignment.BOTTOM_RIGHT);
    layoutButtons.setExpandRatio(addBtn, 3);
    addComponent(layoutTitle);
    addComponent(layoutTable);
    layoutTable.addComponent(layoutButtons);
    layoutTable.setExpandRatio(table, 3);
    setComponentAlignment(layoutTitle, Alignment.TOP_CENTER);
    setComponentAlignment(layoutTable, Alignment.TOP_CENTER);
    setExpandRatio(layoutTable, 3);
    setSpacing(true);
    setMargin(true);

}

From source file:com.save.client.ClientsDataGridProperties.java

public ClientsDataGridProperties(HorizontalSplitPanel hsplit, String clientModuleType) {
    this.hsplit = hsplit;
    this.clientModuleType = clientModuleType;

    setSelectionMode(SelectionMode.SINGLE);
    setSizeFull();//from   w w w  . j a v  a 2s.  c o  m

    setContainerDataSource(container);
    addItemClickListener(this);

    // Create a header row to hold column filters
    HeaderRow filterRow = appendHeaderRow();

    // Set up a filter for all columns
    getContainerDataSource().getContainerPropertyIds().stream().filter((pid) -> (pid.equals("name")))
            .forEach((pid) -> {
                HeaderCell cell = filterRow.getCell(pid);

                // Have an input field to use for filter
                TextField filterField = new TextField();
                filterField.setWidth("100%");
                filterField.addStyleName(ValoTheme.TEXTFIELD_TINY);
                filterField.setInputPrompt("Filter");

                // Update filter When the filter input is changed
                filterField.addTextChangeListener(change -> {
                    // Can't modify filters so need to replace
                    container.removeContainerFilters(pid);

                    // (Re)create the filter if necessary
                    if (!change.getText().isEmpty())
                        container.addContainerFilter(new SimpleStringFilter(pid, change.getText(), true, true));
                    recalculateColumnWidths();
                });
                cell.setComponent(filterField);
            });

    getColumn("name").setWidth(280);
    removeColumn("id");
}

From source file:com.save.employee.EmployeesDataGridProperties.java

public EmployeesDataGridProperties(HorizontalSplitPanel hsplit, String employeeModuleType) {
    this.hsplit = hsplit;
    this.employeeModuleType = employeeModuleType;

    setContainerDataSource(container);/*  w  ww.j a  v a 2 s.  com*/
    addItemClickListener(this);

    // Create a header row to hold column filters
    HeaderRow filterRow = appendHeaderRow();

    // Set up a filter for all columns
    //        getContainerDataSource().getContainerPropertyIds().stream().filter((pid) -> (pid.equals("name"))).forEach((pid) -> {
    getContainerDataSource().getContainerPropertyIds().stream().forEach((pid) -> {
        HeaderCell cell = filterRow.getCell(pid);

        // Have an input field to use for filter
        TextField filterField = new TextField();
        filterField.setWidth("100%");
        filterField.addStyleName(ValoTheme.TEXTFIELD_TINY);
        filterField.setInputPrompt("Filter");

        // Update filter When the filter input is changed
        filterField.addTextChangeListener(change -> {
            // Can't modify filters so need to replace
            container.removeContainerFilters(pid);

            // (Re)create the filter if necessary
            if (!change.getText().isEmpty())
                container.addContainerFilter(new SimpleStringFilter(pid, change.getText(), true, true));
            recalculateColumnWidths();
        });
        cell.setComponent(filterField);
    });

    getColumn("name").setWidth(280);
    removeColumn("id");
}

From source file:facs.components.Statistics.java

License:Open Source License

/**
 * adds a new filter to the header row/*from  w  w w.  j a  v  a 2s .  c  o m*/
 * 
 * @param headerRow
 * @param propertyId
 * @param container
 */
public void addRowFilter(HeaderRow headerRow, final String propertyId, final IndexedContainer container,
        final FooterRow footer, final GeneratedPropertyContainer gpcontainer) {
    HeaderCell headerCellDevice = headerRow.getCell(propertyId);
    // Have an input field to use for filter
    TextField filterField = new TextField();
    filterField.setColumns(8);
    filterField.setInputPrompt("Filter");
    filterField.addStyleName(ValoTheme.TEXTFIELD_TINY);
    // Update filter When the filter input is changed
    filterField.addTextChangeListener(new TextChangeListener() {
        private static final long serialVersionUID = -6252315973584227301L;

        @Override
        public void textChange(TextChangeEvent change) {
            // Can't modify filters so need to replace
            container.removeContainerFilters(propertyId);
            // (Re)create the filter if necessary
            if (!change.getText().isEmpty())
                container.addContainerFilter(new SimpleStringFilter(propertyId, change.getText(), true, false));
            // compute total costs
            float totalCosts = 0.0f;
            for (Object itemId : gpcontainer.getItemIds()) {
                totalCosts += ((Number) gpcontainer.getContainerProperty(itemId, costCaption).getValue())
                        .floatValue();
            }

            // compute total time in milliseconds
            long total = 0;
            for (Object itemId : gpcontainer.getItemIds()) {
                long s = ((Date) gpcontainer.getContainerProperty(itemId, startCaption).getValue()).getTime();
                long e = ((Date) gpcontainer.getContainerProperty(itemId, endCaption).getValue()).getTime();
                total += e - s;
            }

            FooterCell footerCellCost = footer.getCell(costCaption);
            footerCellCost.setText(String.format("%1$.2f  total", totalCosts));

            FooterCell footerCellEnd = footer.getCell(endCaption);
            int hours = (int) (total * 0.000000277778f);
            float minutes = (total * 0.000000277778f - hours) * 60;
            footerCellEnd.setText(String.format("%d:%02d hours", hours, (int) minutes)); // "%1$.0f hours"

        }
    });
    headerCellDevice.setComponent(filterField);
}

From source file:fi.semantum.strategia.Main.java

License:Open Source License

@Override
protected void init(VaadinRequest request) {

    getPage().addUriFragmentChangedListener(new UriFragmentChangedListener() {
        public void uriFragmentChanged(UriFragmentChangedEvent source) {
            applyFragment(source.getUriFragment(), true);
        }/*from www .  j  a  v a2 s.c o  m*/
    });

    String pathInfo = request.getPathInfo();
    if (pathInfo.startsWith("/"))
        pathInfo = pathInfo.substring(1);
    if (pathInfo.endsWith("/"))
        pathInfo = pathInfo.substring(0, pathInfo.length() - 1);

    String databaseId = validatePathInfo(pathInfo);

    setWindowWidth(Page.getCurrent().getBrowserWindowWidth(), Page.getCurrent().getBrowserWindowHeight());

    // Find the application directory
    String basepath = VaadinService.getCurrent().getBaseDirectory().getAbsolutePath();

    // Image as a file resource
    redResource = new FileResource(new File(basepath + "/WEB-INF/images/bullet_red.png"));
    greenResource = new FileResource(new File(basepath + "/WEB-INF/images/bullet_green.png"));
    blackResource = new FileResource(new File(basepath + "/WEB-INF/images/bullet_black.png"));
    mapMagnify = new FileResource(new File(basepath + "/WEB-INF/images/map_magnify.png"));

    abs = new AbsoluteLayout();

    final VerticalLayout vs = new VerticalLayout();
    vs.setSizeFull();

    abs.addComponent(vs);
    setContent(abs);

    // This will set the login cookie
    Wiki.login(this);

    // Make sure that the printing directory exists
    new File(Main.baseDirectory(), "printing").mkdirs();

    database = Database.load(this, databaseId);
    database.getOrCreateTag("Tavoite");
    database.getOrCreateTag("Painopiste");

    for (Strategiakartta map : Strategiakartta.enumerate(database)) {
        Strategiakartta parent = map.getPossibleParent(database);
        if (parent == null)
            uiState.setCurrentMap(parent);
    }

    if (uiState.getCurrentMap() == null)
        uiState.setCurrentMap(database.getRoot());

    uiState.currentPosition = uiState.getCurrentMap();

    uiState.currentItem = uiState.getCurrentMap();

    setPollInterval(10000);

    addPollListener(new PollListener() {

        @Override
        public void poll(PollEvent event) {

            if (database.checkChanges()) {
                String curr = uiState.getCurrentMap().uuid;
                database = Database.load(Main.this, database.getDatabaseId());
                uiState.setCurrentMap((Strategiakartta) database.find(curr));
                Updates.updateJS(Main.this, false);
            }

        }

    });

    js.addListener(new MapListener(this, false));
    js2.addListener(new MapListener(this, true));

    browser_.addListener(new BrowserListener() {

        @Override
        public void select(double x, double y, String uuid) {
            Base b = database.find(uuid);
            Actions.selectAction(Main.this, x, y, null, b);
        }

        @Override
        public void save(String name, Map<String, BrowserNodeState> states) {

            UIState state = getUIState().duplicate(name);
            state.browserStates = states;

            account.uiStates.add(state);

            Updates.update(Main.this, true);

        }

    });

    Page.getCurrent().addBrowserWindowResizeListener(new BrowserWindowResizeListener() {

        @Override
        public void browserWindowResized(BrowserWindowResizeEvent event) {
            setWindowWidth(event.getWidth(), event.getHeight());
            Updates.updateJS(Main.this, false);
        }
    });

    modeLabel = new Label("Katselutila");
    modeLabel.setWidth("95px");
    modeLabel.addStyleName("viewMode");

    mode = new Button();
    mode.setDescription("Siirry tiedon sytttilaan");
    mode.setIcon(FontAwesome.EYE);
    mode.addStyleName(ValoTheme.BUTTON_TINY);

    mode.addClickListener(new ClickListener() {

        @Override
        public void buttonClick(ClickEvent event) {

            if ("Siirry tiedon sytttilaan".equals(mode.getDescription())) {

                mode.setDescription("Siirry katselutilaan");
                mode.setIcon(FontAwesome.PENCIL);
                modeLabel.setValue("Sytttila");
                modeLabel.removeStyleName("viewMode");
                modeLabel.addStyleName("editMode");

                UIState s = uiState.duplicate(Main.this);
                s.input = true;
                setFragment(s, true);

            } else {

                mode.setDescription("Siirry tiedon sytttilaan");
                mode.setIcon(FontAwesome.EYE);
                modeLabel.setValue("Katselutila");
                modeLabel.removeStyleName("editMode");
                modeLabel.addStyleName("viewMode");

                UIState s = uiState.duplicate(Main.this);
                s.input = false;
                setFragment(s, true);

            }

        }

    });

    meterMode = new Button();
    meterMode.setDescription("Vaihda toteumamittareihin");
    meterMode.setCaption("Ennuste");
    meterMode.addStyleName(ValoTheme.BUTTON_TINY);

    meterMode.addClickListener(new ClickListener() {

        @Override
        public void buttonClick(ClickEvent event) {

            if ("Vaihda toteumamittareihin".equals(meterMode.getDescription())) {

                meterMode.setDescription("Vaihda ennustemittareihin");
                meterMode.setCaption("Toteuma");

                UIState s = uiState.duplicate(Main.this);
                s.setActualMeters();
                setFragment(s, true);

            } else {

                meterMode.setDescription("Vaihda toteumamittareihin");
                meterMode.setCaption("Ennuste");

                UIState s = uiState.duplicate(Main.this);
                s.setForecastMeters();
                setFragment(s, true);

            }

        }

    });

    pdf = new PDFButton();
    pdf.setDescription("Tallenna kartta PDF-muodossa");
    pdf.setIcon(FontAwesome.PRINT);
    pdf.addStyleName(ValoTheme.BUTTON_TINY);

    pdf.addClickListener(new ClickListener() {

        @Override
        public void buttonClick(ClickEvent event) {

            Utils.print(Main.this);

        }

    });

    propertyExcelButton = new Button();
    propertyExcelButton.setDescription("Tallenna tiedot Excel-tiedostona");
    propertyExcelButton.setIcon(FontAwesome.PRINT);
    propertyExcelButton.addStyleName(ValoTheme.BUTTON_TINY);

    OnDemandFileDownloader dl = new OnDemandFileDownloader(new OnDemandStreamSource() {

        private static final long serialVersionUID = 981769438054780731L;

        File f;
        Date date = new Date();

        @Override
        public InputStream getStream() {

            String uuid = UUID.randomUUID().toString();
            File printing = new File(Main.baseDirectory(), "printing");
            f = new File(printing, uuid + ".xlsx");

            Workbook w = new XSSFWorkbook();
            Sheet sheet = w.createSheet("Sheet1");
            int row = 1;
            for (List<String> cells : propertyCells) {
                Row r = sheet.createRow(row++);
                for (int i = 0; i < cells.size(); i++) {
                    String value = cells.get(i);
                    r.createCell(i).setCellValue(value);
                }
            }

            try {
                FileOutputStream s = new FileOutputStream(f);
                w.write(s);
                s.close();
            } catch (Exception e) {
                e.printStackTrace();
            }

            try {
                return new FileInputStream(f);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }

            throw new IllegalStateException();

        }

        @Override
        public void onRequest() {
        }

        @Override
        public long getFileSize() {
            return f.length();
        }

        @Override
        public String getFileName() {
            return "Strategiakartta_" + Utils.dateString(date) + ".xlsx";
        }

    });

    dl.getResource().setCacheTime(0);
    dl.extend(propertyExcelButton);

    states = new ComboBox();
    states.setWidth("250px");
    states.addStyleName(ValoTheme.COMBOBOX_TINY);
    states.setInvalidAllowed(false);
    states.setNullSelectionAllowed(false);

    states.addValueChangeListener(statesListener);

    saveState = new Button();
    saveState.setEnabled(false);
    saveState.setDescription("Tallenna nykyinen nkym");
    saveState.setIcon(FontAwesome.BOOKMARK);
    saveState.addStyleName(ValoTheme.BUTTON_TINY);
    saveState.addClickListener(new ClickListener() {

        @Override
        public void buttonClick(ClickEvent event) {
            Utils.saveCurrentState(Main.this);
        }

    });

    class SearchTextField extends TextField {
        public boolean hasFocus = false;
    }

    final SearchTextField search = new SearchTextField();
    search.setWidth("100%");
    search.addStyleName(ValoTheme.TEXTFIELD_TINY);
    search.addStyleName(ValoTheme.TEXTFIELD_BORDERLESS);
    search.setInputPrompt("hae vapaasanahaulla valitun asian alta");
    search.setId("searchTextField");
    search.addShortcutListener(new ShortcutListener("Shortcut Name", ShortcutAction.KeyCode.ENTER, null) {
        @Override
        public void handleAction(Object sender, Object target) {

            if (!search.hasFocus)
                return;

            String text = search.getValue().toLowerCase();
            try {

                Map<String, String> content = new HashMap<String, String>();
                List<String> hits = Lucene.search(database.getDatabaseId(), text + "*");
                for (String uuid : hits) {
                    Base b = database.find(uuid);
                    if (b != null) {
                        String report = "";
                        Map<String, String> map = b.searchMap(database);
                        for (Map.Entry<String, String> e : map.entrySet()) {
                            if (e.getValue().contains(text)) {
                                if (!report.isEmpty())
                                    report += ", ";
                                report += e.getKey();
                            }
                        }
                        if (!report.isEmpty())
                            content.put(uuid, report);
                    }
                }

                uiState.setCurrentFilter(new SearchFilter(Main.this, content));

                Updates.updateJS(Main.this, false);

                switchToBrowser();

            } catch (IOException e) {
                e.printStackTrace();
            }

        }
    });
    search.addFocusListener(new FocusListener() {

        @Override
        public void focus(FocusEvent event) {
            search.hasFocus = true;
        }
    });
    search.addBlurListener(new BlurListener() {

        @Override
        public void blur(BlurEvent event) {
            search.hasFocus = false;
        }
    });

    hallinnoi = new Button("Hallinnoi");
    hallinnoi.setWidthUndefined();
    hallinnoi.setVisible(false);
    hallinnoi.addStyleName(ValoTheme.BUTTON_TINY);
    hallinnoi.addClickListener(new ClickListener() {

        @Override
        public void buttonClick(ClickEvent event) {
            if (account != null) {
                if (account.isAdmin()) {
                    Utils.manage(Main.this);
                }
            }
        }

    });

    tili = new Button("Kyttjtili");
    tili.setWidthUndefined();
    tili.setVisible(false);
    tili.addStyleName(ValoTheme.BUTTON_TINY);
    tili.addClickListener(new ClickListener() {

        @Override
        public void buttonClick(ClickEvent event) {
            if (account != null) {
                Utils.modifyAccount(Main.this);
            }
        }

    });

    duplicate = new Button("Avaa ikkunassa");
    duplicate2 = new Button("Avaa alas");

    duplicate.setWidthUndefined();
    duplicate.addStyleName(ValoTheme.BUTTON_TINY);
    duplicate.addClickListener(new ClickListener() {

        @Override
        public void buttonClick(ClickEvent event) {

            MapVis model = js2.getModel();
            if (model == null) {

                UIState s = uiState.duplicate(Main.this);
                s.reference = s.current;

                mapDialog = new Window(s.reference.getText(database), new VerticalLayout());
                mapDialog.setWidth(dialogWidth());
                mapDialog.setHeight(dialogHeight());
                mapDialog.setResizable(true);
                mapDialog.setContent(js2Container);
                mapDialog.setVisible(true);
                mapDialog.setResizeLazy(false);
                mapDialog.addCloseListener(new CloseListener() {

                    @Override
                    public void windowClose(CloseEvent e) {

                        duplicate.setCaption("Avaa ikkunassa");
                        duplicate2.setVisible(true);

                        UIState s = uiState.duplicate(Main.this);
                        mapDialog.close();
                        mapDialog = null;
                        s.reference = null;
                        setFragment(s, true);

                    }

                });
                mapDialog.addResizeListener(new ResizeListener() {

                    @Override
                    public void windowResized(ResizeEvent e) {
                        Updates.updateJS(Main.this, false);
                    }

                });

                setFragment(s, true);

                addWindow(mapDialog);

                duplicate.setCaption("Sulje referenssi");
                duplicate2.setVisible(false);

            } else {

                UIState s = uiState.duplicate(Main.this);
                if (mapDialog != null) {
                    mapDialog.close();
                    mapDialog = null;
                }

                panelLayout.removeComponent(js2Container);

                s.reference = null;
                setFragment(s, true);

                duplicate.setCaption("Avaa ikkunassa");
                duplicate2.setVisible(true);

            }

        }

    });

    duplicate2.setWidthUndefined();
    duplicate2.addStyleName(ValoTheme.BUTTON_TINY);
    duplicate2.addClickListener(new ClickListener() {

        @Override
        public void buttonClick(ClickEvent event) {

            MapVis model = js2.getModel();
            assert (model == null);

            UIState s = uiState.duplicate(Main.this);
            s.reference = s.current;
            setFragment(s, true);

            panelLayout.addComponent(js2Container);

            duplicate.setCaption("Sulje referenssi");
            duplicate2.setVisible(false);

        }

    });

    login = new Button("Kirjaudu");
    login.setWidthUndefined();
    login.addStyleName(ValoTheme.BUTTON_TINY);
    login.addClickListener(new ClickListener() {

        @Override
        public void buttonClick(ClickEvent event) {
            if (account != null) {
                account = null;
                hallinnoi.setVisible(false);
                tili.setVisible(false);
                Updates.update(Main.this, true);
                login.setCaption("Kirjaudu");
            } else {
                Login.login(Main.this);
            }
        }

    });

    times = new ComboBox();
    times.setWidth("130px");
    times.addStyleName(ValoTheme.COMBOBOX_SMALL);
    times.addItem(Property.AIKAVALI_KAIKKI);
    times.addItem("2016");
    times.addItem("2017");
    times.addItem("2018");
    times.addItem("2019");
    times.select("2016");
    times.setInvalidAllowed(false);
    times.setNullSelectionAllowed(false);

    times.addValueChangeListener(timesListener);

    final HorizontalLayout hl0 = new HorizontalLayout();
    hl0.setWidth("100%");
    hl0.setHeight("32px");
    hl0.setSpacing(true);

    hl0.addComponent(pdf);
    hl0.setComponentAlignment(pdf, Alignment.MIDDLE_LEFT);
    hl0.setExpandRatio(pdf, 0.0f);

    hl0.addComponent(propertyExcelButton);
    hl0.setComponentAlignment(propertyExcelButton, Alignment.MIDDLE_LEFT);
    hl0.setExpandRatio(propertyExcelButton, 0.0f);

    hl0.addComponent(states);
    hl0.setComponentAlignment(states, Alignment.MIDDLE_LEFT);
    hl0.setExpandRatio(states, 0.0f);

    hl0.addComponent(saveState);
    hl0.setComponentAlignment(saveState, Alignment.MIDDLE_LEFT);
    hl0.setExpandRatio(saveState, 0.0f);

    hl0.addComponent(times);
    hl0.setComponentAlignment(times, Alignment.MIDDLE_LEFT);
    hl0.setExpandRatio(times, 0.0f);

    hl0.addComponent(search);
    hl0.setComponentAlignment(search, Alignment.MIDDLE_LEFT);
    hl0.setExpandRatio(search, 1.0f);

    hl0.addComponent(modeLabel);
    hl0.setComponentAlignment(modeLabel, Alignment.MIDDLE_LEFT);
    hl0.setExpandRatio(modeLabel, 0.0f);

    hl0.addComponent(mode);
    hl0.setComponentAlignment(mode, Alignment.MIDDLE_LEFT);
    hl0.setExpandRatio(mode, 0.0f);

    hl0.addComponent(meterMode);
    hl0.setComponentAlignment(meterMode, Alignment.MIDDLE_LEFT);
    hl0.setExpandRatio(meterMode, 0.0f);

    hl0.addComponent(hallinnoi);
    hl0.setComponentAlignment(hallinnoi, Alignment.MIDDLE_LEFT);
    hl0.setExpandRatio(hallinnoi, 0.0f);

    hl0.addComponent(tili);
    hl0.setComponentAlignment(tili, Alignment.MIDDLE_LEFT);
    hl0.setExpandRatio(tili, 0.0f);

    hl0.addComponent(duplicate);
    hl0.setComponentAlignment(duplicate, Alignment.MIDDLE_LEFT);
    hl0.setExpandRatio(duplicate, 0.0f);

    hl0.addComponent(duplicate2);
    hl0.setComponentAlignment(duplicate2, Alignment.MIDDLE_LEFT);
    hl0.setExpandRatio(duplicate2, 0.0f);

    hl0.addComponent(login);
    hl0.setComponentAlignment(login, Alignment.MIDDLE_LEFT);
    hl0.setExpandRatio(login, 0.0f);

    propertiesPanel = new Panel();
    propertiesPanel.setSizeFull();

    properties = new VerticalLayout();
    properties.setSpacing(true);
    properties.setMargin(true);

    propertiesPanel.setContent(properties);
    propertiesPanel.setVisible(false);

    tags = new VerticalLayout();
    tags.setSpacing(true);
    Updates.updateTags(this);

    AbsoluteLayout tabs = new AbsoluteLayout();
    tabs.setSizeFull();

    {
        panel = new Panel();
        panel.addStyleName(ValoTheme.PANEL_BORDERLESS);
        panel.setSizeFull();
        panel.setId("mapContainer1");
        panelLayout = new VerticalLayout();
        panelLayout.addComponent(js);
        panelLayout.setHeight("100%");

        js2Container = new VerticalLayout();
        js2Container.setHeight("100%");
        js2Container.addComponent(new Label("<hr />", ContentMode.HTML));
        js2Container.addComponent(js2);

        panel.setContent(panelLayout);
        tabs.addComponent(panel);
    }

    wiki = new BrowserFrame();
    wiki.setSource(new ExternalResource(Wiki.wikiAddress() + "/"));
    wiki.setWidth("100%");
    wiki.setHeight("100%");

    {

        wiki_ = new VerticalLayout();
        wiki_.setSizeFull();
        Button b = new Button("Palaa sovellukseen");
        b.setWidth("100%");
        b.addClickListener(new ClickListener() {
            @Override
            public void buttonClick(ClickEvent event) {
                applyFragment(backFragment, true);
                String content = Wiki.get(wikiPage);
                if (content == null)
                    return;
                int first = content.indexOf("<rev contentformat");
                if (first == -1)
                    return;
                content = content.substring(first);
                int term = content.indexOf(">");
                content = content.substring(term + 1);
                int end = content.indexOf("</rev>");
                content = content.substring(0, end);
                if (wikiBase.modifyMarkup(Main.this, content)) {
                    Updates.update(Main.this, true);
                }
            }
        });
        wiki_.addComponent(b);
        wiki_.addComponent(wiki);
        wiki_.setVisible(false);

        wiki_.setExpandRatio(b, 0.0f);
        wiki_.setExpandRatio(wiki, 1.0f);

        tabs.addComponent(wiki_);

    }

    hs = new HorizontalSplitPanel();
    hs.setSplitPosition(0, Unit.PIXELS);
    hs.setHeight("100%");
    hs.setWidth("100%");

    browser = new VerticalLayout();
    browser.setSizeFull();

    HorizontalLayout browserWidgets = new HorizontalLayout();
    browserWidgets.setWidth("100%");

    hori = new Button();
    hori.setDescription("Nyt asiat taulukkona");
    hori.setEnabled(true);
    hori.setIcon(FontAwesome.ARROW_RIGHT);
    hori.addStyleName(ValoTheme.BUTTON_TINY);
    hori.addClickListener(new ClickListener() {

        boolean right = false;

        @Override
        public void buttonClick(ClickEvent event) {
            if (right) {
                hs.setSplitPosition(0, Unit.PIXELS);
                hori.setIcon(FontAwesome.ARROW_RIGHT);
                hori.setDescription("Nyt asiat taulukkona");
                right = false;
            } else {
                hs.setSplitPosition(windowWidth / 2, Unit.PIXELS);
                hori.setIcon(FontAwesome.ARROW_LEFT);
                hori.setDescription("Piilota taulukko");
                right = true;
            }
        }

    });

    more = new Button();
    more.setDescription("Laajenna nytettvien asioiden joukkoa");
    more.setIcon(FontAwesome.PLUS_SQUARE);
    more.addStyleName(ValoTheme.BUTTON_TINY);
    more.addClickListener(new ClickListener() {

        @Override
        public void buttonClick(ClickEvent event) {
            uiState.level++;
            Updates.updateJS(Main.this, false);
            if (uiState.level >= 2)
                less.setEnabled(true);
        }

    });

    less = new Button();
    less.setDescription("Supista nytettvien asioiden joukkoa");
    less.setIcon(FontAwesome.MINUS_SQUARE);
    less.addStyleName(ValoTheme.BUTTON_TINY);
    less.addClickListener(new ClickListener() {

        @Override
        public void buttonClick(ClickEvent event) {
            if (uiState.level > 1) {
                uiState.level--;
                Updates.updateJS(Main.this, false);
            }
            if (uiState.level <= 1)
                less.setEnabled(false);
        }

    });

    reportAllButton = new Button();
    reportAllButton.setCaption("Nkyvt tulokset");
    reportAllButton.addStyleName(ValoTheme.BUTTON_TINY);
    reportAllButton.addClickListener(new ClickListener() {

        @Override
        public void buttonClick(ClickEvent event) {
            if (uiState.reportAll) {
                reportAllButton.setCaption("Nkyvt tulokset");
                uiState.reportAll = false;
            } else {
                reportAllButton.setCaption("Kaikki tulokset");
                uiState.reportAll = true;
            }
            Updates.updateJS(Main.this, false);
        }

    });

    reportStatus = new Label("0 tulosta.");
    reportStatus.setWidth("100px");

    filter = new ComboBox();
    filter.setWidth("100%");
    filter.addStyleName(ValoTheme.COMBOBOX_SMALL);
    filter.setInvalidAllowed(false);
    filter.setNullSelectionAllowed(false);

    filter.addValueChangeListener(filterListener);

    browserWidgets.addComponent(hori);
    browserWidgets.setComponentAlignment(hori, Alignment.MIDDLE_LEFT);
    browserWidgets.setExpandRatio(hori, 0.0f);

    browserWidgets.addComponent(more);
    browserWidgets.setComponentAlignment(more, Alignment.MIDDLE_LEFT);
    browserWidgets.setExpandRatio(more, 0.0f);

    browserWidgets.addComponent(less);
    browserWidgets.setComponentAlignment(less, Alignment.MIDDLE_LEFT);
    browserWidgets.setExpandRatio(less, 0.0f);

    browserWidgets.addComponent(reportAllButton);
    browserWidgets.setComponentAlignment(reportAllButton, Alignment.MIDDLE_LEFT);
    browserWidgets.setExpandRatio(reportAllButton, 0.0f);

    browserWidgets.addComponent(reportStatus);
    browserWidgets.setComponentAlignment(reportStatus, Alignment.MIDDLE_LEFT);
    browserWidgets.setExpandRatio(reportStatus, 0.0f);

    browserWidgets.addComponent(filter);
    browserWidgets.setComponentAlignment(filter, Alignment.MIDDLE_LEFT);
    browserWidgets.setExpandRatio(filter, 1.0f);

    browser.addComponent(browserWidgets);
    browser.addComponent(hs);

    browser.setExpandRatio(browserWidgets, 0.0f);
    browser.setExpandRatio(hs, 1.0f);

    browser.setVisible(false);

    tabs.addComponent(browser);

    {
        gridPanelLayout = new VerticalLayout();
        gridPanelLayout.setMargin(false);
        gridPanelLayout.setSpacing(false);
        gridPanelLayout.setSizeFull();
        hs.addComponent(gridPanelLayout);
    }

    CssLayout browserLayout = new CssLayout();

    browserLayout.setSizeFull();

    browserLayout.addComponent(browser_);

    hs.addComponent(browserLayout);

    tabs.addComponent(propertiesPanel);

    vs.addComponent(hl0);
    vs.addComponent(tabs);

    vs.setExpandRatio(hl0, 0.0f);
    vs.setExpandRatio(tabs, 1.0f);

    // Ground state
    fragments.put("", uiState);

    setCurrentItem(uiState.currentItem, (Strategiakartta) uiState.currentItem);

}

From source file:fi.semantum.strategia.Updates.java

License:Open Source License

private static void updateQueryGrid(final Main main, final FilterState state) {

    main.gridPanelLayout.removeAllComponents();
    main.gridPanelLayout.setMargin(false);

    final List<String> keys = state.reportColumns;
    if (keys.isEmpty()) {
        Label l = new Label("Kysely ei tuottanut yhtn tulosta.");
        l.addStyleName(ValoTheme.LABEL_BOLD);
        l.addStyleName(ValoTheme.LABEL_HUGE);
        main.gridPanelLayout.addComponent(l);
        return;//ww w . j  a  v a  2  s  .c o  m
    }

    final IndexedContainer container = new IndexedContainer();

    for (String key : keys) {
        container.addContainerProperty(key, String.class, "");
    }

    rows: for (Map<String, ReportCell> map : state.report) {
        Object item = container.addItem();
        for (String key : keys)
            if (map.get(key) == null)
                continue rows;

        for (Map.Entry<String, ReportCell> entry : map.entrySet()) {
            @SuppressWarnings("unchecked")
            com.vaadin.data.Property<String> p = container.getContainerProperty(item, entry.getKey());
            p.setValue(entry.getValue().get());
        }

    }

    HorizontalLayout hl = new HorizontalLayout();
    hl.setWidth("100%");

    final TextField filter = new TextField();
    filter.addStyleName(ValoTheme.TEXTFIELD_TINY);
    filter.setInputPrompt("rajaa hakutuloksia - kirjoitetun sanan tulee lyty rivin teksteist");
    filter.setWidth("100%");

    final Image clipboard = new Image();
    clipboard.setSource(new ThemeResource("page_white_excel.png"));
    clipboard.setHeight("24px");
    clipboard.setWidth("24px");

    hl.addComponent(filter);
    hl.setExpandRatio(filter, 1.0f);
    hl.setComponentAlignment(filter, Alignment.BOTTOM_CENTER);
    hl.addComponent(clipboard);
    hl.setComponentAlignment(clipboard, Alignment.BOTTOM_CENTER);
    hl.setExpandRatio(clipboard, 0.0f);

    main.gridPanelLayout.addComponent(hl);
    main.gridPanelLayout.setExpandRatio(hl, 0f);

    filter.addValueChangeListener(new ValueChangeListener() {

        private static final long serialVersionUID = 3033918399018888150L;

        @Override
        public void valueChange(ValueChangeEvent event) {
            container.removeAllContainerFilters();
            container.addContainerFilter(new QueryFilter(filter.getValue(), true, false));
        }
    });

    AbsoluteLayout abs = new AbsoluteLayout();
    abs.setSizeFull();

    final Grid queryGrid = new Grid(container);
    queryGrid.setSelectionMode(SelectionMode.NONE);
    queryGrid.setHeightMode(HeightMode.CSS);
    queryGrid.setHeight("100%");
    queryGrid.setWidth("100%");

    for (String key : keys) {
        Column col = queryGrid.getColumn(key);
        col.setExpandRatio(1);
    }

    abs.addComponent(queryGrid);

    OnDemandFileDownloader dl = new OnDemandFileDownloader(new OnDemandStreamSource() {

        private static final long serialVersionUID = 981769438054780731L;

        File f;
        Date date = new Date();

        @Override
        public InputStream getStream() {

            String uuid = UUID.randomUUID().toString();
            File printing = new File(Main.baseDirectory(), "printing");
            f = new File(printing, uuid + ".xlsx");

            Workbook w = new XSSFWorkbook();
            Sheet sheet = w.createSheet("Sheet1");
            Row header = sheet.createRow(0);
            for (int i = 0; i < keys.size(); i++) {
                Cell cell = header.createCell(i);
                cell.setCellValue(keys.get(i));
            }

            int row = 1;
            rows: for (Map<String, ReportCell> map : state.report) {
                for (String key : keys)
                    if (map.get(key) == null)
                        continue rows;

                Row r = sheet.createRow(row++);
                int column = 0;
                for (int i = 0; i < keys.size(); i++) {
                    Cell cell = r.createCell(column++);
                    ReportCell rc = map.get(keys.get(i));
                    cell.setCellValue(rc.getLong());
                }

            }

            try {
                FileOutputStream s = new FileOutputStream(f);
                w.write(s);
                s.close();
            } catch (Exception e) {
                e.printStackTrace();
            }

            try {
                return new FileInputStream(f);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }

            throw new IllegalStateException();

        }

        @Override
        public void onRequest() {
            // TODO Auto-generated method stub

        }

        @Override
        public long getFileSize() {
            return f.length();
        }

        @Override
        public String getFileName() {
            return "Strategiakartta_" + Utils.dateString(date) + ".xlsx";
        }

    });

    dl.getResource().setCacheTime(0);
    dl.extend(clipboard);

    main.gridPanelLayout.addComponent(abs);
    main.gridPanelLayout.setExpandRatio(abs, 1f);

}