1 /*
2 * Copyright 2012-2025 Christophe Friederich
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 package org.devacfr.maven.skins.reflow.model;
17
18 import com.google.common.base.Strings;
19 import javax.annotation.Nonnull;
20 import javax.annotation.Nullable;
21 import org.devacfr.maven.skins.reflow.ISkinConfig;
22
23 /**
24 * Describe a Bootstrap component.
25 *
26 * @author devacfr
27 * @since 2.0
28 */
29 public abstract class BsComponent extends Component {
30
31 /** */
32 private final String component;
33
34 /** */
35 private String theme = "light";
36
37 /** */
38 private String background = "light";
39
40 /**
41 * Default constructor.
42 *
43 * @param config
44 * a config (can not be {@code null}).
45 * @param component
46 * the bootstrap component name.
47 */
48 public BsComponent(@Nonnull final ISkinConfig config, final String component) {
49 super(config);
50 this.component = component;
51 }
52
53 @Override
54 @Nonnull
55 public String getCssClass() {
56 String css = "";
57 if (!Strings.isNullOrEmpty(getTheme())) {
58 css += component + "-" + getTheme() + " ";
59 }
60 if (!Strings.isNullOrEmpty(getBackground())) {
61 css += "bg-" + getBackground() + " ";
62 }
63 if (!Strings.isNullOrEmpty(super.getCssClass())) {
64 css += super.getCssClass();
65 }
66 return css.trim();
67 }
68
69 /**
70 * @return Returns a {@link String} representing the bootstrap theme to apply.
71 */
72 public String getTheme() {
73 return theme;
74 }
75
76 /**
77 * @param theme
78 * a bootstrap theme to use.
79 */
80 protected void setTheme(@Nullable final String theme) {
81 this.theme = theme;
82 }
83
84 /**
85 * @return Returns a {@link String} representing the bootstrap background color to apply.
86 */
87 public String getBackground() {
88 return background;
89 }
90
91 /**
92 * @param background
93 * a bootstrap background colour to use.
94 */
95 protected void setBackground(@Nullable final String background) {
96 this.background = background;
97 }
98 }