package org.lemsml.jlems.viz.plot; import java.awt.Color; import java.awt.Graphics2D; import org.lemsml.jlems.core.logging.E; public class PickWorldCanvas extends WorldCanvas { static final long serialVersionUID = 1001; PickStore pickStore; Builder builder; PickHandler pickHandler; BuildPaintInstructor buildPaintInstructor; GridPainter gridPainter; PaintListener paintListener = null; boolean drawGrid = true; public PickWorldCanvas(boolean interact) { super(interact); pickStore = new PickStore(); builder = new Builder(getPainter(), pickStore); pickHandler = new PickHandler(pickStore, getWorldTransform()); // prependHandler(pickHandler); gridPainter = new GridPainter(); } public void setXAxisLabel(String s) { gridPainter.setXAxisLabel(s); } public void setBg(String str) { SColor sc = new SColor(str); setBg(sc.getColor()); } public void setBg(Color c) { super.setBg(c); if (gridPainter != null) { gridPainter.setGridBackground(c); } } public void setNoGrid() { gridPainter = null; } public void setShowGrid(boolean b) { drawGrid = b; } public void setBuildPaintInstructor(BuildPaintInstructor pi) { buildPaintInstructor = pi; if (pi instanceof PickListener) { setPickListener((PickListener)pi); } } public void setPickListener(PickListener pl) { pickHandler.setPickListener(pl); } public void setGridColor(Color c) { if (gridPainter != null) { gridPainter.setGridColor(c); } } public void setAxisColor(Color c) { if (gridPainter != null) { gridPainter.setAxisColor(c); } } public void prePaint(Graphics2D g) { builder.clear(); builder.setCanvasSize(getWidth(), getHeight()); if (drawGrid && gridPainter != null) { gridPainter.paint(painter); } } public void postPaint(Graphics2D g) { if (mouse.isDown()) { } else { pickHandler.echoPaint(painter, showToolTips()); } } public void paint2D(Graphics2D g) { applyAAPreference(g); if (buildPaintInstructor != null) { buildPaintInstructor.instruct(painter, builder); } else if (paintInstructor != null) { paintInstructor.instruct(painter); } if (paintListener != null) { paintListener.painted(); } } public void attach(Object obj) { boolean done = false; if (obj instanceof BuildPaintInstructor) { setBuildPaintInstructor((BuildPaintInstructor)obj); done = true; } else if (obj instanceof PaintInstructor) { setPaintInstructor((PaintInstructor)obj); done = true; } if (obj instanceof PickListener) { setPickListener((PickListener)obj); done = true; } if (!done) { E.error(" - cant attach " + obj + " to a PickWorldCanvas"); } } public void setOnGridAxes() { gridPainter.setOnGridAxes(); } public void reframe() { if (buildPaintInstructor != null) { Box box = buildPaintInstructor.getLimitBox(painter); frameToBox(box); } else if (paintInstructor != null) { Box box = paintInstructor.getLimitBox(); frameToBox(box); } else { E.shortWarning("no paint instructor?"); } } public void addPaintListener(PaintListener pl) { paintListener = pl; } }