import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
-import javax.swing.JViewport;
import javax.swing.ScrollPaneConstants;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public static final int MINOR_TICKS = 3;
public static final int MAJOR_TICKS = 30;
-
+
private JComponent component;
private ScaleFigure figure;
- private JViewport viewport;
private DoubleModel rulerUnit;
private Ruler horizontalRuler;
this.figure = (ScaleFigure) component;
this.allowFit = allowFit;
-
+
rulerUnit = new DoubleModel(0.0, UnitGroup.UNITS_LENGTH);
rulerUnit.addChangeListener(new ChangeListener() {
@Override
this.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY));
-
- viewport = this.getViewport();
+
viewport.addMouseListener(this);
viewport.addMouseMotionListener(this);
}
-
+
public double getScaling() {
return figure.getScaling();
}
//////////////// Mouse handlers ////////////////
-
+
private int dragStartX = 0;
private int dragStartY = 0;
private Rectangle dragRectangle = null;
}
-
+
//////////////// The view port rulers ////////////////
-
+
private class Ruler extends JComponent {
public static final int HORIZONTAL = 0;
public static final int VERTICAL = 1;
g2.setColor(getBackground());
g2.fillRect(area.x, area.y, area.width, area.height + 100);
-
+
int startpx, endpx;
if (orientation == HORIZONTAL) {
startpx = area.x;
Tick[] ticks = unit.getTicks(start, end, minor, major);
-
+
// Set color & hints
g2.setColor(Color.BLACK);
g2.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL,