
org.nasdanika.html.bootstrap.impl.BootstrapElementImpl Maven / Gradle / Ivy
package org.nasdanika.html.bootstrap.impl;
import org.nasdanika.html.HTMLElement;
import org.nasdanika.html.bootstrap.BootstrapElement;
import org.nasdanika.html.bootstrap.BootstrapFactory;
import org.nasdanika.html.bootstrap.Color;
import org.nasdanika.html.bootstrap.Breakpoint;
import org.nasdanika.html.bootstrap.Placement;
import org.nasdanika.html.bootstrap.Spacing;
import org.nasdanika.html.bootstrap.Text;
public abstract class BootstrapElementImpl,B extends BootstrapElement> implements BootstrapElement {
private BootstrapFactory factory;
protected BootstrapElementImpl(BootstrapFactory factory) {
this.factory = factory;
}
@Override
public BootstrapFactory getFactory() {
return factory;
}
@Override
public String toString() {
return toHTMLElement().toString();
}
@Override
public Object produce(int indent) {
return toHTMLElement().produce(indent);
}
@SuppressWarnings("unchecked")
@Override
public B border(Color color, Placement... placement) {
H htmlElement = toHTMLElement();
if (htmlElement != null && color != Color.NONE) {
for (Placement p: placement) {
htmlElement.addClass("border-"+p.name().toLowerCase());
}
htmlElement.addClassConditional(placement.length == 0, "border");
if (color != null && color.code != null) {
htmlElement.addClass("border-"+color.code);
}
}
return (B) this;
}
@SuppressWarnings("unchecked")
public B background(Color color) {
toHTMLElement().addClassConditional(color != null && color.code != null, "bg-"+color.code);
return (B) this;
}
@Override
public Text text() {
return new Text() {
@SuppressWarnings("unchecked")
@Override
public B toBootstrapElement() {
return (B) BootstrapElementImpl.this;
}
@Override
public Text color(Color color) {
toHTMLElement().addClassConditional(color != null && color.code != null, "text-"+color.code);
return this;
}
@Override
public Text alignment(Alignment alignment) {
toHTMLElement().addClass("text-"+alignment.name().toLowerCase());
return this;
}
@Override
public Text alignment(Breakpoint breakpoint, Alignment alignment) {
String code = breakpoint.code;
String prefix = code.length() == 0 ? "text" : "text-"+code;
toHTMLElement().addClass(prefix+"-"+alignment.name().toLowerCase());
return this;
}
@Override
public Text transform(Transform transform) {
toHTMLElement().addClass("text-"+transform.name().toLowerCase());
return this;
}
@Override
public Text weight(Weight weight) {
toHTMLElement().addClass("font-weight-"+weight.name().toLowerCase());
return this;
}
@Override
public Text monospace() {
return monospace(true);
}
@Override
public Text monospace(boolean monospace) {
toHTMLElement().addClassConditional(monospace, "text-monospace");
return this;
}
@Override
public Text italic() {
return italic(true);
}
@Override
public Text italic(boolean italic) {
toHTMLElement().addClassConditional(italic, "font-italic");
return this;
}
@Override
public Text nowrap() {
return nowrap(true);
}
@Override
public Text nowrap(boolean nowrap) {
toHTMLElement().addClassConditional(nowrap, "text-nowrap");
return this;
}
@Override
public Text truncate() {
return truncate(true);
}
@Override
public Text truncate(boolean truncate) {
toHTMLElement().addClassConditional(truncate, "text-truncate");
return this;
}
};
}
@SuppressWarnings("unchecked")
@Override
public org.nasdanika.html.bootstrap.Float _float() {
return new FloatImpl((B) this);
}
@SuppressWarnings("unchecked")
@Override
public Spacing margin() {
return new SpacingImpl((B) this, "m");
}
@SuppressWarnings("unchecked")
@Override
public Spacing padding() {
return new SpacingImpl((B) this, "p");
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy