Vaadin - Temas

Este capítulo discute em detalhes sobre outro recurso do Vaadin, conhecido como Tema. Em geral, tema significa uma estrutura personalizável em tempo de execução. O conteúdo será dinâmico dependendo da resposta recebida no final do servidor.

Vaadin fornece uma interface legal para usar um tema em um segundo com a ajuda de seu próprio compilador SAAS baseado em Java. O recurso de tema é fornecido ao Vaadin para fornecer um estilo e aparência personalizáveis ​​ao aplicativo. O tema é um modelo predefinido e os desenvolvedores precisam personalizá-lo para construir seu próprio aplicativo, o que economiza seu tempo.

Você pode encontrar todos os temas do Vaadin sob o themepasta e cada uma das subpastas são autodescritíveis. Portanto, também é muito fácil alterar o código e personalizá-lo. Qualquer tema pode ter dois tipos de arquivos CSS -.saas digite e .csstipo. Embora o Vaadin não tenha nenhuma restrição ao nome da pasta, é sempre recomendável usar o nome da pasta, como você pode notar na imagem fornecida acima.

Existem dois tipos de temas disponíveis - Inbuilt e Custom. Esta seção os discute em detalhes.

Tema integrado

O tema integrado do Vaadin é fornecido anotando-o com um nome de tema, conforme mostrado abaixo.

@Theme("mytheme")
public class MyUI extends UI {

Todo o fundo de cor cinza durante a execução de um aplicativo Vaadin vem do embutido cssarquivos. Podemos fazer alterações nesses arquivos para torná-los um tema personalizado, que é outro tipo de tema. Não há nada que possamos aprender sobre os temas integrados do Vaadin. Todos os componentes mencionados acima fazem parte do Tema Vaadin.

Tema personalizado - Criando e usando temas

Temas personalizados são colocados no VAADIN/themes pasta do aplicativo da web, em um projeto Eclipse sob o WebContent pasta ou src/main/webappem projetos Maven. Esses locais são fixos e não devem ser alterados para nenhum tipo de requisito. Para definir um tema SAAS com o nomemytheme, você deve colocar o arquivo na pasta mytheme na pasta theme e reconstruir seu projeto. O Vaadin criará automaticamente seu próprio arquivo .css em tempo real, sempre que solicitado pelo navegador.

Você pode alterar o conteúdo do estilo no arquivo css de acordo com suas necessidades. No entanto, lembre-se de construir o projeto mais uma vez e ele começará a refletir em andamento.

Tema Responsivo

Vaadin também oferece suporte ao tema responsivo. A página da Web responsiva pode definir automaticamente o tamanho da fonte de acordo com o tamanho da tela. No aplicativo Vaadin, precisamos adicionar uma única linha de código para tornar todo o aplicativo responsivo.

Vamos considerar o exemplo a seguir para aprender mais sobre Vaadin. Faça alterações na classe MyUI.java conforme mostrado abaixo.

package com.TutorialsMy.myApp;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.time.LocalDate;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import javax.servlet.annotation.WebServlet;

import com.vaadin.annotations.Theme;
import com.vaadin.annotations.VaadinServletConfiguration;
import com.vaadin.data.TreeData;
import com.vaadin.icons.VaadinIcons;
import com.vaadin.server.Responsive;
import com.vaadin.server.UserError;
import com.vaadin.server.VaadinRequest;
import com.vaadin.server.VaadinServlet;
import com.vaadin.shared.ui.ContentMode;

import com.vaadin.ui.AbsoluteLayout;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.CustomLayout;
import com.vaadin.ui.DateField;
import com.vaadin.ui.FormLayout;
import com.vaadin.ui.Grid;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.HorizontalSplitPanel;

import com.vaadin.ui.Label;
import com.vaadin.ui.Notification;
import com.vaadin.ui.Panel;
import com.vaadin.ui.TabSheet;
import com.vaadin.ui.TextField;
import com.vaadin.ui.Tree;
import com.vaadin.ui.UI;
import com.vaadin.ui.Upload;
import com.vaadin.ui.Upload.Receiver;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.VerticalSplitPanel;
import com.vaadin.ui.Window;

@Theme("mytheme")
public class MyUI extends UI {
   @Override
   protected void init(VaadinRequest vaadinRequest) {
      final VerticalLayout hLayout = new VerticalLayout();
      Label l1 = new Label("Enter today's Date\n",ContentMode.PREFORMATTED);
      DateField date = new DateField();
      date.setValue(LocalDate.now());
      date.setLocale(new Locale("en","IND"));
      hLayout.addComponents(l1,date);
      hLayout.setComponentAlignment(l1,Alignment.BOTTOM_CENTER);
      hLayout.setComponentAlignment(date,Alignment.BOTTOM_CENTER);
      Responsive.makeResponsive(hLayout);
      setContent(hLayout);
   }
   @WebServlet(urlPatterns = "/*", name = "MyUIServlet", asyncSupported = true)
   @VaadinServletConfiguration(ui = MyUI.class, productionMode = false)
   public static class MyUIServlet extends VaadinServlet {}
}

Ao executar o código fornecido acima, você pode observar a seguinte saída no navegador.

Para testar a capacidade de resposta do layout, reduza o navegador e você pode observar que o painel e o componente de layout mudarão de tamanho e forma de acordo.