[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&uuml;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&uuml;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