Ignore:
Timestamp:
2009-12-07T21:16:15+01:00 (14 years ago)
Author:
bastiK
Message:

geoimage: make thumbnails optional + cosmetics (see #4101)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java

    r2566 r2592  
    7171    public long timeoffset = 0;
    7272
     73    boolean loadThumbs;
     74
    7375    /*
    7476     * Stores info about each image
     
    117119
    118120        protected void rememberError(String message) {
    119                 this.errorMessages.add(message);
     121            this.errorMessages.add(message);
    120122        }
    121123
     
    138140            if (cancelled) {
    139141                return;
    140             }           
     142            }
    141143            progressMonitor.subTask(tr("Read photos..."));
    142144            progressMonitor.setTicksCount(files.size());
     
    173175            layer = new GeoImageLayer(data);
    174176            files.clear();
    175             Thread thumbsloader = new Thread(new Thumbsloader());
    176             thumbsloader.setPriority(Thread.MIN_PRIORITY);
    177             thumbsloader.start();           
    178177        }
    179178
     
    216215                        }
    217216                    } else {
    218                         rememberError(tr("Error while getting files from directory {0}\n", f.getPath()));
     217                        rememberError(tr("Error while getting files from directory {0}\n", f.getPath()));
    219218                    }
    220219
     
    230229
    231230        protected String formatErrorMessages() {
    232                 StringBuffer sb = new StringBuffer();
    233                 sb.append("<html>");
    234                 if (errorMessages.size() == 1) {
    235                         sb.append(errorMessages.iterator().next());
    236                 } else {
    237                         sb.append("<ul>");
    238                         for (String msg: errorMessages) {
    239                                 sb.append("<li>").append(msg).append("</li>");
    240                         }
    241                         sb.append("/ul>");
    242                 }
    243                 sb.append("</html>");
    244                 return sb.toString();
     231            StringBuffer sb = new StringBuffer();
     232            sb.append("<html>");
     233            if (errorMessages.size() == 1) {
     234                sb.append(errorMessages.iterator().next());
     235            } else {
     236                sb.append("<ul>");
     237                for (String msg: errorMessages) {
     238                    sb.append("<li>").append(msg).append("</li>");
     239                }
     240                sb.append("/ul>");
     241            }
     242            sb.append("</html>");
     243            return sb.toString();
    245244        }
    246245
    247246        @Override protected void finish() {
    248                 if (!errorMessages.isEmpty()) {
    249                         JOptionPane.showMessageDialog(
    250                                         Main.parent,
    251                                         formatErrorMessages(),
    252                                         tr("Error"),
    253                                         JOptionPane.ERROR_MESSAGE
    254                         );
    255                 }
     247            if (!errorMessages.isEmpty()) {
     248                JOptionPane.showMessageDialog(
     249                        Main.parent,
     250                        formatErrorMessages(),
     251                        tr("Error"),
     252                        JOptionPane.ERROR_MESSAGE
     253                );
     254            }
    256255            if (layer != null) {
    257256                Main.main.addLayer(layer);
     
    276275            cancelled = true;
    277276        }
    278        
    279         class Thumbsloader implements Runnable {
    280             public void run() {
    281                 System.err.println("Load Thumbnails");
    282                 MediaTracker tracker = new MediaTracker(Main.map.mapView);
    283                 for (int i = 0; i < layer.data.size(); i++) {
    284                     System.err.println("getImg "+i);
    285                     Image img = Toolkit.getDefaultToolkit().createImage(layer.data.get(i).file.getPath());
    286                     tracker.addImage(img, 0);
    287                     try {
    288                                 tracker.waitForID(0);
    289                     } catch (InterruptedException e) {
    290                         System.err.println("InterruptedException");
    291                                 return; //  FIXME
    292                     }
    293                     BufferedImage scaledBI = new BufferedImage(16, 16, BufferedImage.TYPE_INT_RGB);
    294                     Graphics2D g = scaledBI.createGraphics();
    295                     while (!g.drawImage(img, 0, 0, 16, 16, null))
    296                     {
    297                         try {
    298                             Thread.sleep(10);
    299                         } catch(InterruptedException ie) {}
    300                     }
    301                     g.dispose();
    302                     tracker.removeImage(img);
    303                     layer.data.get(i).thumbnail = scaledBI;
    304                     if (Main.map != null && Main.map.mapView != null) {
    305                         Main.map.mapView.repaint();
    306                     }
    307                 }
    308                
    309 //                boolean error = tracker.isErrorID(1);
    310 //                if (img != null && (img.getWidth(null) == 0 || img.getHeight(null) == 0)) {
    311 //                    error = true;
    312 //                }
    313 
    314 
    315             }
    316         }       
    317     }
    318    
     277    }
     278
    319279    private static boolean addedToggleDialog = false;
    320280
     
    424384                Point p = mv.getPoint(e.pos);
    425385                if (e.thumbnail != null && e.thumbnail.getWidth(null) > 0 && e.thumbnail.getHeight(null) > 0) {
    426                     g.drawImage(e.thumbnail, 
    427                                 p.x - e.thumbnail.getWidth(null) / 2, 
     386                    g.drawImage(e.thumbnail,
     387                                p.x - e.thumbnail.getWidth(null) / 2,
    428388                                p.y - e.thumbnail.getHeight(null) / 2, null);
    429389                }
    430390                else {
    431                 icon.paintIcon(mv, g, 
    432                                p.x - icon.getIconWidth() / 2, 
     391                icon.paintIcon(mv, g,
     392                               p.x - icon.getIconWidth() / 2,
    433393                               p.y - icon.getIconHeight() / 2);
    434394                }
     
    537497        Main.main.map.repaint();
    538498    }
    539    
     499
    540500    public void checkPreviousNextButtons() {
    541501        System.err.println("check: " + currentPhoto);
     
    598558                        ImageViewerDialog.showImage(GeoImageLayer.this, e);
    599559                        Main.main.map.repaint();
    600                        
    601                        
    602560                        break;
    603561                    }
     
    628586        });
    629587    }
    630 
    631588}
Note: See TracChangeset for help on using the changeset viewer.