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)