/* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.riotfamily.forms.controller; import java.io.PrintWriter; import java.util.Collection; import java.util.List; import java.util.Locale; import org.riotfamily.common.i18n.MessageResolver; import org.riotfamily.forms.ContentElement; import org.riotfamily.forms.FormContext; import org.riotfamily.forms.OptionsModelAdapter; import org.riotfamily.forms.TemplateRenderer; import org.riotfamily.forms.ui.ElementSizing; import org.springframework.beans.PropertyEditorRegistrar; /** * @author Felix Gnass [fgnass at neteye dot de] * @since 6.4 */ public class DefaultFormContext implements FormContext { private String contextPath; private String resourcePath; /** Renderer for templates */ private TemplateRenderer templateRenderer; private MessageResolver messageResolver; /** Current writer used for rendering */ private PrintWriter writer; private String formUrl; private Collection<PropertyEditorRegistrar> propertyEditorRegistrars; private List<OptionsModelAdapter> optionValuesAdapters; private ElementSizing elementSizing; public DefaultFormContext() { } public DefaultFormContext(MessageResolver messageResolver, TemplateRenderer templateRenderer, String contextPath, String resourcePath, String formUrl, Collection<PropertyEditorRegistrar> propertyEditorRegistrars, List<OptionsModelAdapter> optionValuesAdapters, ElementSizing elementSizing) { this.messageResolver = messageResolver; this.contextPath = contextPath; setResourcePath(resourcePath); this.templateRenderer = templateRenderer; this.formUrl = formUrl; this.propertyEditorRegistrars = propertyEditorRegistrars; this.optionValuesAdapters = optionValuesAdapters; this.elementSizing = elementSizing; } private void setResourcePath(String path) { if (path != null && path.length() > 0) { if (path.charAt(path.length() - 1) != '/') { path += '/'; } } else { path = "/"; } this.resourcePath = path; } public Locale getLocale() { return messageResolver.getLocale(); } public MessageResolver getMessageResolver() { return messageResolver; } public String getContextPath() { return contextPath; } public String getResourcePath() { return resourcePath; } public TemplateRenderer getTemplateRenderer() { return templateRenderer; } public PrintWriter getWriter() { return writer; } public void setWriter(PrintWriter writer) { this.writer = writer; } public String getFormUrl() { return formUrl; } private StringBuffer createFormUrlBuffer() { StringBuffer url = new StringBuffer(formUrl); if (url.indexOf("?") != -1) { url.append('&'); } else { url.append('?'); } return url; } public String getContentUrl(ContentElement el) { return createFormUrlBuffer() .append("_content=" + el.getId()) .toString(); } public String getUploadUrl(String uploadId) { return createFormUrlBuffer().append("uploadId=" + uploadId).toString(); } public Collection<PropertyEditorRegistrar> getPropertyEditorRegistrars() { return this.propertyEditorRegistrars; } public void setPropertyEditorRegistrars( Collection<PropertyEditorRegistrar> registrars) { this.propertyEditorRegistrars = registrars; } public List<OptionsModelAdapter> getOptionsModelAdapters() { return optionValuesAdapters; } public ElementSizing getSizing() { return elementSizing; } }