EN · DE · RU · FR · ES

#3183: BatikImage.java

projectforge-wicket/src/main/java/org/projectforge/web/wicket/BatikImage.java Type : Java · Rôle : Composant · Source : projectforge-wicket/src/main/java/org/projectforge/web/wicket/BatikImage.java 86 lignes · 48 code · 24 commentaires · 14 vides
Fichier source à projectforge-wicket/src/main/java/org/projectforge/web/wicket/BatikImage.java contenant le code Java pour la couche Composant.

Structure du code

Paquetage : org.projectforge.web.wicket

Classes : BatikImage

Étend : Image

Méthodes (2) : getImageResource, configureResponse

Champs (2) : serialVersionUID, width

Importations : 8 paquetages

Code source (abrégé)

package org.projectforge.web.wicket;

import org.apache.wicket.markup.html.image.Image;
import org.apache.wicket.request.http.WebResponse.CacheScope;
import org.apache.wicket.request.resource.AbstractResource;
import org.apache.wicket.request.resource.DynamicImageResource;
import org.projectforge.framework.renderer.BatikImageRenderer;
import org.projectforge.framework.renderer.ImageFormat;
import org.w3c.dom.Document;

import java.time.Duration;

public class BatikImage extends Image
{
  private static final long serialVersionUID = -167624996888880342L;

  private final int width;

  private byte[] ba;

  private transient Document document;

  public BatikImage(final String id, final Document document, final int width)
  {
    super(id);
    this.document = document;
    this.width = width;
  }

  private byte[] getByteArray()
  {
    if (ba == null) {
      ba = BatikImageRenderer.getByteArray(document, width, ImageFormat.PNG);
    }
    return ba;
  }

  @SuppressWarnings("serial")
  @Override
  protected AbstractResource getImageResource()
  {
    return new DynamicImageResource() {

      @Override
      protected byte[] getImageData(final Attributes attributes)
      {
        return getByteArray();
      }

      @Override
      protected void configureResponse(final ResourceResponse response, final Attributes attributes)
      {
        super.configureResponse(response, attributes);

        // if (isCacheable() == false) {
        response.setCacheDuration(Duration.ofMillis(0));
        response.setCacheScope(CacheScope.PRIVATE);
        // }
      }
    };
  }

}

Historique Git

868d6abb7 2025 -> 2026
63081666f En-têtes des fichiers source : 2024 -> 2025.
57935eb50 Java 11, mais Wicket 9. Fonctionne plus ou moins (à faire : scripts Kotlin, problèmes de sérialisation Wicket sur WicketMenuBuilder, tests jupiter, ...)
b6092df09 Copyright 2023 -> 2024
ab45d51fa Copyright 2001-2022 -> 2001-2023.