package SesameGUI; import java.awt.Graphics2D; import java.awt.*; import java.awt.geom.*; import javax.swing.*; import java.text.NumberFormat; import java.awt.font.FontRenderContext; public class VerticalScale extends Scale { public VerticalScale(SpectrumView view) { super(view); } public void draw(Graphics2D g) { g.setPaint(Color.gray); double iter; double pos; DoubleWrapper paneStep = new DoubleWrapper(); iter = getLowerVisibleBound(); paneStep.value = getStep(); real2PaneAbsolute(paneStep); g.draw(new Line2D.Double(getView().getLeftMargin(), getView().getBottomMargin(), getView().getLeftMargin(), getView().getTopMargin())); // draw tickers pos = getView().getBottomMargin(); for (iter = getLowerVisibleBound() - getStep(); iter < getUpperVisibleBound(); iter += getStep()) { if (isShowGrid()) g.draw(new Line2D.Double(getView().getLeftMargin() - 2, pos, getView().getRightMargin(), pos)); else g.draw(new Line2D.Double(getView().getLeftMargin() - 2, pos, getView().getLeftMargin(), pos)); pos += paneStep.value; } g.setPaint(Color.black); DoubleWrapper xOrigin = new DoubleWrapper(); xOrigin.value = getOrigin() * (-1.0); real2Pane(xOrigin); //xOrigin.value = getView().getBottomMargin() + xOrigin.value; g.draw(new Line2D.Double(getView().getLeftMargin(), xOrigin.value, getView().getRightMargin(), xOrigin.value)); } public void pane2Real(DoubleWrapper paneCoord) { setFactor(getLength() / (getView().getTopMargin() - getView().getBottomMargin())); paneCoord.value *= getFactor(); paneCoord.value += getOrigin(); } public void real2PaneAbsolute(DoubleWrapper realCoord) { setFactor(getLength() / (getView().getTopMargin() - getView().getBottomMargin())); realCoord.value /= getFactor(); } public void real2Pane(DoubleWrapper realCoord) { real2PaneAbsolute(realCoord); realCoord.value += getView().getBottomMargin(); } public double getOrigin() { return getLowerVisibleBound(); } public double getLength() { return getUpperBound() - getLowerBound(); } }