Changeset 2621 in josm for trunk/src/org/openstreetmap/josm/gui/layer
- Timestamp:
- 2009-12-12T17:51:39+01:00 (14 years ago)
- Location:
- trunk/src/org/openstreetmap/josm/gui/layer
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/layer/Layer.java
r2619 r2621 11 11 import java.beans.PropertyChangeSupport; 12 12 import java.io.File; 13 import java.util.Collection;14 import java.util.concurrent.CopyOnWriteArrayList;15 13 16 14 import javax.swing.AbstractAction; … … 49 47 50 48 /** 51 * Interface to notify listeners of the change of the active layer.52 * @author imi53 */54 public interface LayerChangeListener {55 void activeLayerChange(Layer oldLayer, Layer newLayer);56 void layerAdded(Layer newLayer);57 void layerRemoved(Layer oldLayer);58 }59 60 /**61 * The listener of the active layer changes. You may register/deregister yourself62 * while an LayerChangeListener - action is executed.63 *64 * @deprecated use {@see #addLayerChangeListener(LayerChangeListener)}65 * and {@see #removeLayerChangeListener(LayerChangeListener)}66 */67 @Deprecated68 public static final Collection<LayerChangeListener> listeners = new CopyOnWriteArrayList<LayerChangeListener>();69 70 /**71 * Adds a layer change listener72 *73 * @param listener the listener. Ignored if null or already registered.74 */75 public static void addLayerChangeListener(LayerChangeListener listener) {76 if (listener != null && ! listeners.contains(listener)) {77 listeners.add(listener);78 }79 }80 81 /**82 * Removes a layer change listener83 *84 * @param listener the listener. Ignored if null or already registered.85 */86 public static void removeLayerChangeListener(LayerChangeListener listener) {87 if (listener != null && listeners.contains(listener)) {88 listeners.remove(listener);89 }90 }91 92 /**93 49 * The visibility state of the layer. 94 50 * -
trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java
r2617 r2621 16 16 import java.awt.Graphics2D; 17 17 import java.awt.Image; 18 import java.awt.MediaTracker;19 18 import java.awt.Point; 20 19 import java.awt.Rectangle; 21 import java.awt.Toolkit;22 20 import java.awt.event.MouseAdapter; 23 21 import java.awt.event.MouseEvent; 24 22 import java.awt.image.BufferedImage; 23 import java.beans.PropertyChangeEvent; 25 24 import java.beans.PropertyChangeListener; 26 import java.beans.PropertyChangeEvent;27 25 import java.io.File; 28 26 import java.io.IOException; … … 30 28 import java.util.ArrayList; 31 29 import java.util.Arrays; 30 import java.util.Collection; 32 31 import java.util.Collections; 33 import java.util.Collection;34 32 import java.util.Date; 33 import java.util.HashSet; 35 34 import java.util.LinkedHashSet; 36 import java.util.HashSet;37 35 import java.util.List; 38 36 … … 50 48 import org.openstreetmap.josm.gui.MapView; 51 49 import org.openstreetmap.josm.gui.PleaseWaitRunnable; 50 import org.openstreetmap.josm.gui.MapView.LayerChangeListener; 52 51 import org.openstreetmap.josm.gui.dialogs.LayerListDialog; 53 52 import org.openstreetmap.josm.gui.layer.GpxLayer; … … 102 101 } 103 102 public int compareTo(ImageEntry image) { 104 if (time != null && image.time != null) {103 if (time != null && image.time != null) 105 104 return time.compareTo(image.time); 106 } else if (time == null && image.time == null) {105 else if (time == null && image.time == null) 107 106 return 0; 108 } else if (time == null) {107 else if (time == null) 109 108 return -1; 110 } else {109 else 111 110 return 1; 112 }113 111 } 114 112 } … … 147 145 } 148 146 149 if (cancelled) {147 if (cancelled) 150 148 return; 151 }152 149 progressMonitor.subTask(tr("Read photos...")); 153 150 progressMonitor.setTicksCount(files.size()); … … 205 202 e.printStackTrace(); 206 203 rememberError(tr("Unable to get canonical path for directory {0}\n", 207 204 f.getAbsolutePath())); 208 205 } 209 206 … … 228 225 229 226 } else { 230 231 } 232 } 233 234 if (nullFile) {227 files.add(f); 228 } 229 } 230 231 if (nullFile) 235 232 throw new NullPointerException(); 236 }237 233 } 238 234 … … 265 261 Main.main.addLayer(layer); 266 262 layer.hook_up_mouse_events(); // Main.map.mapView should exist 267 263 // now. Can add mouse listener 268 264 269 265 if (! cancelled && layer.data.size() > 0) { … … 329 325 new JSeparator(), 330 326 correlateItem 331 327 }; 332 328 } 333 329 … … 336 332 int i = 0; 337 333 for (ImageEntry e : data) 338 if (e.pos != null) 334 if (e.pos != null) { 339 335 i++; 336 } 340 337 return data.size() + " " + trn("image", "images", data.size()) 341 338 + " loaded. " + tr("{0} were found to be gps tagged.", i); 342 339 } 343 340 … … 406 403 407 404 return new Dimension( 408 (int) Math.round(f * thumb.getWidth(null)),409 (int) Math.round(f * thumb.getHeight(null)));405 (int) Math.round(f * thumb.getWidth(null)), 406 (int) Math.round(f * thumb.getHeight(null))); 410 407 } 411 408 … … 432 429 433 430 for (ImageEntry e : data) { 434 if (e.pos == null) 431 if (e.pos == null) { 435 432 continue; 433 } 436 434 Point p = mv.getPoint(e.pos); 437 435 if (e.thumbnail != null) { … … 444 442 else { // thumbnail not loaded yet 445 443 icon.paintIcon(mv, tempG, 446 447 444 p.x - icon.getIconWidth() / 2, 445 p.y - icon.getIconHeight() / 2); 448 446 } 449 447 } … … 454 452 else { 455 453 for (ImageEntry e : data) { 456 if (e.pos == null) 454 if (e.pos == null) { 457 455 continue; 456 } 458 457 Point p = mv.getPoint(e.pos); 459 458 icon.paintIcon(mv, g, 460 461 459 p.x - icon.getIconWidth() / 2, 460 p.y - icon.getIconHeight() / 2); 462 461 } 463 462 } … … 475 474 } else { 476 475 selectedIcon.paintIcon(mv, g, 477 478 476 p.x - selectedIcon.getIconWidth() / 2, 477 p.y - selectedIcon.getIconHeight() / 2); 479 478 } 480 479 } … … 484 483 @Override 485 484 public void visitBoundingBox(BoundingXYVisitor v) { 486 for (ImageEntry e : data) 485 for (ImageEntry e : data) { 487 486 v.visit(e.pos); 487 } 488 488 } 489 489 … … 508 508 509 509 Rational[] components = dir 510 510 .getRationalArray(GpsDirectory.TAG_GPS_LONGITUDE); 511 511 512 512 deg = components[0].intValue(); … … 516 516 lon = (deg + (min / 60) + (sec / 3600)); 517 517 518 if (dir.getString(GpsDirectory.TAG_GPS_LONGITUDE_REF).charAt(0) == 'W') 518 if (dir.getString(GpsDirectory.TAG_GPS_LONGITUDE_REF).charAt(0) == 'W') { 519 519 lon = -lon; 520 } 520 521 521 522 // latitude … … 529 530 lat = (deg + (min / 60) + (sec / 3600)); 530 531 531 if (dir.getString(GpsDirectory.TAG_GPS_LATITUDE_REF).charAt(0) == 'S') 532 if (dir.getString(GpsDirectory.TAG_GPS_LATITUDE_REF).charAt(0) == 'S') { 532 533 lat = -lat; 534 } 533 535 534 536 // Store values … … 569 571 570 572 public void checkPreviousNextButtons() { 571 // System.err.println("showing image " + currentPhoto);573 // System.err.println("showing image " + currentPhoto); 572 574 ImageViewerDialog.setNextEnabled(currentPhoto < data.size() - 1); 573 575 ImageViewerDialog.setPreviousEnabled(currentPhoto > 0); … … 596 598 @Override public void mousePressed(MouseEvent e) { 597 599 598 if (e.getButton() != MouseEvent.BUTTON1) {600 if (e.getButton() != MouseEvent.BUTTON1) 599 601 return; 600 } 601 if (isVisible()) 602 if (isVisible()) { 602 603 Main.map.mapView.repaint(); 604 } 603 605 } 604 606 605 607 @Override public void mouseReleased(MouseEvent ev) { 606 if (ev.getButton() != MouseEvent.BUTTON1) {608 if (ev.getButton() != MouseEvent.BUTTON1) 607 609 return; 608 } 609 if (!isVisible()) { 610 if (!isVisible()) 610 611 return; 611 }612 612 613 613 for (int i = data.size() - 1; i >= 0; --i) { 614 614 ImageEntry e = data.get(i); 615 if (e.pos == null) 615 if (e.pos == null) { 616 616 continue; 617 } 617 618 Point p = Main.map.mapView.getPoint(e.pos); 618 619 Rectangle r; … … 622 623 } else { 623 624 r = new Rectangle(p.x - icon.getIconWidth() / 2, 624 625 626 625 p.y - icon.getIconHeight() / 2, 626 icon.getIconWidth(), 627 icon.getIconHeight()); 627 628 } 628 629 if (r.contains(ev.getPoint())) { … … 636 637 }; 637 638 Main.map.mapView.addMouseListener(mouseAdapter); 638 Layer.listeners.add(new LayerChangeListener() {639 MapView.addLayerChangeListener(new LayerChangeListener() { 639 640 public void activeLayerChange(Layer oldLayer, Layer newLayer) { 640 641 if (newLayer == GeoImageLayer.this && currentPhoto >= 0) { … … 656 657 data.clear(); 657 658 data = null; 659 // stop listening to layer change events 660 MapView.removeLayerChangeListener(this); 658 661 } 659 662 }
Note:
See TracChangeset
for help on using the changeset viewer.