// create popup
final String popupId = linkId != null ? linkId + "popup" : facesContext.getViewRoot().createUniqueId();
final UIPopup popup = (UIPopup) CreateComponentUtils.createComponent(
facesContext, UIPopup.COMPONENT_TYPE, RendererTypes.POPUP, popupId);
final UIGridLayout layoutOfPopup = (UIGridLayout) CreateComponentUtils.createComponent(
facesContext, UIGridLayout.COMPONENT_TYPE, RendererTypes.GRID_LAYOUT, "layoutPopup");
layoutOfPopup.setColumns("auto");
layoutOfPopup.setRows("auto");
popup.getFacets().put(Facets.LAYOUT, layoutOfPopup);
popup.getAttributes().put(Attributes.Z_INDEX, 10);
picker.getFacets().put(Facets.POPUP, popup);
picker.onComponentPopulated(facesContext, parent);
popup.setRendered(false);
popup.onComponentPopulated(facesContext, picker);
final ExpressionFactory expressionFactory = facesContext.getApplication().getExpressionFactory();
final ELContext elContext = facesContext.getELContext();
popup.setValueExpression(Attributes.LEFT, expressionFactory.createValueExpression(
elContext, "#{tobagoContext.actionPosition.right.pixel + 5}", Object.class));
popup.setValueExpression(Attributes.TOP, expressionFactory.createValueExpression(
elContext, "#{tobagoContext.actionPosition.top.pixel}", Object.class));
final UIBox box = (UIBox) CreateComponentUtils.createComponent(
facesContext, UIBox.COMPONENT_TYPE, RendererTypes.BOX, "box");
popup.getChildren().add(box);
box.setValueExpression(Attributes.LABEL, expressionFactory.createValueExpression(
elContext, "#{tobagoContext.resourceBundle.datePickerTitle}", String.class));
final UIGridLayout layoutOfBox = (UIGridLayout) CreateComponentUtils.createComponent(
facesContext, UIGridLayout.COMPONENT_TYPE, RendererTypes.GRID_LAYOUT, "layout");
box.getFacets().put(Facets.LAYOUT, layoutOfBox);
layoutOfBox.setRows("*;auto;auto");
final UICalendar calendar = (UICalendar) CreateComponentUtils.createComponent(
facesContext, UICalendar.COMPONENT_TYPE, RendererTypes.CALENDAR, "calendar");
box.getChildren().add(calendar);
// fixme: should work automatically from the layout manager
final Measure width = getResourceManager().getThemeMeasure(facesContext, calendar, "minimumWidth");
layoutOfBox.setColumns(width.serialize());
// add time input
final UIPanel timePanel = (UIPanel) CreateComponentUtils.createComponent(
facesContext, UIPanel.COMPONENT_TYPE, RendererTypes.PANEL, "timePanel");
box.getChildren().add(timePanel);
final UIGridLayout layoutOfTime = (UIGridLayout) CreateComponentUtils.createComponent(
facesContext, UIGridLayout.COMPONENT_TYPE, RendererTypes.GRID_LAYOUT, "timePanelLayout");
timePanel.getFacets().put(Facets.LAYOUT, layoutOfTime);
layoutOfTime.setColumns("1*;auto;1*");
final UIPanel cell1 = (UIPanel) CreateComponentUtils.createComponent(
facesContext, UIPanel.COMPONENT_TYPE, RendererTypes.PANEL, "cell1");
cell1.onComponentPopulated(facesContext, parent);
timePanel.getChildren().add(cell1);
final UITime time = (UITime) CreateComponentUtils.createComponent(
facesContext, UITime.COMPONENT_TYPE, RendererTypes.TIME, "time");
timePanel.getChildren().add(time);
final UIPanel cell2 = (UIPanel) CreateComponentUtils.createComponent(
facesContext, UIPanel.COMPONENT_TYPE, RendererTypes.PANEL, "cell2");
cell2.onComponentPopulated(facesContext, parent);
timePanel.getChildren().add(cell2);
timePanel.onComponentPopulated(facesContext, parent);
final UIPanel buttonPanel = (UIPanel) CreateComponentUtils.createComponent(
facesContext, UIPanel.COMPONENT_TYPE, RendererTypes.PANEL, "buttonPanel");
final UIGridLayout layoutOfButtons = (UIGridLayout) CreateComponentUtils.createComponent(
facesContext, UIGridLayout.COMPONENT_TYPE, RendererTypes.GRID_LAYOUT, "buttonPanelLayout");
buttonPanel.setLayoutManager(layoutOfButtons);
layoutOfButtons.setColumns("*;*");
layoutOfButtons.setRows("auto");
box.getChildren().add(buttonPanel);
box.onComponentPopulated(facesContext, parent);
final UIButton okButton = (UIButton) CreateComponentUtils.createComponent(