/** * Copyright (c) 2008-2012 The Sakai Foundation * * Licensed under the Educational Community 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.osedu.org/licenses/ECL-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.sakaiproject.profile2.tool.pages.panels; import org.apache.commons.lang.StringUtils; import org.apache.wicket.AttributeModifier; import org.apache.wicket.behavior.AttributeAppender; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.TextArea; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.Model; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.model.ResourceModel; import org.apache.wicket.validation.validator.UrlValidator; import org.sakaiproject.profile2.model.CompanyProfile; import org.sakaiproject.profile2.tool.components.ComponentVisualErrorBehaviour; import org.sakaiproject.profile2.tool.components.FeedbackLabel; /** * Panel for displaying and editing company profile data */ public class CompanyProfileEdit extends Panel { private static final long serialVersionUID = 1L; public CompanyProfileEdit(String id, CompanyProfile companyProfile) { super(id, new Model(companyProfile)); WebMarkupContainer companyNameContainer = new WebMarkupContainer( "companyNameContainer"); companyNameContainer.add(new Label("companyNameLabel", new ResourceModel("profile.business.company.name"))); TextField companyName = new TextField("companyName", new PropertyModel(companyProfile, "companyName")); companyName.setOutputMarkupId(true); companyNameContainer.add(companyName); String companyNameId = companyName.getMarkupId(); Label companyNameAccessibilityLabel = new Label("companyNameAccessibilityLabel", new ResourceModel("accessibility.profile.companyname.input")); companyNameAccessibilityLabel.add(new AttributeAppender("for",new Model(companyNameId)," ")); companyNameContainer.add(companyNameAccessibilityLabel); add(companyNameContainer); WebMarkupContainer companyWebAddressContainer = new WebMarkupContainer( "companyWebAddressContainer"); companyWebAddressContainer.add(new Label("companyWebAddressLabel", new ResourceModel("profile.business.company.web"))); TextField companyWebAddress = new TextField("companyWebAddress", new PropertyModel(companyProfile, "companyWebAddress")) { private static final long serialVersionUID = 1L; // add http:// if missing @Override protected void convertInput() { String input = getInput(); if (StringUtils.isNotBlank(input) && !(input.startsWith("http://") || input .startsWith("https://"))) { setConvertedInput("http://" + input); } else { setConvertedInput(StringUtils.isBlank(input) ? null : input); } } }; companyWebAddress.setOutputMarkupId(true); companyWebAddress.add(new UrlValidator()); companyWebAddressContainer.add(companyWebAddress); String companyUrlId = companyWebAddress.getMarkupId(); Label companyUrlAccessibilityLabel = new Label("companyUrlAccessibilityLabel", new ResourceModel("accessibility.profile.companyurl.input")); companyUrlAccessibilityLabel.add(new AttributeAppender("for",new Model(companyUrlId)," ")); companyWebAddressContainer.add(companyUrlAccessibilityLabel); final FeedbackLabel companyWebAddressFeedback = new FeedbackLabel( "companyWebAddressFeedback", companyWebAddress); companyWebAddressFeedback.setOutputMarkupId(true); companyWebAddressContainer.add(companyWebAddressFeedback); companyWebAddress.add(new ComponentVisualErrorBehaviour("onblur", companyWebAddressFeedback)); companyWebAddress.add(new AttributeAppender("aria-describedby",new Model(companyWebAddressFeedback.getMarkupId())," ")); add(companyWebAddressContainer); WebMarkupContainer companyDescriptionContainer = new WebMarkupContainer( "companyDescriptionContainer"); companyDescriptionContainer.add(new Label("companyDescriptionLabel", new ResourceModel("profile.business.company.description"))); TextArea companyDescription = new TextArea("companyDescription", new PropertyModel(companyProfile, "companyDescription")); companyDescription.setOutputMarkupId(true); companyDescriptionContainer.add(companyDescription); String companyDescriptionId = companyDescription.getMarkupId(); Label companyDescriptionAccessibilityLabel = new Label("companyDescriptionAccessibilityLabel", new ResourceModel("accessibility.profile.companydescription.input")); companyDescriptionAccessibilityLabel.add(new AttributeAppender("for",new Model(companyDescriptionId)," ")); companyDescriptionContainer.add(companyDescriptionAccessibilityLabel); add(companyDescriptionContainer); } }