Ignore:
Timestamp:
2008-08-06T14:04:13+02:00 (16 years ago)
Author:
stotz
Message:

Separate package for all interfaces; First draft of a file caching loader implementation

Location:
applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer
Files:
4 added
8 edited
3 moved

Legend:

Unmodified
Added
Removed
  • applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/DefaultMapController.java

    r9421 r9494  
    4747        }
    4848
    49         public void mouseMoved(MouseEvent e) {
    50         }
    51 
    5249        public void mouseClicked(MouseEvent e) {
    5350                if (doubleClickZoomEnabled && e.getClickCount() == 2 && e.getButton() == MouseEvent.BUTTON1)
    5451                        map.zoomIn(e.getPoint());
    55         }
    56 
    57         public void mouseEntered(MouseEvent e) {
    58         }
    59 
    60         public void mouseExited(MouseEvent e) {
    6152        }
    6253
  • applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/Demo.java

    r9289 r9494  
    1313import javax.swing.JPanel;
    1414
     15
    1516/**
    1617 *
     
    2627                setSize(400, 400);
    2728                final JMapViewer map = new JMapViewer();
     29//              final JMapViewer map = new JMapViewer(new MemoryTileCache(),4);
     30//              map.setTileLoader(new OsmFileCacheTileLoader(map,OsmTileLoader.MAP_MAPNIK));
     31                new DefaultMapController(map);
    2832                setLayout(new BorderLayout());
    2933                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    8791         */
    8892        public static void main(String[] args) {
     93//              Properties systemProperties = System.getProperties();
     94//              systemProperties.setProperty("http.proxyHost","localhost");
     95//              systemProperties.setProperty("http.proxyPort","8008");
    8996                new Demo().setVisible(true);
    9097        }
  • applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/JMapController.java

    r9421 r9494  
    2626        public JMapController(JMapViewer map) {
    2727                this.map = map;
    28                 map.addMouseListener((MouseListener) this);
    29                 map.addMouseWheelListener((MouseWheelListener) this);
    30                 map.addMouseMotionListener((MouseMotionListener) this);
     28                map.addMouseListener(this);
     29                map.addMouseWheelListener(this);
     30                map.addMouseMotionListener(this);
    3131        }
    3232
  • applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/JMapViewer.java

    r9421 r9494  
    1212import java.awt.geom.Point2D;
    1313import java.awt.image.BufferedImage;
    14 import java.io.InputStream;
    15 import java.net.HttpURLConnection;
    16 import java.net.URL;
    1714import java.util.LinkedList;
    1815import java.util.List;
     
    2724
    2825import org.openstreetmap.gui.jmapviewer.JobDispatcher.JobThread;
     26import org.openstreetmap.gui.jmapviewer.interfaces.MapMarker;
     27import org.openstreetmap.gui.jmapviewer.interfaces.TileCache;
     28import org.openstreetmap.gui.jmapviewer.interfaces.TileLoader;
    2929
    3030/**
     
    4949        public static final int MIN_ZOOM = 0;
    5050
     51        protected TileLoader tileLoader;
    5152        protected TileCache tileCache;
    5253        protected List<MapMarker> mapMarkerList;
     
    9091        public JMapViewer(TileCache tileCache, int downloadThreadCount) {
    9192                super();
     93                tileLoader = new OsmTileLoader(this);
    9294                this.tileCache = tileCache;
    9395                jobDispatcher = new JobDispatcher(downloadThreadCount);
     
    442444                }
    443445                if (!tile.isLoaded()) {
    444                         jobDispatcher.addJob(new Job() {
    445 
    446                                 InputStream input = null;
    447 
    448                                 public void run() {
    449                                         Tile tile = tileCache.getTile(tilex, tiley, zoom);
    450                                         if (tile == null || tile.isLoaded())
    451                                                 return;
    452                                         try {
    453                                                 // Thread.sleep(500);
    454                                                 URL url;
    455                                                 url = new URL("http://tile.openstreetmap.org/" + tile.getKey() + ".png");
    456                                                 HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
    457                                                 urlConn.setReadTimeout(30000); // 30 seconds read
    458                                                 // timeout
    459                                                 input = urlConn.getInputStream();
    460                                                 tile.setImage(ImageIO.read(input));
    461                                                 tile.setLoaded(true);
    462                                                 repaint();
    463                                                 input.close();
    464                                                 input = null;
    465                                         } catch (Exception e) {
    466                                                 if (input == null /* || !input.isStopped() */)
    467                                                         System.err.println("failed loading " + zoom + "/" + tilex + "/" + tiley
    468                                                                         + " " + e.getMessage());
    469                                         }
    470                                 }
    471 
    472                                 /**
    473                                  * Terminating all transfers that are currently in progress
    474                                  */
    475                                 public void stop() {
    476 
    477                                         try {
    478                                                 // if (input != null)
    479                                                 // input.stop();
    480                                         } catch (Exception e) {
    481                                         }
    482                                 }
    483                         });
     446                        tileLoader.addLoadRequest(tilex, tiley, zoom);
    484447                }
    485448                return tile;
     
    538501        }
    539502
     503        public TileLoader getTileLoader() {
     504                return tileLoader;
     505        }
     506
     507        public void setTileLoader(TileLoader tileLoader) {
     508                this.tileLoader = tileLoader;
     509        }
     510
    540511}
  • applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/JobDispatcher.java

    r9288 r9494  
    55import java.util.concurrent.BlockingQueue;
    66import java.util.concurrent.LinkedBlockingQueue;
     7
     8import org.openstreetmap.gui.jmapviewer.interfaces.Job;
    79
    810/**
     
    5557                public JobThread(int threadId) {
    5658                        super("OSMJobThread " + threadId);
     59                        setDaemon(true);
    5760                        job = null;
    5861                        start();
  • applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/MapMarkerDot.java

    r9095 r9494  
    66import java.awt.Graphics;
    77import java.awt.Point;
     8
     9import org.openstreetmap.gui.jmapviewer.interfaces.MapMarker;
    810
    911/**
  • applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/MemoryTileCache.java

    r9288 r9494  
    55import java.util.Hashtable;
    66import java.util.logging.Logger;
     7
     8import org.openstreetmap.gui.jmapviewer.interfaces.TileCache;
    79
    810/**
     
    1517public class MemoryTileCache implements TileCache {
    1618
    17         private static final Logger log = Logger.getLogger(MemoryTileCache.class.getName());
     19        protected static final Logger log = Logger.getLogger(MemoryTileCache.class.getName());
    1820
    1921        /**
     
    3537
    3638        public void addTile(Tile tile) {
    37                 CacheEntry entry = new CacheEntry(tile);
     39                CacheEntry entry = createCacheEntry(tile);
    3840                hashtable.put(tile.getKey(), entry);
    3941                lruTiles.addFirst(entry);
    4042                if (hashtable.size() > cacheSize)
    41                         removeOldTiles();
     43                        removeOldEntries();
    4244        }
    4345
     
    5658         * Removes the least recently used tiles
    5759         */
    58         protected void removeOldTiles() {
     60        protected void removeOldEntries() {
    5961                synchronized (lruTiles) {
    6062                        try {
    6163                                while (lruTiles.getElementCount() > cacheSize) {
    62                                         CacheEntry entry = lruTiles.getLastElement();
    63                                         hashtable.remove(entry.tile.getKey());
    64                                         lruTiles.removeEntry(entry);
     64                                        removeEntry(lruTiles.getLastElement());
    6565                                }
    6666                        } catch (Exception e) {
     
    6868                        }
    6969                }
     70        }
     71
     72        protected void removeEntry(CacheEntry entry) {
     73                hashtable.remove(entry.tile.getKey());
     74                lruTiles.removeEntry(entry);
     75        }
     76
     77        protected CacheEntry createCacheEntry(Tile tile) {
     78                return new CacheEntry(tile);
    7079        }
    7180
     
    8796                this.cacheSize = cacheSize;
    8897                if (hashtable.size() > cacheSize)
    89                         removeOldTiles();
     98                        removeOldEntries();
    9099        }
    91100
  • applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/Tile.java

    r9288 r9494  
    77import java.awt.geom.AffineTransform;
    88import java.awt.image.BufferedImage;
     9
     10import org.openstreetmap.gui.jmapviewer.interfaces.TileCache;
    911
    1012/**
     
    2224        protected String key;
    2325        protected boolean loaded = false;
     26        protected boolean loading = false;
    2427        public static final int WIDTH = 256;
    2528        public static final int HEIGHT = 256;
  • applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/interfaces/Job.java

    r9288 r9494  
    1 package org.openstreetmap.gui.jmapviewer;
     1package org.openstreetmap.gui.jmapviewer.interfaces;
    22
    33//License: GPL. Copyright 2008 by Jan Peter Stotz
  • applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/interfaces/MapMarker.java

    r9095 r9494  
    1 package org.openstreetmap.gui.jmapviewer;
     1package org.openstreetmap.gui.jmapviewer.interfaces;
    22
    33//License: GPL. Copyright 2008 by Jan Peter Stotz
     
    55import java.awt.Graphics;
    66import java.awt.Point;
     7
     8import org.openstreetmap.gui.jmapviewer.JMapViewer;
    79
    810/**
  • applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/interfaces/TileCache.java

    r9288 r9494  
    1 package org.openstreetmap.gui.jmapviewer;
     1package org.openstreetmap.gui.jmapviewer.interfaces;
     2
     3import org.openstreetmap.gui.jmapviewer.JMapViewer;
     4import org.openstreetmap.gui.jmapviewer.Tile;
    25
    36//License: GPL. Copyright 2008 by Jan Peter Stotz
Note: See TracChangeset for help on using the changeset viewer.