1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.myfaces.tobago.renderkit;
21
22 import org.apache.myfaces.tobago.component.Facets;
23 import org.apache.myfaces.tobago.component.UIBox;
24 import org.apache.myfaces.tobago.component.UIMenuBar;
25 import org.apache.myfaces.tobago.config.Configurable;
26 import org.apache.myfaces.tobago.layout.Measure;
27 import org.slf4j.Logger;
28 import org.slf4j.LoggerFactory;
29
30 import javax.faces.component.UIComponent;
31 import javax.faces.context.FacesContext;
32 import java.io.IOException;
33
34 public abstract class BoxRendererBase extends LayoutComponentRendererBase {
35
36 private static final Logger LOG = LoggerFactory.getLogger(BoxRendererBase.class);
37
38 public boolean getRendersChildren() {
39 return true;
40 }
41
42 @Override
43 public Measure getBorderTop(FacesContext facesContext, Configurable component) {
44
45 Measure borderTop = super.getBorderTop(facesContext, component);
46 if (getMenuBarFacet((UIComponent) component) != null) {
47 borderTop = borderTop.add(19);
48 }
49 return borderTop;
50 }
51
52 @Override
53 public Measure getMinimumHeight(FacesContext facesContext, Configurable component) {
54 if (component instanceof UIBox && ((UIBox) component).isCollapsed()) {
55 return getBorderTop(facesContext, component);
56 }
57 return super.getMinimumHeight(facesContext, component);
58 }
59
60 @Override
61 public Measure getMaximumHeight(FacesContext facesContext, Configurable component) {
62 if (component instanceof UIBox && ((UIBox) component).isCollapsed()) {
63 return getBorderTop(facesContext, component);
64 }
65 return super.getMaximumHeight(facesContext, component);
66 }
67
68 protected UIMenuBar getMenuBarFacet(UIComponent component) {
69 return (UIMenuBar) component.getFacet(Facets.MENUBAR);
70 }
71
72 @Override
73 public void encodeChildren(FacesContext facesContext, UIComponent component) throws IOException {
74 if (component instanceof UIBox && ((UIBox) component).isCollapsed()) {
75 return;
76 }
77 super.encodeChildren(facesContext, component);
78 }
79 }