[Schmitzm-commits] r1222 - in trunk: . src/schmitzm/geotools/gui src/schmitzm/geotools/gui/resource/locales src/skrueger/geotools

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Wed Nov 3 15:07:17 CET 2010


Author: alfonx
Date: 2010-11-03 15:07:08 +0100 (Wed, 03 Nov 2010)
New Revision: 1222

Removed:
   trunk/src/skrueger/geotools/ZoomXMapPaneMouseListener.java
Modified:
   trunk/pom.xml
   trunk/src/schmitzm/geotools/gui/GeoPositionLabel.java
   trunk/src/schmitzm/geotools/gui/MapPaneStatusBar.java
   trunk/src/schmitzm/geotools/gui/resource/locales/GTResourceBundle.properties
   trunk/src/skrueger/geotools/CrsLabel.java
   trunk/src/skrueger/geotools/MapView.java
Log:
Added a label for the CRS to the MapPaneStatusBar

Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml	2010-11-03 13:29:17 UTC (rev 1221)
+++ trunk/pom.xml	2010-11-03 14:07:08 UTC (rev 1222)
@@ -231,7 +231,7 @@
 		<dependency>
 			<groupId>com.miglayout</groupId>
 			<artifactId>miglayout</artifactId>
-			<version>3.7.2</version>
+			<version>3.7.3</version>
 		</dependency>
 
 		<dependency>

Modified: trunk/src/schmitzm/geotools/gui/GeoPositionLabel.java
===================================================================
--- trunk/src/schmitzm/geotools/gui/GeoPositionLabel.java	2010-11-03 13:29:17 UTC (rev 1221)
+++ trunk/src/schmitzm/geotools/gui/GeoPositionLabel.java	2010-11-03 14:07:08 UTC (rev 1222)
@@ -47,218 +47,250 @@
 import schmitzm.lang.ResourceProvider;
 
 /**
- * Diese Klasse stellt ein {@link JLabel} dar, in dem (2dimensionale) Geo-Koordinaten
- * angezeigt werden. Dabei werden die Koordinaten auf eine bestimmte Anzahl
- * an Nachkommastellen gerundet.<br>
- * Die Klasse fungiert als {@link MouseListener} und {@link MouseMotionListener} und
- * kann so direkt an ein {@link SelectableXMapPane} gekoppelt werden. Die Koordinaten-Darstellung
- * im Label aktualisiert sich somit automatisch, sobald sich die Maus ueber die
- * Karte bewegt. Wird ein Kartenbereich selektiert (gedrueckte linke Maustaste),
- * werden neben der aktuellen Position auch die Koordinaten des Selektionsstart
- * angezeigt.<br>
+ * Diese Klasse stellt ein {@link JLabel} dar, in dem (2dimensionale)
+ * Geo-Koordinaten angezeigt werden. Dabei werden die Koordinaten auf eine
+ * bestimmte Anzahl an Nachkommastellen gerundet.<br>
+ * Die Klasse fungiert als {@link MouseListener} und {@link MouseMotionListener}
+ * und kann so direkt an ein {@link SelectableXMapPane} gekoppelt werden. Die
+ * Koordinaten-Darstellung im Label aktualisiert sich somit automatisch, sobald
+ * sich die Maus ueber die Karte bewegt. Wird ein Kartenbereich selektiert
+ * (gedrueckte linke Maustaste), werden neben der aktuellen Position auch die
+ * Koordinaten des Selektionsstart angezeigt.<br>
  * <b>Bemerke:</b><br>
- * Eine Instanz des <code>GeoPositionLabel</code> muss dem {@link SelectableXMapPane} sowohl
- * als {@linkplain SelectableXMapPane#addMouseListener(MouseListener) MouseListener}, als
- * auch als {@linkplain SelectableXMapPane#addMouseMotionListener(MouseMotionListener) MouseMotionListener}
- * hinzugefuegt werden. Ansonsten bekommt es nicht alle notwendigen Informationen
- * mit!
+ * Eine Instanz des <code>GeoPositionLabel</code> muss dem
+ * {@link SelectableXMapPane} sowohl als
+ * {@linkplain SelectableXMapPane#addMouseListener(MouseListener) MouseListener}
+ * , als auch als
+ * {@linkplain SelectableXMapPane#addMouseMotionListener(MouseMotionListener)
+ * MouseMotionListener} hinzugefuegt werden. Ansonsten bekommt es nicht alle
+ * notwendigen Informationen mit!
+ * 
  * @see #setFractionDigits(int)
  * @see #getFractionDigits()
- * @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 GeoPositionLabel extends JLabel implements MouseInputListener {
 
-  // Faktor mit dem die Koordinaten vor dem Runden multipliziert und nach
-  // dem Runden dividiert werden
-  // --> bestimmt die dargestellten Nachkommastellen
-  private double fracFactor = 0.0;
+	// Faktor mit dem die Koordinaten vor dem Runden multipliziert und nach
+	// dem Runden dividiert werden
+	// --> bestimmt die dargestellten Nachkommastellen
+	private double fracFactor = 0.0;
 
-  /** Speichert das Format fuer die dargstellten Koordinaten */
-  protected final DecimalFormat decForm = new DecimalFormat();
+	/** Speichert das Format fuer die dargstellten Koordinaten */
+	protected final DecimalFormat decForm = new DecimalFormat();
 
-  /** Speichert die Koordinaten, die in dem Moment aktuell sind, wenn die linke
-   *  Maustaste gedruckt wird. Und zwar solange, bis die Taste wieder losgelassen
-   *  wird. Danach wieder <code>null</code>. */
-  protected Point2D selStartCoord = null;
+	/**
+	 * Speichert die Koordinaten, die in dem Moment aktuell sind, wenn die linke
+	 * Maustaste gedruckt wird. Und zwar solange, bis die Taste wieder
+	 * losgelassen wird. Danach wieder <code>null</code>.
+	 */
+	protected Point2D selStartCoord = null;
 
-  /**
-   * Ein Text der vor die Koorinatendarstellung geschrieben wird, z.b.: Koordinate:
-   */
-  private String preText = GeotoolsGUIUtil.RESOURCE
-	.getString(GeoPositionLabel.class
-			.getName()
-			+ ".LABEL_PREFIX");
+	/**
+	 * Ein Text der vor die Koorinatendarstellung geschrieben wird, z.b.:
+	 * Koordinate:
+	 */
+	private String preText = GeotoolsGUIUtil.RESOURCE
+			.getString(GeoPositionLabel.class.getName() + ".LABEL_PREFIX");
 
-  /**
-   * Erzeugt ein neues Label. Die Koordinaten werden ohne Nachkommastellen
-   * dargestellt.
-   */
-  public GeoPositionLabel() {
-    this(0);
-  }
+	// Chaches, when the TT was updated the last time, since we do not want to
+	// update it on every mousemove. On the other hand the CRS may change, and
+	// it has to be updated.
+	private long lastTTupdateTime;
 
-	protected static ResourceProvider RESOURCE = ResourceProvider.newInstance(LangUtil
-			.extendPackagePath(GeotoolsGUIUtil.class,
+	/**
+	 * Erzeugt ein neues Label. Die Koordinaten werden ohne Nachkommastellen
+	 * dargestellt.
+	 */
+	public GeoPositionLabel() {
+		this(0);
+	}
+
+	protected static ResourceProvider RESOURCE = ResourceProvider.newInstance(
+			LangUtil.extendPackagePath(GeotoolsGUIUtil.class,
 					"resource.locales.GTResourceBundle"), Locale.ENGLISH);
 
-  /**
-   * Erzeugt ein neues Label.
-   * @param fracDigits Anzahl an Nachkommastellen, auf die die Koordinaten gerundet
-   *                   werden
-   */
-  public GeoPositionLabel(final int fracDigits) {
-    super(" ");
-    // eine Stelle vor dem Komma soll immer dargestellt werden
-    this.decForm.setMinimumIntegerDigits(1);
-    // Nachkommastellen setzen
-    this.setFractionDigits(fracDigits);
-  }
+	/**
+	 * Erzeugt ein neues Label.
+	 * 
+	 * @param fracDigits
+	 *            Anzahl an Nachkommastellen, auf die die Koordinaten gerundet
+	 *            werden
+	 */
+	public GeoPositionLabel(final int fracDigits) {
+		super(" ");
+		// eine Stelle vor dem Komma soll immer dargestellt werden
+		this.decForm.setMinimumIntegerDigits(1);
+		// Nachkommastellen setzen
+		this.setFractionDigits(fracDigits);
+	}
 
-  /**
-   * Stellt die Koordinaten im Label dar, wenn es sich bei dem Event um
-   * ein {@link GeoMouseEvent} handelt  oder das Event von einem {@link SelectableXMapPane}
-   * ausgeloest wurde.<br>
-   * Wird von {@link #mousePressed(MouseEvent)}, {@link #mouseMoved(MouseEvent)}
-   * und {@link #mouseDragged(MouseEvent)} aufgerufen.
-   * @see #createGeoPositionString(Point2D,Point2D)
-   */
-  protected void displayCoordinates(final MouseEvent e) {
-    if ( e==null || !(e instanceof MapMouseEvent) && !(e.getSource() instanceof SelectableXMapPane) )
-      return;
+	/**
+	 * Stellt die Koordinaten im Label dar, wenn es sich bei dem Event um ein
+	 * {@link GeoMouseEvent} handelt oder das Event von einem
+	 * {@link SelectableXMapPane} ausgeloest wurde.<br>
+	 * Wird von {@link #mousePressed(MouseEvent)},
+	 * {@link #mouseMoved(MouseEvent)} und {@link #mouseDragged(MouseEvent)}
+	 * aufgerufen.
+	 * 
+	 * @see #createGeoPositionString(Point2D,Point2D)
+	 */
+	protected void displayCoordinates(final MouseEvent e) {
+		if (e == null || !(e instanceof MapMouseEvent)
+				&& !(e.getSource() instanceof SelectableXMapPane))
+			return;
 
-    // aktuelle Geo-Position ermitteln und runden
-    DirectPosition2D actCoord = SelectableXMapPane.getMapCoordinatesFromEvent(e);
-    if ( actCoord == null )
-      return;
-    final double actLat = Math.round(actCoord.getX() * fracFactor) / fracFactor;
-    final double actLon = Math.round(actCoord.getY() * fracFactor) / fracFactor;
-    // Position des Selektion-Startpunkts runden
-    double startLat = 0.0;
-    double startLon = 0.0;
-    if (selStartCoord != null) {
-      startLat = Math.round(selStartCoord.getX() * fracFactor) / fracFactor;
-      startLon = Math.round(selStartCoord.getY() * fracFactor) / fracFactor;
-    }
-    
-    // Wir erfahren erst jetzt das CRS und setzen den ToolTip
-    if (getToolTipText() == null) {
-    	setToolTipText( preText+RESOURCE.getString(
-				"schmitzm.geotools.gui.GridPanelFormatter.ToolTipTemplate",
-				GeotoolsGUIUtil.getTitleForCRS(actCoord.getCoordinateReferenceSystem()), CRSUtilities.getUnit(actCoord.getCoordinateReferenceSystem()
-						.getCoordinateSystem())));
-    }
-    
+		// aktuelle Geo-Position ermitteln und runden
+		DirectPosition2D actCoord = SelectableXMapPane
+				.getMapCoordinatesFromEvent(e);
+		if (actCoord == null)
+			return;
+		final double actLat = Math.round(actCoord.getX() * fracFactor)
+				/ fracFactor;
+		final double actLon = Math.round(actCoord.getY() * fracFactor)
+				/ fracFactor;
+		// Position des Selektion-Startpunkts runden
+		double startLat = 0.0;
+		double startLon = 0.0;
+		if (selStartCoord != null) {
+			startLat = Math.round(selStartCoord.getX() * fracFactor)
+					/ fracFactor;
+			startLon = Math.round(selStartCoord.getY() * fracFactor)
+					/ fracFactor;
+		}
 
-    
-    // Label setzen
-    setText(preText+createGeoPositionString(
-        new Point2D.Double(actLat, actLon),
-        selStartCoord == null ? null : new Point2D.Double(startLat, startLon)
-    ));
-    
-    
-  }
+		if (getToolTipText() == null
+				|| (System.currentTimeMillis() - lastTTupdateTime) > 1000) {
+			lastTTupdateTime = System.currentTimeMillis();
+			// Tooltip fast immer neu setzen, da sich das CRS ändern kann!
+			setToolTipText(preText
+					+ RESOURCE
+							.getString(
+									"schmitzm.geotools.gui.GridPanelFormatter.ToolTipTemplate",
+									GeotoolsGUIUtil.getTitleForCRS(actCoord
+											.getCoordinateReferenceSystem()),
+									CRSUtilities.getUnit(actCoord
+											.getCoordinateReferenceSystem()
+											.getCoordinateSystem())));
+		}
 
-  /**
-   * Erzeugt den String, in dem die Koordinaten dargestellt werden. Unterklassen
-   * koennen diese Methode ueberschreiben, um die Darstellung zu aendern.
-   * Die uebergebenen Koordinaten sind bereits entsprechend der gesetzten
-   * Nachkommastellen gerundet!
-   * @param actCoord aktuelle Geoposition des Mauszeigers
-   * @param selStartCoord Geoposition des Selektion-Startpunkt (<code>null</code>
-   *        falls die aktuell kein Bereich selektiert wird)
-   */
-  protected String createGeoPositionString(final Point2D actCoord, final Point2D selStartCoord) {
-    String coordText = "";
-    // wenn die linke Maustaste gedrueckt ist (also ein Bereich
-    // selektiert wird), sind in selStartCoord die Startkoordinaten
-    // gespeichert
-    if ( selStartCoord != null )
-      coordText = decForm.format(selStartCoord.getX())+" / "+decForm.format(selStartCoord.getY())+" - ";
-    coordText = coordText + decForm.format(actCoord.getX())+" / "+decForm.format(actCoord.getY());
+		// Label setzen
+		setText(preText
+				+ createGeoPositionString(new Point2D.Double(actLat, actLon),
+						selStartCoord == null ? null : new Point2D.Double(
+								startLat, startLon)));
 
-    return coordText;
-  }
+	}
 
-  /**
-   * Setzt die Anzahl an Nachkommastellen, die fuer die Koordinaten
-   * dargestellt werden
-   * @param fracDigits Anzahl an Nachkommastellen
-   */
-  public void setFractionDigits(final int fracDigits) {
-    this.fracFactor = Math.pow(10.0,fracDigits);
-    this.decForm.setMinimumFractionDigits(fracDigits);
-    this.decForm.setMaximumFractionDigits(fracDigits);
-  }
+	/**
+	 * Erzeugt den String, in dem die Koordinaten dargestellt werden.
+	 * Unterklassen koennen diese Methode ueberschreiben, um die Darstellung zu
+	 * aendern. Die uebergebenen Koordinaten sind bereits entsprechend der
+	 * gesetzten Nachkommastellen gerundet!
+	 * 
+	 * @param actCoord
+	 *            aktuelle Geoposition des Mauszeigers
+	 * @param selStartCoord
+	 *            Geoposition des Selektion-Startpunkt (<code>null</code> falls
+	 *            die aktuell kein Bereich selektiert wird)
+	 */
+	protected String createGeoPositionString(final Point2D actCoord,
+			final Point2D selStartCoord) {
+		String coordText = "";
+		// wenn die linke Maustaste gedrueckt ist (also ein Bereich
+		// selektiert wird), sind in selStartCoord die Startkoordinaten
+		// gespeichert
+		if (selStartCoord != null)
+			coordText = decForm.format(selStartCoord.getX()) + " / "
+					+ decForm.format(selStartCoord.getY()) + " - ";
+		coordText = coordText + decForm.format(actCoord.getX()) + " / "
+				+ decForm.format(actCoord.getY());
 
-  /**
-   * Liefert die Anzahl an Nachkommastellen, die fuer die Koordinaten
-   * dargestellt werden
-   */
-  public int getFractionDigits() {
-    return (int)Math.log10(this.fracFactor);
-  }
+		return coordText;
+	}
 
-  /**
-   * Wird aufgerufen, wenn der Maus-Button gedrueckt wird.
-   * Handelt es sich bei dem Event um ein {@link GeoMouseEvent} oder das Event
-   * von einem {@link SelectableXMapPane} ausgeloest wurde, werden die
-   * aktuellen Koordinaten in {@link #selStartCoord} gespeichert.
-   */
-  public void mousePressed(final MouseEvent e) {
-    final Point2D p = SelectableXMapPane.getMapCoordinatesFromEvent(e);
-    if ( p != null && e.getButton() == MouseEvent.BUTTON1) {
-      selStartCoord = p;
-      //MS: on simple click the Envelope-Coordinates should not
-      //    be shown!
-      //displayCoordinates(e);
-    }
-  }
+	/**
+	 * Setzt die Anzahl an Nachkommastellen, die fuer die Koordinaten
+	 * dargestellt werden
+	 * 
+	 * @param fracDigits
+	 *            Anzahl an Nachkommastellen
+	 */
+	public void setFractionDigits(final int fracDigits) {
+		this.fracFactor = Math.pow(10.0, fracDigits);
+		this.decForm.setMinimumFractionDigits(fracDigits);
+		this.decForm.setMaximumFractionDigits(fracDigits);
+	}
 
-  /**
-   * Wird aufgerufen, wenn der Maus-Button wieder losgelassen wird.
-   * Setzt {@link #selStartCoord} auf <code>null</code>.
-   */
-  public void mouseReleased(final MouseEvent e) {
-    selStartCoord = null;
-  }
+	/**
+	 * Liefert die Anzahl an Nachkommastellen, die fuer die Koordinaten
+	 * dargestellt werden
+	 */
+	public int getFractionDigits() {
+		return (int) Math.log10(this.fracFactor);
+	}
 
-  /**
-   * Macht nichts.
-   */
-  public void mouseClicked(final MouseEvent e) {
-  }
+	/**
+	 * Wird aufgerufen, wenn der Maus-Button gedrueckt wird. Handelt es sich bei
+	 * dem Event um ein {@link GeoMouseEvent} oder das Event von einem
+	 * {@link SelectableXMapPane} ausgeloest wurde, werden die aktuellen
+	 * Koordinaten in {@link #selStartCoord} gespeichert.
+	 */
+	public void mousePressed(final MouseEvent e) {
+		final Point2D p = SelectableXMapPane.getMapCoordinatesFromEvent(e);
+		if (p != null && e.getButton() == MouseEvent.BUTTON1) {
+			selStartCoord = p;
+			// MS: on simple click the Envelope-Coordinates should not
+			// be shown!
+			// displayCoordinates(e);
+		}
+	}
 
-  /**
-   * Wird aufgerufen, sobald die Maus bewegt wird.
-   * Stellt die Koordinaten im Label dar, wenn es sich bei dem Event um ein
-   * {@link GeoMouseEvent} handelt oder das Event von einem {@link SelectableXMapPane}
-   * ausgeloest wurde.
-   */
-  public void mouseMoved(final MouseEvent e) {
-    displayCoordinates(e);
-  }
+	/**
+	 * Wird aufgerufen, wenn der Maus-Button wieder losgelassen wird. Setzt
+	 * {@link #selStartCoord} auf <code>null</code>.
+	 */
+	public void mouseReleased(final MouseEvent e) {
+		selStartCoord = null;
+	}
 
-  /**
-   * Wird aufgerufen, sobald die Maus bei gedrueckter Taste bewegt wird.
-   * Stellt die Koordinaten im Label dar, wenn es sich bei dem Event um ein
-   * {@link GeoMouseEvent} handelt oder das Event von einem {@link SelectableXMapPane}
-   * ausgeloest wurde.
-   */
-  public void mouseDragged(final MouseEvent e) {
-    displayCoordinates(e);
-  }
+	/**
+	 * Macht nichts.
+	 */
+	public void mouseClicked(final MouseEvent e) {
+	}
 
-  /**
-   * Macht nichts.
-   */
-  public void mouseEntered(final MouseEvent e) {
-  }
+	/**
+	 * Wird aufgerufen, sobald die Maus bewegt wird. Stellt die Koordinaten im
+	 * Label dar, wenn es sich bei dem Event um ein {@link GeoMouseEvent}
+	 * handelt oder das Event von einem {@link SelectableXMapPane} ausgeloest
+	 * wurde.
+	 */
+	public void mouseMoved(final MouseEvent e) {
+		displayCoordinates(e);
+	}
 
-  /**
-   * Macht nichts.
-   */
-  public void mouseExited(final MouseEvent e) {
-  }
+	/**
+	 * Wird aufgerufen, sobald die Maus bei gedrueckter Taste bewegt wird.
+	 * Stellt die Koordinaten im Label dar, wenn es sich bei dem Event um ein
+	 * {@link GeoMouseEvent} handelt oder das Event von einem
+	 * {@link SelectableXMapPane} ausgeloest wurde.
+	 */
+	public void mouseDragged(final MouseEvent e) {
+		displayCoordinates(e);
+	}
+
+	/**
+	 * Macht nichts.
+	 */
+	public void mouseEntered(final MouseEvent e) {
+	}
+
+	/**
+	 * Macht nichts.
+	 */
+	public void mouseExited(final MouseEvent e) {
+	}
 }

Modified: trunk/src/schmitzm/geotools/gui/MapPaneStatusBar.java
===================================================================
--- trunk/src/schmitzm/geotools/gui/MapPaneStatusBar.java	2010-11-03 13:29:17 UTC (rev 1221)
+++ trunk/src/schmitzm/geotools/gui/MapPaneStatusBar.java	2010-11-03 14:07:08 UTC (rev 1222)
@@ -29,80 +29,99 @@
  ******************************************************************************/
 package schmitzm.geotools.gui;
 
-import java.awt.BorderLayout;
 import java.awt.Color;
 import java.awt.Graphics;
 
 import javax.swing.SwingConstants;
 
+import net.miginfocom.swing.MigLayout;
 import schmitzm.swing.JPanel;
+import skrueger.geotools.CrsLabel;
 
 /**
- * Stellt ein {@link BorderLayout}-Panel dar, in dem links ein
+ * Stellt ein {@link MigLayout}-Panel dar, in dem links ein
  * {@link RasterPositionLabel} und rechts ein {@link GeoPositionLabel}
- * dargestellt ist. Beide werden automatisch mit einem {@link SelectableXMapPane}
- * gekoppelt, so dass automatisch die Anzeige der Labels aktualisiert wird,
- * sobald sich der Cursor ueber die Karte bewegt.
- * @author <a href="mailto:martin.schmitz at koeln.de">Martin Schmitz</a> (University of Bonn/Germany)
+ * dargestellt ist. Beide werden automatisch mit einem
+ * {@link SelectableXMapPane} gekoppelt, so dass automatisch die Anzeige der
+ * Labels aktualisiert wird, sobald sich der Cursor ueber die Karte bewegt.
+ * 
+ * @author <a href="mailto:martin.schmitz at koeln.de">Martin Schmitz</a>
+ *         (University of Bonn/Germany)
  * @version 1.0
  */
 public class MapPaneStatusBar extends JPanel {
-  /** Zeigt die Raster-Koordinaten und den Rasterwert des obersten sichtbaren
-   *  Rasters an */
-  protected RasterPositionLabel rasterPositionLabel = null;
-  /** Zeigt die Welt-Koordinaten an */
-  protected GeoPositionLabel geoPositionLabel = null;
+	/**
+	 * Zeigt die Raster-Koordinaten und den Rasterwert des obersten sichtbaren
+	 * Rasters an
+	 */
+	protected RasterPositionLabel rasterPositionLabel = null;
+	/** Zeigt die Welt-Koordinaten an */
+	protected GeoPositionLabel geoPositionLabel = null;
 
-  /**
-   * Erzeugt einen neuen Status-Balken.
-   * @param mapPane Karte mit der die Labels gekoppelt werden
-   */
-  public MapPaneStatusBar(SelectableXMapPane mapPane) {
-    this(mapPane,null,null);
-  }
+	/**
+	 * Erzeugt einen neuen Status-Balken.
+	 * 
+	 * @param mapPane
+	 *            Karte mit der die Labels gekoppelt werden
+	 */
+	public MapPaneStatusBar(SelectableXMapPane mapPane) {
+		this(mapPane, null, null);
+	}
 
-  /**
-   * Erzeugt einen neuen Status-Balken.
-   * @param mapPane Karte mit der die Labels gekoppelt werden
-   * @param rasterPosLabel Label, in dem die Raster-Koordinaten angezeigt
-   *        werden (wenn {@code null}, wird ein neues {@link RasterPositionLabel} erzeugt).
-   * @param geoPosLabel Label, in dem die Geo-Koordinaten angezeigt
-   *        werden (wenn {@code null}, wird ein neues {@link GeoPositionLabel} erzeugt).
-   */
-  public MapPaneStatusBar(SelectableXMapPane mapPane, RasterPositionLabel rasterPosLabel, GeoPositionLabel geoPosLabel) {
-    super();
-    setLayout( new BorderLayout() );
-    // rechts: Anzeige der aktuellen Welt-Koordinaten
-    this.geoPositionLabel = (geoPosLabel != null) ? geoPosLabel : new GeoPositionLabel(2);
-    geoPositionLabel.setHorizontalAlignment(SwingConstants.RIGHT);
-    geoPositionLabel.setFractionDigits(1);
-    this.add(geoPositionLabel,BorderLayout.EAST);
-    // links: Anzeige
-    rasterPositionLabel = (rasterPosLabel != null) ? rasterPosLabel : new RasterPositionLabel(2);
-    this.add(rasterPositionLabel,BorderLayout.WEST);
+	/**
+	 * Erzeugt einen neuen Status-Balken.
+	 * 
+	 * @param mapPane
+	 *            Karte mit der die Labels gekoppelt werden
+	 * @param rasterPosLabel
+	 *            Label, in dem die Raster-Koordinaten angezeigt werden (wenn
+	 *            {@code null}, wird ein neues {@link RasterPositionLabel}
+	 *            erzeugt).
+	 * @param geoPosLabel
+	 *            Label, in dem die Geo-Koordinaten angezeigt werden (wenn
+	 *            {@code null}, wird ein neues {@link GeoPositionLabel}
+	 *            erzeugt).
+	 */
+	public MapPaneStatusBar(SelectableXMapPane mapPane,
+			RasterPositionLabel rasterPosLabel, GeoPositionLabel geoPosLabel) {
+		super();
+		setLayout(new MigLayout("wrap 3, gap 0 0 0 0, insets 0 0 0 0", "grow"));
+		// links: Anzeige
+		rasterPositionLabel = (rasterPosLabel != null) ? rasterPosLabel
+				: new RasterPositionLabel(2);
+		this.add(rasterPositionLabel, "align left");
 
-    // Labels mit dem MapPane koppeln
-    mapPane.addMouseMotionListener(rasterPositionLabel);
-    mapPane.addMouseListener(geoPositionLabel);
-    mapPane.addMouseMotionListener(geoPositionLabel);
-  }
-  
-  /**
-   * Nuetzlich wenn die Componente gedruckt (z.B. wenn ein Screenshot gemacht wird) wird. Dann werden wird der
-   * Hintergrund auf WEISS gesetzt.
-   *
-   * @author <a href="mailto:skpublic at wikisquare.de">Stefan Alfons
-   *         Tzeggai</a>
-   */
-  @Override
-  public void print(Graphics g) {
-      Color orig = getBackground();
-      setBackground(Color.WHITE);
-      // wrap in try/finally so that we always restore the state
-      try {
-          super.print(g);
-      } finally {
-          setBackground(orig);
-      }
-  }
+		// mitte, koppelt sich selber an MapPane
+		this.add(new CrsLabel(mapPane), "align center");
+
+		// rechts: Anzeige der aktuellen Welt-Koordinaten
+		this.geoPositionLabel = (geoPosLabel != null) ? geoPosLabel
+				: new GeoPositionLabel(2);
+		geoPositionLabel.setHorizontalAlignment(SwingConstants.RIGHT);
+		geoPositionLabel.setFractionDigits(1);
+		this.add(geoPositionLabel, "align right");
+
+		// Labels mit dem MapPane koppeln
+		mapPane.addMouseMotionListener(rasterPositionLabel);
+		mapPane.addMouseListener(geoPositionLabel);
+		mapPane.addMouseMotionListener(geoPositionLabel);
+	}
+
+	/**
+	 * Nuetzlich wenn die Componente gedruckt (z.B. wenn ein Screenshot gemacht
+	 * wird) wird. Dann werden wird der Hintergrund auf WEISS gesetzt.
+	 * 
+	 * @author <a href="mailto:skpublic at wikisquare.de">Stefan Alfons Tzeggai</a>
+	 */
+	@Override
+	public void print(Graphics g) {
+		Color orig = getBackground();
+		setBackground(Color.WHITE);
+		// wrap in try/finally so that we always restore the state
+		try {
+			super.print(g);
+		} finally {
+			setBackground(orig);
+		}
+	}
 }

Modified: trunk/src/schmitzm/geotools/gui/resource/locales/GTResourceBundle.properties
===================================================================
--- trunk/src/schmitzm/geotools/gui/resource/locales/GTResourceBundle.properties	2010-11-03 13:29:17 UTC (rev 1221)
+++ trunk/src/schmitzm/geotools/gui/resource/locales/GTResourceBundle.properties	2010-11-03 14:07:08 UTC (rev 1222)
@@ -178,3 +178,6 @@
 SearchMapDialog.searchString.tt=Enter text and press [Enter or Return].
 SearchMapDialog.title=Search labels in map\: ${0}
 SearchMapDialog.Explanation=<html>Here you can search all of the map's <b>labels</b>.</html>  
+
+CRSLabel=Map shown in: ${0} 
+CRSLabel.TT=Shows the coordinate reference system (CRS) of the map. 
\ No newline at end of file

Modified: trunk/src/skrueger/geotools/CrsLabel.java
===================================================================
--- trunk/src/skrueger/geotools/CrsLabel.java	2010-11-03 13:29:17 UTC (rev 1221)
+++ trunk/src/skrueger/geotools/CrsLabel.java	2010-11-03 14:07:08 UTC (rev 1222)
@@ -2,6 +2,7 @@
 
 import javax.swing.JLabel;
 
+import schmitzm.geotools.gui.GeotoolsGUIUtil;
 import schmitzm.geotools.gui.SelectableXMapPane;
 import schmitzm.geotools.gui.XMapPaneEvent;
 import schmitzm.geotools.map.event.JMapPaneListener;
@@ -18,22 +19,25 @@
 
 	private final SelectableXMapPane mapPane;
 
-	CrsLabel(SelectableXMapPane mapPane) {
+	public CrsLabel(SelectableXMapPane mapPane) {
 		super();
 		this.mapPane = mapPane;
 
 		mapPane.addMapPaneListener(listenForCrsChange);
 
 		updateCrs();
+
+		setToolTipText(GeotoolsGUIUtil.R("CRSLabel.TT"));
 	}
 
 	public void updateCrs() {
+		String crsName = "";
 		try {
-			setText("CRS:"
-					+ mapPane.getMapContext().getCoordinateReferenceSystem()
-							.getName().toString());
+			crsName = mapPane.getMapContext().getCoordinateReferenceSystem()
+					.getName().toString();
+			setText(GeotoolsGUIUtil.R("CRSLabel", crsName));
 		} catch (Exception e) {
-			setText("CRS:" + "NONE");
+			setText("");
 		}
 	}
 

Modified: trunk/src/skrueger/geotools/MapView.java
===================================================================
--- trunk/src/skrueger/geotools/MapView.java	2010-11-03 13:29:17 UTC (rev 1221)
+++ trunk/src/skrueger/geotools/MapView.java	2010-11-03 14:07:08 UTC (rev 1222)
@@ -126,8 +126,9 @@
 		 */
 		JPanel newRight = new JPanel(new MigLayout("center, wrap 1", "[grow]",
 				"[][grow]"));
-		newRight.add(getToolBar(), "split 2");
-		newRight.add(new CrsLabel(getGeoMapPane().getMapPane()), "align right");
+		newRight.add(getToolBar());
+//		/ crsName
+//		newRight.add(new CrsLabel(getGeoMapPane().getMapPane()), "align right");
 		newRight.add(getGeoMapPane(), "growx, growy");
 		getSplitPane().add(newRight);
 

Deleted: trunk/src/skrueger/geotools/ZoomXMapPaneMouseListener.java
===================================================================
--- trunk/src/skrueger/geotools/ZoomXMapPaneMouseListener.java	2010-11-03 13:29:17 UTC (rev 1221)
+++ trunk/src/skrueger/geotools/ZoomXMapPaneMouseListener.java	2010-11-03 14:07:08 UTC (rev 1222)
@@ -1,223 +0,0 @@
-//package skrueger.geotools;
-//
-//import java.awt.Color;
-//import java.awt.Graphics;
-//import java.awt.Point;
-//import java.awt.Rectangle;
-//import java.awt.event.MouseAdapter;
-//import java.awt.event.MouseEvent;
-//import java.awt.event.MouseWheelEvent;
-//
-//import org.apache.log4j.Logger;
-//
-//import schmitzm.swing.SwingUtil;
-//
-//import com.vividsolutions.jts.geom.Coordinate;
-//import com.vividsolutions.jts.geom.Envelope;
-//
-//public class ZoomXMapPaneMouseListener extends MouseAdapter {
-//
-//	private static Logger LOGGER = Logger
-//			.getLogger(ZoomXMapPaneMouseListener.class);
-//
-//	protected final XMapPane xMapPane;
-//
-//	protected boolean enabled = true;
-//
-//	public ZoomXMapPaneMouseListener(XMapPane xMapPane) {
-//		if (xMapPane == null)
-//			throw new IllegalArgumentException("xMapPane may not be null");
-//		this.xMapPane = xMapPane;
-//	}
-//
-//	/**
-//	 * Stores beginning of a drag event in window coordinates
-//	 */
-//	protected Point startPos;
-//
-//	/**
-//	 * Stores last position of a drag event in window coordinates
-//	 */
-//	protected Point lastPos;
-//
-//	/**
-//	 * Draws a rectangle in XOR mode from the origin at {@link #startPos} to the
-//	 * given point. All in screen coordinates.
-//	 */
-//	protected void drawRectangle(final Graphics graphics, Point e) {
-//		// undraw last box/draw new box
-//		final int left = Math.min(startPos.x, e.x);
-//		final int right = Math.max(startPos.x, e.x);
-//		final int top = Math.max(startPos.y, e.y);
-//		final int bottom = Math.min(startPos.y, e.y);
-//		final int width = right - left;
-//		final int height = top - bottom;
-//
-//		if (width == 0 && height == 0)
-//			return;
-//
-//		graphics.setXORMode(Color.WHITE);
-//		graphics.drawRect(left, bottom, width, height);
-//	}
-//
-//	public void mousePressed(final MouseEvent e) {
-//		if (!isEnabled())
-//			return;
-//		startPos = new Point(e.getPoint());
-//		lastPos = new Point(e.getPoint());
-//	}
-//
-//	public void mouseReleased(final MouseEvent e) {
-//		if (!isEnabled())
-//			return;
-//
-//		// If this is a click, let mouseClicked handle it!
-//		if ((Math.abs(startPos.x - e.getPoint().x) * Math.abs(e.getPoint().y
-//				- startPos.y)) < 160) {
-//			// xMapPane.zoomTo(e.getPoint(), .5);
-//			return;
-//		}
-//
-//		
-//		// Not the best check.. but works
-//		if (xMapPane.getCursor() == SwingUtil.PANNING_CURSOR)
-//		{
-//			xMapPane.performPan();
-//			return;
-//		}
-//
-//		final Rectangle bounds = xMapPane.getBounds();
-//
-//		Envelope mapArea = xMapPane.getMapArea();
-//
-//		// Replace with transform and translate
-//		final double mapWidth = mapArea.getWidth();
-//		final double mapHeight = mapArea.getHeight();
-//
-//		final double startX = ((startPos.x * mapWidth) / (double) bounds.width)
-//				+ mapArea.getMinX();
-//		final double startY = (((bounds.getHeight() - startPos.y) * mapHeight) / (double) bounds.height)
-//				+ mapArea.getMinY();
-//		final double endX = ((e.getPoint().x * mapWidth) / (double) bounds.width)
-//				+ mapArea.getMinX();
-//		final double endY = (((bounds.getHeight() - e.getPoint().y) * mapHeight) / (double) bounds.height)
-//				+ mapArea.getMinY();
-//
-//		if (xMapPane.getState() == XMapPane.ZOOM_IN) {
-//
-//			drawRectangle(xMapPane.getGraphics(), e.getPoint());
-//
-//			final double left = Math.min(startX, endX);
-//			final double right = Math.max(startX, endX);
-//			final double bottom = Math.min(startY, endY);
-//			final double top = Math.max(startY, endY);
-//			final Coordinate ll = new Coordinate(left, bottom);
-//			final Coordinate ur = new Coordinate(right, top);
-//
-//			xMapPane.setMapArea(new Envelope(ll, ur));
-//
-//		} else if (xMapPane.getState() == XMapPane.ZOOM_OUT) {
-//
-//			// Remove the rectangle
-//			drawRectangle(xMapPane.getGraphics(), e.getPoint());
-//			//
-//			// // Don't zoom too small areas
-//			// if ((Math.abs(startPos.x - e.getPoint().x) * Math
-//			// .abs(e.getPoint().y - startPos.y)) < 100) {
-//			// xMapPane.zoomTo(e.getPoint(), 2.);
-//			// return;
-//			// }
-//
-//			// make the dragged rectangle in screen coords the new map size?
-//			final double left = Math.min(startX, endX);
-//			final double right = Math.max(startX, endX);
-//			final double bottom = Math.min(startY, endY);
-//			final double top = Math.max(startY, endY);
-//			final double nWidth = (mapWidth * mapWidth) / (right - left);
-//			final double nHeight = (mapHeight * mapHeight) / (top - bottom);
-//			final double deltaX1 = left - mapArea.getMinX();
-//			final double nDeltaX1 = (deltaX1 * nWidth) / mapWidth;
-//			final double deltaY1 = bottom - mapArea.getMinY();
-//			final double nDeltaY1 = (deltaY1 * nHeight) / mapHeight;
-//			final Coordinate ll = new Coordinate(mapArea.getMinX() - nDeltaX1,
-//					mapArea.getMinY() - nDeltaY1);
-//			final double deltaX2 = mapArea.getMaxX() - right;
-//			final double nDeltaX2 = (deltaX2 * nWidth) / mapWidth;
-//			final double deltaY2 = mapArea.getMaxY() - top;
-//			final double nDeltaY2 = (deltaY2 * nHeight) / mapHeight;
-//			final Coordinate ur = new Coordinate(mapArea.getMaxX() + nDeltaX2,
-//					mapArea.getMaxY() + nDeltaY2);
-//
-//			xMapPane.setMapArea(new Envelope(ll, ur));
-//		}
-//
-//	}
-//
-//	public void setEnabled(boolean enabled) {
-//		this.enabled = enabled;
-//	}
-//
-//	/**
-//	 * Returns <code>true</code> if the xMapPane is well defined and the
-//	 * listener is enabled.
-//	 */
-//	public boolean isEnabled() {
-//		return enabled && xMapPane.isWellDefined();
-//	}
-//
-//	/**
-//	 * Verarbeitet die Mausrad-Aktion, indem gezoomed wird.
-//	 * 
-//	 * @param wheelEvt
-//	 *            Mausrad-Event
-//	 */
-//	public void mouseWheelMoved(MouseWheelEvent wheelEvt) {
-//		if (!isEnabled())
-//			return;
-//		
-//		//DONE
-//
-//		final int units = wheelEvt.getUnitsToScroll();
-//		if (units > 0)
-//			xMapPane.zoomTo(wheelEvt.getPoint(), 1. + .11 * units);
-//		else
-//			xMapPane.zoomTo(wheelEvt.getPoint(), 2. / -units);
-//	}
-//
-//	@Override
-//	public void mouseClicked(final MouseEvent e) {
-//
-//		// DONE
-//		
-//		if (!isEnabled())
-//			return;
-//
-//		int state = xMapPane.getState();
-//
-//		// Nothing to do for panning
-//		if (state == XMapPane.PAN)
-//			return;
-//
-//		if (state == XMapPane.ZOOM_IN && e.getButton() == MouseEvent.BUTTON1) {
-//			xMapPane.zoomTo(e.getPoint(), 1 / 2.);
-//		} else if (state == XMapPane.ZOOM_IN
-//				&& e.getButton() == MouseEvent.BUTTON3
-//				|| state == XMapPane.ZOOM_OUT) {
-//			xMapPane.zoomTo(e.getPoint(), 2.);
-//		}
-//
-//	}
-//
-//	/**
-//	 * Constantly fired while the mouse is dragging
-//	 */
-//	public void mouseDragged(final MouseEvent event) {
-//		if (!isEnabled())
-//			return;
-//
-//		xMapPane.mouseDragged(startPos, lastPos, event);
-//
-//		lastPos = event.getPoint();
-//	}
-//
-//}



More information about the Schmitzm-commits mailing list