[Schmitzm-commits] r837 - trunk/src/schmitzm/geotools/gui
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Sat May 8 19:46:45 CEST 2010
Author: alfonx
Date: 2010-05-08 19:46:44 +0200 (Sat, 08 May 2010)
New Revision: 837
Modified:
trunk/src/schmitzm/geotools/gui/ScalePane.java
Log:
Vorbereitung der Unterst?\195?\188tzung von verschiedenen Units in der Ma?\195?\159stabsanzeige
http://wald.intevation.org/tracker/index.php?func=detail&aid=1498&group_id=47&atid=293
Modified: trunk/src/schmitzm/geotools/gui/ScalePane.java
===================================================================
--- trunk/src/schmitzm/geotools/gui/ScalePane.java 2010-05-08 17:25:09 UTC (rev 836)
+++ trunk/src/schmitzm/geotools/gui/ScalePane.java 2010-05-08 17:46:44 UTC (rev 837)
@@ -35,115 +35,168 @@
import java.awt.Insets;
import java.text.DecimalFormat;
+import javax.measure.unit.Unit;
import javax.swing.BorderFactory;
import javax.swing.JLabel;
+import org.geotools.referencing.CRS;
+import org.geotools.resources.CRSUtilities;
+import org.opengis.referencing.crs.CoordinateReferenceSystem;
+
import schmitzm.swing.JPanel;
/**
* Diese Klasse stellt einen Massstab-Balken ({@link ScalePanel}) und die
* dazugehoerende Aufloesung in Metern pro Bildschirm-Pixel dar.
- * @author <a href="mailto:martin.schmitz at koeln.de">Martin Schmitz</a> (University of Bonn/Germany)
+ *
+ * @author <a href="mailto:martin.schmitz at koeln.de">Martin Schmitz</a>
+ * (University of Bonn/Germany)
* @version 1.0
*/
-public class ScalePane extends JPanel{
- private static final DecimalFormat numFormat = new DecimalFormat("###,###,##0.00");
+public class ScalePane extends JPanel {
+ private static final DecimalFormat numFormat = new DecimalFormat(
+ "###,###,##0.00");
- /** Massstab-Balken */
- private ScalePanel scalePanel = new ScalePanel();
- /** Label in dem die Aufloesung in Meter pro Pixel angezeigt wird. */
- private JLabel scaleLabel = new JLabel("");
+ /**
+ * ScalePane can show the scale in the following units.
+ */
+ enum UNITS {
+ /**
+ * Show units in meters and switch to kilometers when the numbers get
+ * huge
+ **/
+ metersKilometers,
+ /** Show units in feet and switch to miles when the numbers get huge **/
+ feetMiles
+ }
- /**
- * Erzeugt eine Mass-Stab.
- */
- public ScalePane() {
- setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0));
- setScale(1.0);
- this.setLayout( new GridBagLayout() );
- this.add( getScalePanel(), new GridBagConstraints(0,0,2,1,1.0,1.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,0,0,0),0,0) );
- this.getScaleLabel().setHorizontalAlignment(JLabel.LEFT);
- this.add( getScaleLabel(), new GridBagConstraints(0,1,1,1,0.5,0.0,GridBagConstraints.NORTHWEST,GridBagConstraints.NONE,new Insets(0,0,0,0),0,0) );
- }
+ /** Massstab-Balken */
+ private ScalePanel scalePanel = new ScalePanel();
- /**
- * Liefert die dargestellte Aufloesung in Pixel pro Meter.
- */
- public double getScaleInPixels() {
- return getScalePanel().getScaleInPixels();
- }
+ /** Label in dem die Aufloesung in Meter pro Pixel angezeigt wird. */
+ private JLabel scaleLabel = new JLabel("");
- /**
- * Liefert die dargestellte Aufloesung in Metern pro Pixel.
- */
- public double getScaleInMeters() {
- return getScalePanel().getScaleInMeters();
- }
+ /**
+ * The units the scale will be presented in. By default meters and
+ * kilometers are used.
+ **/
+ private UNITS units = UNITS.metersKilometers;
- /**
- * Setzt die Aufloesung des Mass-Stabs und aktualisiert die Anzeige der
- * Komponente.
- * @param meters Meter, die durch einen Bildschirm-Pixel repraesentiert werden
- */
- public void setScale(double meters) {
- getScalePanel().setScale(meters);
-
- // TODO i8n
- getScaleLabel().setText("1 pixel = "+numFormat.format(meters)+"m");
- repaint();
- }
+ /**
+ * @return the units used in the scale. Not all possible Unit values are
+ * allowed.
+ */
+ public UNITS getUnits() {
+ return units;
+ }
- /**
- * Setzt die Aufloesung des Mass-Stabs und aktualisiert die Anzeige der
- * Komponente.
- * @param pixels Anzahl an Pixeln, die einen Meter repraesentieren werden
- * @exception Ill
- */
- public void setScale(long pixels) {
- getScalePanel().setScale(pixels);
-
- // TODO i8n
- getScaleLabel().setText(pixels+" pixel = 1m");
- repaint();
- }
-
- /**
- * Nuetzlich wenn die Componente gedruckt (z.B. wenn ein Screenshot gemacht wird) wird. Diese Angabe macht kaum sinn wenn gedruckt wird, oder?!
- *
- * @author <a href="mailto:skpublic at wikisquare.de">Stefan Alfons
- * Krüger</a>
- */
- @Override
- public void print(Graphics g) {
- return;
-// final Color orig = getBackground();
-// setBackground(Color.WHITE);
-// // remove the informatil xxx pixel = 1m
-// final String backupPixelText = scaleLabel.getText();
-// scaleLabel.setText("");
-// // wrap in try/finally so that we always restore the state
-// try {
-// super.print(g);
-// } finally {
-// setBackground(orig);
-// scaleLabel.setText(backupPixelText);
-// }
- }
+ /**
+ * Liefert die dargestellte Aufloesung in Pixel pro Meter.
+ */
+ public double getScaleInPixels() {
+ return getScalePanel().getScaleInPixels();
+ }
-public void setScaleLabel(JLabel scaleLabel) {
- this.scaleLabel = scaleLabel;
-}
+ /**
+ * Erzeugt eine Mass-Stab.
+ */
+ public ScalePane() {
+ setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0));
+ setScale(1.0);
+ this.setLayout(new GridBagLayout());
+ this.add(getScalePanel(), new GridBagConstraints(0, 0, 2, 1, 1.0, 1.0,
+ GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(
+ 0, 0, 0, 0), 0, 0));
+ this.getScaleLabel().setHorizontalAlignment(JLabel.LEFT);
+ this.add(getScaleLabel(), new GridBagConstraints(0, 1, 1, 1, 0.5, 0.0,
+ GridBagConstraints.NORTHWEST, GridBagConstraints.NONE,
+ new Insets(0, 0, 0, 0), 0, 0));
+ }
-public JLabel getScaleLabel() {
- return scaleLabel;
-}
+ /**
+ * Define the unit used in the scale. Not all possible Unit values are
+ * allowed.
+ */
+ public void setUnits(UNITS unit) {
+ this.units = unit;
+ }
-public void setScalePanel(ScalePanel scalePanel) {
- this.scalePanel = scalePanel;
-}
+ /**
+ * Liefert die dargestellte Aufloesung in Metern pro Pixel.
+ */
+ public double getScaleInMeters() {
+ return getScalePanel().getScaleInMeters();
+ }
-public ScalePanel getScalePanel() {
- return scalePanel;
-}
+ /**
+ * Setzt die Aufloesung des Mass-Stabs und aktualisiert die Anzeige der
+ * Komponente.
+ *
+ * @param meters
+ * Meter, die durch einen Bildschirm-Pixel repraesentiert werden
+ */
+ public void setScale(double meters) {
+ getScalePanel().setScale(meters);
+ // TODO i8n
+ getScaleLabel().setText("1 pixel = " + numFormat.format(meters) + "m");
+ repaint();
+ }
+
+ /**
+ * Setzt die Aufloesung des Mass-Stabs und aktualisiert die Anzeige der
+ * Komponente.
+ *
+ * @param pixels
+ * Anzahl an Pixeln, die einen Meter repraesentieren werden
+ * @exception Ill
+ */
+ public void setScale(long pixels) {
+ getScalePanel().setScale(pixels);
+
+ // TODO i8n
+ getScaleLabel().setText(pixels + " pixel = 1m");
+ repaint();
+ }
+
+ /**
+ * Nuetzlich wenn die Componente gedruckt (z.B. wenn ein Screenshot gemacht
+ * wird) wird. Diese Angabe macht kaum sinn wenn gedruckt wird, oder?!
+ *
+ * @author <a href="mailto:skpublic at wikisquare.de">Stefan Alfons
+ * Krüger</a>
+ */
+ @Override
+ public void print(Graphics g) {
+ return;
+ // final Color orig = getBackground();
+ // setBackground(Color.WHITE);
+ // // remove the informatil xxx pixel = 1m
+ // final String backupPixelText = scaleLabel.getText();
+ // scaleLabel.setText("");
+ // // wrap in try/finally so that we always restore the state
+ // try {
+ // super.print(g);
+ // } finally {
+ // setBackground(orig);
+ // scaleLabel.setText(backupPixelText);
+ // }
+ }
+
+ public void setScaleLabel(JLabel scaleLabel) {
+ this.scaleLabel = scaleLabel;
+ }
+
+ public JLabel getScaleLabel() {
+ return scaleLabel;
+ }
+
+ public void setScalePanel(ScalePanel scalePanel) {
+ this.scalePanel = scalePanel;
+ }
+
+ public ScalePanel getScalePanel() {
+ return scalePanel;
+ }
+
}
More information about the Schmitzm-commits
mailing list