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 {@link oajr.annotation.HtmlDoc#stylesheet() @HtmlDoc(stylesheet)} annotation.
The {@link oajr.BasicRestServlet} class defines the stylesheet served up as a static file:
@RestResource(
htmldoc=@HtmlDoc(
stylesheet="$C{REST/stylesheet,servlet:/styles/devops.css}",
),
staticFiles={"styles:styles"}
)
public abstract class BasicRestServlet extends RestServlet {...}
The "$C{REST/stylesheet,servlet:/styles/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
org/apache/juneau/rest/styles/devops.css
.
To provide your own stylesheet, simply override the stylesheet attribute and point to a different
file:
@RestResource(
htmldoc=@HtmlDoc(
stylesheet="servlet:/my-styles/my-style.css}",
),
staticFiles={"my-styles:my-styles"}
)
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:
@RestResource(
htmldoc=@HtmlDoc(
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 BasicRestServletJenaGroup {...}
The StyleMenuItem is a widget that extends from {@link oajr.widget.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.dto.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 s : BUILT_IN_STYLES) {
java.net.URI uri = req.getUri(true, new AMap<String,String>().append("stylesheet", "styles/"+s+".css"));
div.children(a(uri, s), br());
}
return div;
}
}