package nodebox.client.visualizer; import nodebox.ui.Theme; import java.awt.*; import java.awt.geom.AffineTransform; import java.awt.geom.Dimension2D; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; /** * The objects visualizer can visualize everything. */ public final class LastResortVisualizer implements Visualizer { public static final LastResortVisualizer INSTANCE = new LastResortVisualizer(); private static final Rectangle2D BIG_RECTANGLE = new Rectangle2D.Double(0, 0, Double.MAX_VALUE, Double.MAX_VALUE); private static final Point2D ZERO_POINT = new Point2D.Double(0, 0); private LastResortVisualizer() { } public boolean accepts(Iterable<?> objects, Class listClass) { return true; } public Rectangle2D getBounds(Iterable<?> objects) { return BIG_RECTANGLE; } public Point2D getOffset(Iterable<?> objects, Dimension2D size) { return ZERO_POINT; } public void draw(Graphics2D g, Iterable<?> objects) { if (objects == null) { return; } g.setColor(Theme.TEXT_NORMAL_COLOR); g.setFont(Theme.EDITOR_FONT); AffineTransform t = g.getTransform(); for (Object o : objects) { String s = o.toString(); for (String line : s.split("\n")) { g.drawString(line, 5, 20); g.translate(0, 14); } g.drawLine(-100, 10, 1000, 10); g.translate(0, 14); } g.setTransform(t); } }