Refine search
protected void decodeBehaviors(FacesContext context, UIComponent component) { if (!(component instanceof ClientBehaviorHolder)) { return; } Map<String, List<ClientBehavior>> behaviors = ((ClientBehaviorHolder) component).getClientBehaviors(); if (behaviors.isEmpty()) { return; } Map<String, String> params = context.getExternalContext().getRequestParameterMap(); String behaviorEvent = params.get("javax.faces.behavior.event"); if (null != behaviorEvent) { List<ClientBehavior> behaviorsForEvent = behaviors.get(behaviorEvent); if (behaviorsForEvent != null && !behaviorsForEvent.isEmpty()) { String behaviorSource = params.get("javax.faces.source"); String clientId = component.getClientId(context); if (behaviorSource != null && clientId.equals(behaviorSource)) { for (ClientBehavior behavior : behaviorsForEvent) { behavior.decode(context, component); } } } } }
public void applyAttachedObject(FaceletContext faceletContext, UIComponent parent) { ClientBehaviorHolder holder = (ClientBehaviorHolder) parent; String eventName = getEventName(); if (null == eventName) { eventName = holder.getDefaultEventName(); if (null == eventName) { throw new TagException(this.tag, "Event attribute could not be determined: " + eventName); } } else { Collection<String> eventNames = holder.getEventNames(); if (!eventNames.contains(eventName)) { throw new TagException(this.tag, "Event:" + eventName + " is not supported."); } } ClientBehaviorBase behavior = createBehavior(faceletContext, eventName, parent); holder.addClientBehavior(eventName, behavior); }
protected void renderInputBegin(FacesContext facesContext, UIComponent component) throws IOException ResponseWriter writer = facesContext.getResponseWriter(); String clientId = component.getClientId(facesContext); String value = org.apache.myfaces.shared_impl.renderkit.RendererUtils.getStringValue(facesContext, component); if (log.isLoggable(Level.FINE)) log.fine("renderInput '" + value + "'"); writer.startElement(HTML.INPUT_ELEM, component); writer.writeAttribute(HTML.ID_ATTR, clientId, null); writer.writeAttribute(HTML.NAME_ATTR, clientId, null); if (component instanceof ClientBehaviorHolder && JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext())) behaviors = ((ClientBehaviorHolder) component).getClientBehaviors();
throws IOException ResponseWriter writer = facesContext.getResponseWriter(); writer.startElement(HTML.TABLE_ELEM, messages); behaviors = ((ClientBehaviorHolder) messages).getClientBehaviors(); writer.writeAttribute(HTML.ID_ATTR, messages.getClientId(facesContext), null); writer.startElement(HTML.TR_ELEM, null); // messages); writer.startElement(HTML.TD_ELEM, null); // messages);
Integer i = (Integer)component.getAttributes().get(org.apache.myfaces.shared_impl.renderkit.JSFAttr.COLUMNS_ATTR); columns = i != null ? i.intValue() : 0; log.severe("Wrong columns attribute for PanelGrid " + component.getClientId(facesContext) + ": " + columns); ResponseWriter writer = facesContext.getResponseWriter(); Map<String, List<ClientBehavior>> behaviors = null; if (component instanceof ClientBehaviorHolder) behaviors = ((ClientBehaviorHolder) component).getClientBehaviors(); writer.startElement(HTML.TABLE_ELEM, component); if (component instanceof ClientBehaviorHolder && JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext())) writer.flush(); writer.endElement(HTML.TABLE_ELEM);
/** * actually render the start of the table */ protected void startTable(FacesContext facesContext, UIComponent uiComponent) throws IOException { ResponseWriter writer = facesContext.getResponseWriter(); HtmlRendererUtils.writePrettyLineSeparator(facesContext); writer.startElement(HTML.TABLE_ELEM, uiComponent); Map<String, List<ClientBehavior>> behaviors = null; if (uiComponent instanceof ClientBehaviorHolder && JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext())) { behaviors = ((ClientBehaviorHolder) uiComponent).getClientBehaviors(); if (!behaviors.isEmpty()) { HtmlRendererUtils.writeIdAndName(writer, uiComponent, facesContext); } else { HtmlRendererUtils.writeIdIfNecessary(writer, uiComponent, facesContext); } HtmlRendererUtils.renderBehaviorizedEventHandlers(facesContext, writer, uiComponent, behaviors); HtmlRendererUtils.renderHTMLAttributes(writer, uiComponent, HTML.TABLE_PASSTHROUGH_ATTRIBUTES_WITHOUT_EVENTS); } else { HtmlRendererUtils.writeIdIfNecessary(writer, uiComponent, facesContext); HtmlRendererUtils.renderHTMLAttributes(writer, uiComponent, HTML.TABLE_PASSTHROUGH_ATTRIBUTES); } }
protected void encodeClientBehaviors(FacesContext context, ClientBehaviorHolder component) throws IOException { ResponseWriter writer = context.getResponseWriter(); Map<String, List<ClientBehavior>> clientBehaviors = component.getClientBehaviors(); Collection<String> eventNames = (component instanceof MixedClientBehaviorHolder) ? ((MixedClientBehaviorHolder) component).getUnobstrusiveEventNames() : clientBehaviors.keySet(); String clientId = ((UIComponent) component).getClientId(context); List<ClientBehaviorContext.Parameter> params = new ArrayList<>(); params.add(new ClientBehaviorContext.Parameter(Constants.CLIENT_BEHAVIOR_RENDERING_MODE, ClientBehaviorRenderingMode.UNOBSTRUSIVE)); writer.write(",behaviors:{"); for (Iterator<String> eventNameIterator = eventNames.iterator(); eventNameIterator.hasNext();) { String eventName = eventNameIterator.next(); writer.write(","); writer.write(eventName + ":"); writer.write("function(ext,event) {"); ClientBehaviorContext cbc = ClientBehaviorContext.createClientBehaviorContext( context, (UIComponent) component, eventName, clientId, params); String script = behavior.getScript(cbc); ClientBehaviorContext cbc = ClientBehaviorContext.createClientBehaviorContext( context, (UIComponent) component, eventName, clientId, params); String script = behavior.getScript(cbc);
@Override public void encodeEnd(FacesContext facesContext, UIComponent component) throws IOException { super.encodeEnd(facesContext, component); // check for NP� Map<String, List<ClientBehavior>> behaviors = null; if (component instanceof ClientBehaviorHolder) { behaviors = ((ClientBehaviorHolder) component).getClientBehaviors(); if (!behaviors.isEmpty()) { ResourceUtils.renderDefaultJsfJsInlineIfNecessary(facesContext, facesContext.getResponseWriter()); } } renderMessages(facesContext, component, false, true); }
private void encodeBehaviors(FacesContext context, ClientBehaviorHolder behaviorHolder, String defaultHtmlEventName, String[] attributesExclusions) throws IOException { // if (attributesExclusions != null && attributesExclusions.length != 0) { // assert false : "Not supported yet"; // } // TODO: disabled component check String defaultEventName = behaviorHolder.getDefaultEventName(); Collection<String> eventNames = behaviorHolder.getEventNames(); if (eventNames != null) { UIComponent component = (UIComponent) behaviorHolder; ResponseWriter writer = context.getResponseWriter(); Collection<Parameter> parametersList = HandlersChain.createParametersList(createParametersMap(context, component)); for (String behaviorEventName : eventNames) { String htmlEventName = "on" + behaviorEventName; if ((attributesExclusions == null) || (Arrays.binarySearch(attributesExclusions, htmlEventName) < 0)) { HandlersChain handlersChain = new HandlersChain(context, component, parametersList); handlersChain.addInlineHandlerFromAttribute(htmlEventName); handlersChain.addBehaviors(behaviorEventName); String handlerScript = handlersChain.toScript(); if (!isEmpty(handlerScript)) { writer.writeAttribute(htmlEventName, handlerScript, htmlEventName); } } } } }
allBehaviors = ((ClientBehaviorHolder) component).getClientBehaviors(); Object event = component.getAttributes().get(domEvent); boolean hasEvent = (event != null); if (cbc == null) { cbc = ClientBehaviorContext.createClientBehaviorContext(context, component, behaviorEventName, component.getClientId(context), Collections.<ClientBehaviorContext.Parameter>emptyList()); String script = behavior.getScript(cbc); if (hasBehaviors) { ClientBehaviorContext cbc = ClientBehaviorContext.createClientBehaviorContext( context, component, behaviorEventName, component.getClientId(context), Collections.<ClientBehaviorContext.Parameter>emptyList()); ClientBehavior behavior = behaviors.get(0); String script = behavior.getScript(cbc); if (script != null) { builder.append(script);
/** * Write ID of component if necessary. That is, when it's explicitly set or the component has client behaviors. * @param writer The involved response writer. * @param component The associated UI component. * @throws IOException When an I/O error occurs. * @see ResponseWriter#writeAttribute(String, Object, String) * @since 2.5 */ public static void writeIdAttributeIfNecessary(ResponseWriter writer, UIComponent component) throws IOException { if (component.getId() != null || (component instanceof ClientBehaviorHolder && !((ClientBehaviorHolder) component).getClientBehaviors().isEmpty())) { writeAttribute(writer, "id", component.getClientId()); } }
protected boolean shouldWriteId(UIComponent component) { String id = component.getId(); return (null != id) && (!id.startsWith(UIViewRoot.UNIQUE_ID_PREFIX) || ((component instanceof ClientBehaviorHolder) && !((ClientBehaviorHolder) component).getClientBehaviors().isEmpty())); }
protected String getEventBehaviors(FacesContext context, ClientBehaviorHolder cbh, String event, List<ClientBehaviorContext.Parameter> parameters) { List<ClientBehavior> behaviors = cbh.getClientBehaviors().get(event); StringBuilder sb = SharedStringBuilder.get(context, SB_GET_EVENT_BEHAVIORS); if (behaviors != null && !behaviors.isEmpty()) { UIComponent component = (UIComponent) cbh; String clientId = component.getClientId(context); List<ClientBehaviorContext.Parameter> params; if (parameters != null && !parameters.isEmpty()) { params = parameters; } else { params = Collections.emptyList(); } for (int i = 0; i < behaviors.size(); i++) { ClientBehavior behavior = behaviors.get(i); ClientBehaviorContext cbc = ClientBehaviorContext.createClientBehaviorContext( context, component, event, clientId, params); String script = behavior.getScript(cbc); if (script != null) { sb.append(script).append(";"); } } } return sb.length() == 0 ? null : sb.toString(); }
private boolean shouldAddBehavior(ClientBehaviorHolder behaviorHolder, String eventName) { if (!behaviorHolder.getEventNames().contains(eventName)) { return false; } Map<String, List<ClientBehavior>> clientBehaviorsMap = behaviorHolder.getClientBehaviors(); List<ClientBehavior> clientBehaviors = clientBehaviorsMap.get(eventName); if (clientBehaviors == null || clientBehaviors.isEmpty()) { return true; } for (ClientBehavior behavior : clientBehaviors) { Set<ClientBehaviorHint> hints = behavior.getHints(); if (hints.contains(ClientBehaviorHint.SUBMITTING)) { return false; } } return true; }
public void addClientBehavior(String eventName, ClientBehavior behavior) { if (_sourceEvent.equals(eventName)) { String targetEventName = _targetEvent == null ? ((ClientBehaviorHolder)_delegate).getDefaultEventName() : _targetEvent; ((ClientBehaviorHolder)_delegate).addClientBehavior(targetEventName , behavior); } }
protected void setConfirmationScript(FacesContext context, MenuItem item) { if (item instanceof ClientBehaviorHolder) { Map<String, List<ClientBehavior>> behaviors = ((ClientBehaviorHolder) item).getClientBehaviors(); List<ClientBehavior> clickBehaviors = (behaviors == null) ? null : behaviors.get("click"); if (clickBehaviors != null && !clickBehaviors.isEmpty()) { for (int i = 0; i < clickBehaviors.size(); i++) { ClientBehavior clientBehavior = clickBehaviors.get(i); if (clientBehavior instanceof ConfirmBehavior) { ClientBehaviorContext cbc = ClientBehaviorContext.createClientBehaviorContext( context, (UIComponent) item, "click", item.getClientId(), Collections.EMPTY_LIST); clientBehavior.getScript(cbc); break; } } } } }
protected void renderDomEvents(FacesContext context, UIComponent component, String[] eventAttrs) throws IOException { if (component instanceof ClientBehaviorHolder) { renderDomEvents(context, component, eventAttrs, ((ClientBehaviorHolder) component).getClientBehaviors()); } else { renderPassThruAttributes(context, component, eventAttrs); } }
private void moveBehavior(UIComponent component, String event, ClientBehavior behavior) { if (component instanceof ClientBehaviorHolder) { ClientBehaviorHolder clientBehaviorHolder = (ClientBehaviorHolder) component; List<ClientBehavior> behaviors = clientBehaviorHolder.getClientBehaviors().get(event); if (behaviors == null || !behaviors.contains(behavior)) { // Guard against adding ourselves twice clientBehaviorHolder.addClientBehavior(event, behavior); } } }
private String resolveEventName(ClientBehaviorHolder bHolder) { String eventName = getEventName(); if (null == eventName) { eventName = bHolder.getDefaultEventName(); if (null == eventName) { throw new TagException(this.tag, "Event attribute could not be determined: " + eventName); } } else { Collection<String> eventNames = bHolder.getEventNames(); if (!eventNames.contains(eventName)) { throw new TagException(this.tag, eventName + "event is not supported for the " + bHolder.getClass().getSimpleName()); } } return eventName; }
@Override public void onComponentCreated( final FaceletContext faceletContext, final UIComponent component, final UIComponent parent) { super.onComponentCreated(faceletContext, component, parent); final UIEvent uiEvent = (UIEvent) component; if (uiEvent.getEvent() == null) { final ClientBehaviorHolder holder = (ClientBehaviorHolder) parent; uiEvent.setEvent(ClientBehaviors.valueOf(holder.getDefaultEventName())); } }