View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.devacfr.maven.skins.reflow.model;
20  
21  import javax.annotation.Nonnull;
22  
23  import java.util.List;
24  
25  import com.google.common.base.Strings;
26  import com.google.common.collect.Lists;
27  import org.codehaus.plexus.util.xml.Xpp3Dom;
28  import org.devacfr.maven.skins.reflow.ISkinConfig;
29  
30  import static java.util.Objects.requireNonNull;
31  
32  /**
33   * Represents the header component.
34   *
35   * @author devacfr
36   * @since 2.2
37   */
38  public class Header extends BsComponent {
39  
40      /** */
41      private static final String COMPONENT = "header";
42  
43      private static final List<String> HEADER_TYPES = Lists.newArrayList("jumbotron", "banner", "custom");
44  
45      /** */
46      private boolean enabled = true;
47  
48      /** */
49      private String type;
50  
51      /** */
52      private String content;
53  
54      /**
55       * Default constructor.
56       *
57       * @param config
58       *            a config (can not be {@code null}).
59       */
60      public Header(@Nonnull final ISkinConfig config) {
61          super(COMPONENT);
62          requireNonNull(config);
63          this.setTheme(config.getAttributeValue(COMPONENT, "theme", String.class, null));
64          this.setBackground(config.getAttributeValue(COMPONENT, "background", String.class, null));
65          this.setCssClass(config.getAttributeValue(COMPONENT, "cssClass", String.class, null));
66  
67          this.type = config.getAttributeValue(COMPONENT, "type", String.class, HEADER_TYPES.get(0)).toLowerCase();
68          if (!HEADER_TYPES.contains(this.type)) {
69              this.type = HEADER_TYPES.get(0);
70          }
71          this.enabled = config.getAttributeValue(COMPONENT, "enabled", Boolean.class, true);
72  
73          Xpp3Dom component = config.get(COMPONENT);
74          if (component != null) {
75              this.content = component.getValue();
76              if (!Strings.isNullOrEmpty(this.content)) {
77                  this.type = HEADER_TYPES.get(2); // enforce the type to custom
78              }
79          }
80      }
81  
82      /**
83       * Gets the indicating whether the header is displayed.
84       *
85       * @return Returns {@code true} whether the header is displayed, otherwise {@code false}.
86       */
87      public boolean isEnabled() {
88          return enabled;
89      }
90  
91      /**
92       * Gets the type of header.
93       * 
94       * @return Returns a String representing the type of header.
95       */
96      public String getType() {
97          return type;
98      }
99  
100     /**
101      * @return the content
102      */
103     public String getContent() {
104         return content;
105     }
106 }