[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