You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2015/12/01 00:03:11 UTC

[jira] [Commented] (WICKET-6042) Implementation of ExternalImage component

    [ https://issues.apache.org/jira/browse/WICKET-6042?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15032676#comment-15032676 ] 

ASF GitHub Bot commented on WICKET-6042:
----------------------------------------

Github user sebfz1 commented on a diff in the pull request:

    https://github.com/apache/wicket/pull/143#discussion_r46217791
  
    --- Diff: wicket-core/src/main/java/org/apache/wicket/markup/html/image/ExternalImage.java ---
    @@ -0,0 +1,274 @@
    +/*
    + * Licensed to the Apache Software Foundation (ASF) under one or more
    + * contributor license agreements.  See the NOTICE file distributed with
    + * this work for additional information regarding copyright ownership.
    + * The ASF licenses this file to You 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.apache.wicket.markup.html.image;
    +
    +import java.util.ArrayList;
    +import java.util.Arrays;
    +import java.util.List;
    +
    +import org.apache.wicket.markup.ComponentTag;
    +import org.apache.wicket.markup.html.WebComponent;
    +import org.apache.wicket.markup.html.image.Image.Cors;
    +import org.apache.wicket.model.IModel;
    +import org.apache.wicket.model.Model;
    +
    +/**
    + * A component to display external images. The src / srcset information are hold in models
    + * 
    + * @author Tobias Soloschenko
    + *
    + */
    +public class ExternalImage extends WebComponent
    +{
    +
    +	private static final long serialVersionUID = 1L;
    +
    +	/** The x values to be used within the srcset */
    +	private List<String> xValues = null;
    +
    +	/** The sizes of the responsive images */
    +	private List<String> sizes = null;
    +
    +	/**
    +	 * Cross origin settings
    +	 */
    +	private Cors crossOrigin = null;
    +
    +	private IModel<?>[] srcSet;
    +
    +	/**
    +	 * Creates an external image
    +	 * 
    +	 * @param id
    +	 *            the component id
    +	 * @param src
    +	 *            the source URL
    +	 * @param srcSet
    +	 *            a list of URLs placed in the srcset attribute
    +	 */
    +	public ExternalImage(String id, String src, String... srcSet)
    +	{
    +		this(id, src != null ? Model.of(src) : null, convertToModel(srcSet));
    +	}
    +
    +	/**
    +	 * Creates an external image
    +	 * 
    +	 * @param id
    +	 *            the component id
    +	 * @param src
    +	 *            the model source URL
    +	 * @param srcSetModels
    +	 *            a model list of URLs placed in the srcset attribute
    +	 */
    +	public ExternalImage(String id, IModel<?> src, IModel<?>... srcSetModels)
    +	{
    +		super(id, src);
    +		this.srcSet = srcSetModels;
    +	}
    +
    +	/**
    +	 * Converts a variable argument of Strings to an array of models
    +	 * 
    +	 * @param srcSet
    +	 *            a variable argument of URLs to be converted to an array of models
    +	 * @return an array of models
    +	 */
    +	private static IModel<?>[] convertToModel(String... srcSet)
    +	{
    +		IModel<?>[] models = null;
    +		if (srcSet != null)
    +		{
    +
    +			models = new IModel<?>[srcSet.length];
    +			int i = 0;
    +			for (String srcSetElement : srcSet)
    +			{
    +				models[i] = Model.of(srcSetElement);
    +				i++;
    +			}
    +		}
    +		else
    +		{
    +			models = new IModel<?>[0];
    +		}
    +		return models;
    +	}
    +
    +	@Override
    +	protected void onComponentTag(ComponentTag tag)
    +	{
    +		super.onComponentTag(tag);
    +
    +		if ("source".equals(tag.getName()))
    +		{
    +			buildSrcSetAttribute(tag, getSrcSet());
    +		}
    +		else
    +		{
    +			List<IModel<?>> srcSet = getSrcSet();
    +			checkComponentTag(tag, "img");
    +			buildSrcAttribute(tag, getDefaultModel());
    +			if (srcSet.size() > 1)
    +			{
    +				buildSrcSetAttribute(tag, srcSet);
    +			}
    +		}
    +
    +		buildSizesAttribute(tag);
    +
    +		Cors crossOrigin = getCrossOrigin();
    +		if (crossOrigin != null && Cors.NO_CORS != crossOrigin)
    +		{
    +			tag.put("crossOrigin", crossOrigin.getRealName());
    +		}
    +	}
    +
    +	/**
    +	 * Builds the src attribute
    +	 *
    +	 * @param tag
    +	 *            the component tag
    +	 * @param srcModel
    +	 *            the model containing the src URL
    +	 */
    +	protected void buildSrcAttribute(final ComponentTag tag, IModel<?> srcModel)
    +	{
    +		// The first model is the one put into src attribute
    --- End diff --
    
    I guess this comment is not relevant anymore...


> Implementation of ExternalImage component
> -----------------------------------------
>
>                 Key: WICKET-6042
>                 URL: https://issues.apache.org/jira/browse/WICKET-6042
>             Project: Wicket
>          Issue Type: Improvement
>          Components: wicket
>    Affects Versions: 7.1.0, 8.0.0-M1
>            Reporter: Tobias Soloschenko
>            Assignee: Tobias Soloschenko
>              Labels: features
>
> Like in the MediaComponent - Video for example (https://ci.apache.org/projects/wicket/apidocs/7.x/org/apache/wicket/markup/html/media/video/Video.html) the Image should be able to be configured with a String placed into the src attribute.
> Possible constructor to be used for that:
> Image(String id, IModel<?> model, String... srcs) 
> As of comments the requirement changed a bit and a new implementation "ExternalImage" is the target of this ticket:
> http://apache-wicket.1842946.n4.nabble.com/Image-based-on-external-url-model-object-tt4672692.html#none



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)