package com.github.pfichtner.jrunalyser.ui.map.painter; import java.awt.Graphics2D; import org.jdesktop.swingx.JXMapViewer; import org.jdesktop.swingx.painter.Painter; import com.github.pfichtner.jrunalyser.base.Delegate; /** * Class that implements {@link Painter} that delegates to the passed Painter * but let it draw with the offset passed. * * @author Peter Fichtner */ public class OffsetPainterDelegate implements Painter<JXMapViewer>, Delegate<Painter<JXMapViewer>> { private final Painter<JXMapViewer> delegate; private final int xOffset; private final int yOffset; public OffsetPainterDelegate(Painter<JXMapViewer> delegate, int xOffset, int yOffset) { this.delegate = delegate; this.xOffset = xOffset; this.yOffset = yOffset; } @Override public Painter<JXMapViewer> getDelegate() { return this.delegate; } @Override public void paint(Graphics2D g, JXMapViewer viewer, int x, int y) { g.translate(this.xOffset, this.yOffset); this.delegate.paint(g, viewer, x, y); g.translate(-this.xOffset, -this.yOffset); } }