[#2151] Update the ruler unit upon a unit change in prefs

This commit is contained in:
SiboVG 2023-03-29 18:26:18 +02:00
parent 6084ba6512
commit b1cf701448
3 changed files with 25 additions and 5 deletions

View File

@ -97,6 +97,7 @@ public class PreferencesDialog extends JDialog {
if (parent != null) { if (parent != null) {
parent.getRocketPanel().updateExtras(); parent.getRocketPanel().updateExtras();
parent.getRocketPanel().updateFigures(); parent.getRocketPanel().updateFigures();
parent.getRocketPanel().updateRulers();
} }
} }
}); });

View File

@ -271,6 +271,15 @@ public class RocketPanel extends JPanel implements TreeSelectionListener, Change
figure3d.updateFigure(); figure3d.updateFigure();
} }
/**
* Updates the rulers of the rocket panel to the currently selected default unit.
*/
public void updateRulers() {
scrollPane.updateRulerUnit();
scrollPane.revalidate();
scrollPane.repaint();
}
private void go3D() { private void go3D() {
if (is3d) if (is3d)
return; return;

View File

@ -15,6 +15,7 @@ import java.awt.event.MouseEvent;
import java.awt.event.MouseListener; import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener; import java.awt.event.MouseMotionListener;
import java.awt.geom.Point2D; import java.awt.geom.Point2D;
import java.util.EventObject;
import javax.swing.BorderFactory; import javax.swing.BorderFactory;
import javax.swing.JComponent; import javax.swing.JComponent;
@ -56,6 +57,7 @@ public class ScaleScrollPane extends JScrollPane
private final AbstractScaleFigure figure; private final AbstractScaleFigure figure;
private DoubleModel rulerUnit; private DoubleModel rulerUnit;
private UnitSelector unitSelector;
private Ruler horizontalRuler; private Ruler horizontalRuler;
private Ruler verticalRuler; private Ruler verticalRuler;
@ -83,7 +85,7 @@ public class ScaleScrollPane extends JScrollPane
this.component = component; this.component = component;
this.figure = (AbstractScaleFigure) component; this.figure = (AbstractScaleFigure) component;
rulerUnit = new DoubleModel(0.0, UnitGroup.UNITS_LENGTH); rulerUnit = new DoubleModel(0.0, UnitGroup.UNITS_LENGTH);
rulerUnit.addChangeListener(new ChangeListener() { rulerUnit.addChangeListener(new ChangeListener() {
@Override @Override
@ -95,10 +97,10 @@ public class ScaleScrollPane extends JScrollPane
verticalRuler = new Ruler(Ruler.VERTICAL); verticalRuler = new Ruler(Ruler.VERTICAL);
this.setColumnHeaderView(horizontalRuler); this.setColumnHeaderView(horizontalRuler);
this.setRowHeaderView(verticalRuler); this.setRowHeaderView(verticalRuler);
UnitSelector selector = new UnitSelector(rulerUnit); unitSelector = new UnitSelector(rulerUnit);
selector.setFont(new Font("SansSerif", Font.PLAIN, 8)); unitSelector.setFont(new Font("SansSerif", Font.PLAIN, 8));
this.setCorner(JScrollPane.UPPER_LEFT_CORNER, selector); this.setCorner(JScrollPane.UPPER_LEFT_CORNER, unitSelector);
this.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY)); this.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY));
@ -176,6 +178,14 @@ public class ScaleScrollPane extends JScrollPane
public Unit getCurrentUnit() { public Unit getCurrentUnit() {
return rulerUnit.getCurrentUnit(); return rulerUnit.getCurrentUnit();
} }
/**
* Updates the units of the ruler to the default units of the current unit group.
*/
public void updateRulerUnit() {
rulerUnit.setCurrentUnit(UnitGroup.UNITS_LENGTH.getDefaultUnit());
unitSelector.stateChanged(new EventObject(this));
}
public String toViewportString(){ public String toViewportString(){
Rectangle view = this.getViewport().getViewRect(); Rectangle view = this.getViewport().getViewRect();