官术网_书友最值得收藏!

  • Vaadin 7 Cookbook
  • Jaroslav Holaň Ond?ej Kvasnovsk?
  • 515字
  • 2021-07-23 14:19:33

Creating a custom layout

When we work on a complex web application, we need to cooperate with more people in the team. UX or graphic designers design layouts and for them it is more natural to design layouts using HTML and CSS. In such cases, we can use Custom layout that is described in the HTML template.

Creating a custom layout

How to do it...

Carry out the following steps to create a custom layout:

  1. Create a project with the main UI class, Demo.
    public class Demo extends UI {…}
  2. First, we'll create an HTML template. Vaadin separates the appearance of the user interface from its logic using themes. Themes can include Sass or CSS style sheets, custom HTML layouts, and any necessary graphics. We'll call our template mylayout.html and place it under the folder layouts. In the WebContent folder we create this path of folders:
    WebContent/VAADIN/themes/mytheme/layouts
  3. Next, we define our layout. By setting the location attribute in the <div> element, we mark our specific areas. These elements will be replaced by Vaadin components. On the top we will put a header. We will create one menu on the left side. We will leave the central area for some content page. At the end we will insert a page footer, for example, for a status line. The Attribute class is used for CSS styling.
       <div location="header" class="header"></div>
       <div location="menu" class="menu"></div>
       <div location="content" class="content"></div>
       <div location="footer" class="footer"></div>
  4. In the next step, we create our CSS style for this layout. Under the folder mytheme we create a file styles.css.
    WebContent/VAADIN/themes/mytheme/styles.css
  5. In this file, we can say how to align a component in each area, what color and size will be used, and other properties.
    .header,.menu,.footer {
      border: thin;
      border-style: solid;
      border-color: LightGrey;
    }
    
    .header {
      text-align: center;
      font-size: 32px;
      height: 75px;
    }
    
    .menu {
      height: 300px;
      width: 20%;
      text-align: center;
      float: left;
    }
    
    .content {
      text-align: left;
    }
    
    .footer {
      text-align: right;
      clear: both;
    }
  6. Now we will create a simple Vaadin project with a main UI class called Demo. We will add the annotation mytheme, which means that we use this theme in our application. In the init() method, we will set CustomLayout as a content. Each component is added by the addComponent() method, where the second parameter is the location in the HTML template.
    @Theme("mytheme")
    public class Demo extends UI {
      @Override
      public void init(VaadinRequest request) {
        CustomLayout layout = new CustomLayout("mylayout");
        setContent(layout);
    
        Label header = new Label("Custom layout");
        header.addStyleName("header");
        layout.addComponent(header, "header");
    
        Label menu = new Label("menu");
        layout.addComponent(menu, "menu");
    
        Label content = new Label("This is content of page.");
        layout.addComponent(content, "content");            
    
        Label footer = new Label("Created by Vaadin, 2013");
        layout.addComponent(footer, "footer");      
      }
    }

How it works...

Layout is described in the HTML template file. A template includes the <div> elements with a location attribute that defines the location identifier. The client-side engine of Vaadin will replace the contents of the location elements with the components. The components are bound to the location elements by the location identifier given to the addComponent() method. The template file is separate from the source code. It's placed under the WebContent/VAADIN/themes/<nameTheme>/layouts folder. We can set the style of the layout with the CSS file placed in WebContent/VAADIN/themes/<nameTheme>/styles.css.

主站蜘蛛池模板: 盐亭县| 宁阳县| 汤原县| 朔州市| 池州市| 定南县| 东阿县| 舞钢市| 泰顺县| 普陀区| 乳山市| 洮南市| 白山市| 南涧| 布尔津县| SHOW| 桃园县| 长阳| 舟曲县| 饶平县| 汉川市| 公安县| 渑池县| 瓦房店市| 肥乡县| 平昌县| 东台市| 上饶县| 芜湖县| 阿克苏市| 镇康县| 沂源县| 勐海县| 静海县| 汝州市| 龙陵县| 花莲县| 莆田市| 永靖县| 临西县| 额济纳旗|