Stylesheets
The sample root page renders in the default "devops" look-and-feel:
http://localhost:10000
The sample root page provides a dropdown widget to try out the other default look-and-feels: For example, the "light" look-and-feel:
http://localhost:10000/?stylesheet=styles%2Flight.css
And the "dark" look-and-feel:
http://localhost:10000/?stylesheet=styles%2Fdark.css
The stylesheet URL is controlled by the @HtmlDocConfig(stylesheet) annotation.
The BasicUniversalConfig interface defines the stylesheet served up as a static file:
@HtmlDocConfig(
stylesheet="$C{REST/theme,servlet:/htdocs/themes/devops.css}"
)
public interface BasicUniversalConfig {...}
The $C{REST/theme,servlet:/htdocs/themes/devops.css}
variable says to use the URI defined in your servlet's config
file, if there is one, and to default to serving up the file htdocs/themes/devops.css
which is in the resource folder
of the juneau-rest-server
module.
To provide your own stylesheet, simply override the stylesheet attribute and point to a different file:
@HtmlDocConfig(
stylesheet="servlet:/htdocs/themes/my-style.css"
)
public class MyResourceBaseClass extends BasicRestServlet {...}
You can try out different stylesheets by passing in a stylesheet
attribute in the request URL.
The example above show this in use.
In case you're curious about how the menu item works, it's defined via a widget:
@Rest(...)
@HtmlDocConfig(
widgets={
PoweredByApache.class,
ContentTypeMenuItem.class,
StyleMenuItem.class
},
navlinks={
"options: ?method=OPTIONS",
"$W{ContentTypeMenuItem}",
"$W{StyleMenuItem}",
"source: $C{Source/gitHub}/org/apache/juneau/examples/rest/$R{servletClassSimple}.java"
}
)
public class RootResources extends BasicRestServletGroup {...}
The StyleMenuItem
is a widget that extends from MenuItemWidget, a specialized widget for creating pop-up menus.
In the case of StyleMenuItem
, it's simply returning a list of links wrapped in a div
tag:
import static org.apache.juneau.bean.html5.HtmlBuilder.*;
public class StyleMenuItem extends MenuItemWidget {
private static final String[] BUILT_IN_STYLES = {"devops", "light", "original", "dark"};
@Override /* Widget */
public String getLabel(RestRequest req) {
return "styles";
}
@Override /* MenuItemWidget */
public Div getContent(RestRequest req) throws Exception {
Div div = div();
for (String style : BUILT_IN_STYLES) {
java.net.URI uri = req.getUri(true, new AMap().append("stylesheet", "styles/"+s+".css"));
div.children(a(uri, style), br());
}
return div;
}
}