Creating a reusable Vaadin theme in Eclipse

This tutorial teaches you how to create a standalone Vaadin theme that can be reused in other Vaadin projects as an add-on.

Requirements:

Create a project for your theme

Create a new Java project.

Create a new Java project

Download a Vaadin JAR and add it to your project’s build path.

Add Vaadin to build path

In the src folder, create a class for your theme:

Java

  1. package com.example.mytheme;
  2. import com.vaadin.ui.themes.BaseTheme;
  3. public class MyTheme extends BaseTheme {
  4. public static final String THEME_NAME = "my-theme";
  5. }

This makes your theme extend Vaadin’s BaseTheme, which will let you fully customize your theme from scratch. On the other hand, if you don’t have very specific theming needs and just want good-looking results quickly, try extending ChameleonTheme instead. In any case, both of these themes are designed for extension and therefore your best choices to start with.

In the root of your project, create the following folder and files:

  • META-INF

    • MANIFEST.MF
  • VAADIN

    • themes

      • my-theme

        • addons.scss

        • my-theme.scss

        • styles.scss

The MANIFEST.MF file should contain the following:

  1. Manifest-Version: 1.0
  2. Implementation-Title: My Theme
  3. Implementation-Version: 1.0.0
  4. Vaadin-Package-Version: 1
  5. Class-Path:

Your Implementation-Title and Implementation-Version should reflect how you want your theme to be visible in the Vaadin directory.

Create a demo app for your theme

Create a new Vaadin project.

Create a new Vaadin project.png)

Create a new Vaadin project 2.png)

Add your theme project to your demo project’s Java build path.

Add theme to build path

Add your theme project to your demo project’s deployment assembly. This will automatically convert your theme project to a Java EE Utility project.

Add theme to Deployment Assembly

Now that your theme project is a Java EE Utility project, it will also have a deployment assembly. Add your theme project’s VAADIN folder to there and make sure you specify its deploy path as VAADIN.

Add theme to Deployment Assembly 2

In your demo application class, add the following line to your init() method:

Java

  1. setTheme(MyTheme.THEME_NAME);

To try if it works, right-click on your demo project and choose Run As > Run on Server.

Develop your theme

Create a new style name constant in your theme class for each new CSS class name you add to your stylesheets. These can then be passed to the Component.addStyleName(String) method. This will make it easier for other developers to use your theme!

Changes to your stylesheets will be visible in your demo app almost instantly. All you need to do is save the file, wait for the server to automatically pick up the changes, then refresh your browser.

Export your theme as a Vaadin add-on

Right-click on your theme project, choose Export… > Java > Jar file and make sure your settings match those in the following two images.

Export as JAR.png)

Export as JAR 2.png)

Finally, upload your theme add-on Jar to the Vaadin directory!