[#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) {
parent.getRocketPanel().updateExtras();
parent.getRocketPanel().updateFigures();
parent.getRocketPanel().updateRulers();
}
}
});

View File

@ -271,6 +271,15 @@ public class RocketPanel extends JPanel implements TreeSelectionListener, Change
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() {
if (is3d)
return;

View File

@ -15,6 +15,7 @@ import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.geom.Point2D;
import java.util.EventObject;
import javax.swing.BorderFactory;
import javax.swing.JComponent;
@ -56,6 +57,7 @@ public class ScaleScrollPane extends JScrollPane
private final AbstractScaleFigure figure;
private DoubleModel rulerUnit;
private UnitSelector unitSelector;
private Ruler horizontalRuler;
private Ruler verticalRuler;
@ -96,9 +98,9 @@ public class ScaleScrollPane extends JScrollPane
this.setColumnHeaderView(horizontalRuler);
this.setRowHeaderView(verticalRuler);
UnitSelector selector = new UnitSelector(rulerUnit);
selector.setFont(new Font("SansSerif", Font.PLAIN, 8));
this.setCorner(JScrollPane.UPPER_LEFT_CORNER, selector);
unitSelector = new UnitSelector(rulerUnit);
unitSelector.setFont(new Font("SansSerif", Font.PLAIN, 8));
this.setCorner(JScrollPane.UPPER_LEFT_CORNER, unitSelector);
this.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY));
@ -177,6 +179,14 @@ public class ScaleScrollPane extends JScrollPane
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(){
Rectangle view = this.getViewport().getViewRect();
return ("Viewport::("+view.getWidth()+","+view.getHeight()+")"