Ignore:
Timestamp:
2009-01-01T18:28:53+01:00 (16 years ago)
Author:
stoecker
Message:

removed tab stop usage

Location:
applications/editors/josm/plugins/agpifoj/src/org/openstreetmap/josm/plugins/agpifoj
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/agpifoj/src/org/openstreetmap/josm/plugins/agpifoj/AgpifojDialog.java

    r12746 r12778  
    11// License: GPL. Copyright 2007 by Christian Gallioz (aka khris78)
    2 // Parts of code from Geotagged plugin (by Rob Neild) 
     2// Parts of code from Geotagged plugin (by Rob Neild)
    33// and the core JOSM source code (by Immanuel Scholz and others)
    44
     
    3434    private ImageDisplay imgDisplay = new ImageDisplay();
    3535    private boolean centerView = false;
    36    
     36
    3737    // Only one instance of that class
    3838    static private AgpifojDialog INSTANCE = null;
    39    
     39
    4040    public static AgpifojDialog getInstance() {
    4141        if (INSTANCE == null) {
     
    5151            throw new IllegalStateException("Agpifoj dialog should not be instanciated twice !");
    5252        }
    53        
     53
    5454        INSTANCE = this;
    55        
     55
    5656        JPanel content = new JPanel();
    5757        content.setLayout(new BorderLayout());
    5858
    5959        content.add(imgDisplay, BorderLayout.CENTER);
    60        
     60
    6161        JPanel buttons = new JPanel();
    6262        buttons.setLayout(new FlowLayout());
    63        
     63
    6464        JButton button;
    65        
     65
    6666        Dimension buttonDim = new Dimension(26,26);
    6767        button = new JButton();
     
    7272        button.setPreferredSize(buttonDim);
    7373        buttons.add(button);
    74        
     74
    7575        button = new JButton();
    7676        button.setIcon(ImageProvider.get("dialogs", "delete"));
     
    8080        button.setPreferredSize(buttonDim);
    8181        buttons.add(button);
    82        
     82
    8383        button = new JButton();
    8484        button.setIcon(ImageProvider.get("dialogs", "next"));
     
    8888        button.setPreferredSize(buttonDim);
    8989        buttons.add(button);
    90        
     90
    9191        JToggleButton tb = new JToggleButton();
    9292        tb.setIcon(ImageProvider.get("dialogs", "centreview"));
     
    9696        tb.setPreferredSize(buttonDim);
    9797        buttons.add(tb);
    98        
     98
    9999        button = new JButton();
    100100        button.setIcon(ImageProvider.get("dialogs", "zoom-best-fit"));
     
    104104        button.setPreferredSize(buttonDim);
    105105        buttons.add(button);
    106        
     106
    107107        content.add(buttons, BorderLayout.SOUTH);
    108108
    109109        add(content, BorderLayout.CENTER);
    110        
     110
    111111    }
    112112
     
    120120                currentLayer.showPreviousPhoto();
    121121            }
    122            
     122
    123123        } else if (COMMAND_CENTERVIEW.equals(e.getActionCommand())) {
    124124            centerView = ((JToggleButton) e.getSource()).isSelected();
     
    126126                Main.map.mapView.zoomTo(currentEntry.pos, Main.map.mapView.getScale());
    127127            }
    128            
     128
    129129        } else if (COMMAND_ZOOM.equals(e.getActionCommand())) {
    130130            imgDisplay.zoomBestFitOrOne();
    131            
     131
    132132        } else if (COMMAND_REMOVE.equals(e.getActionCommand())) {
    133133            if (currentLayer != null) {
     
    135135            }
    136136        }
    137        
     137
    138138    }
    139139
     
    144144    private AgpifojLayer currentLayer = null;
    145145    private ImageEntry currentEntry = null;
    146    
     146
    147147    public void displayImage(AgpifojLayer layer, ImageEntry entry) {
    148148        synchronized(this) {
     
    151151                return;
    152152            }
    153        
     153
    154154            if (centerView && Main.map != null && entry != null && entry.pos != null) {
    155155                Main.map.mapView.zoomTo(entry.pos, Main.map.mapView.getScale());
     
    159159            currentEntry = entry;
    160160        }
    161        
     161
    162162        if (entry != null) {
    163163            imgDisplay.setImage(entry.file);
  • applications/editors/josm/plugins/agpifoj/src/org/openstreetmap/josm/plugins/agpifoj/AgpifojLayer.java

    r12747 r12778  
    11// License: GPL. Copyright 2007 by Christian Gallioz (aka khris78)
    2 // Parts of code from Geotagged plugin (by Rob Neild) 
     2// Parts of code from Geotagged plugin (by Rob Neild)
    33// and the core JOSM source code (by Immanuel Scholz and others)
    44
     
    4848
    4949    List<ImageEntry> data;
    50    
     50
    5151    private Icon icon = ImageProvider.get("dialogs/agpifoj-marker");
    5252    private Icon selectedIcon = ImageProvider.get("dialogs/agpifoj-marker-selected");
    53    
     53
    5454    private int currentPhoto = -1;
    55    
     55
    5656    /*
    5757     * Stores info about each image
     
    8383
    8484    /** Loads a set of images, while displaying a dialog that indicates what the plugin is currently doing.
    85      * In facts, this object is instantiated with a list of files. These files may be JPEG files or 
    86      * directories. In case of directories, they are scanned to find all the images they contain. 
    87      * Then all the images that have be found are loaded as ImageEntry instances. 
     85     * In facts, this object is instantiated with a list of files. These files may be JPEG files or
     86     * directories. In case of directories, they are scanned to find all the images they contain.
     87     * Then all the images that have be found are loaded as ImageEntry instances.
    8888     */
    8989    private static final class Loader extends PleaseWaitRunnable {
     
    9393        private final File[] selection;
    9494        private HashSet<String> loadedDirectories = new HashSet<String>();
    95        
     95
    9696        public Loader(File[] selection) {
    9797            super(tr("Extracting GPS locations from EXIF"));
     
    108108                errorMessage += tr("One of the selected files was null !!!");
    109109            }
    110            
     110
    111111            if (cancelled) {
    112112                return;
    113113            }
    114            
     114
    115115            Main.pleaseWaitDlg.currentAction.setText(tr("Read photos..."));
    116116
     
    121121            Main.pleaseWaitDlg.progress.setMaximum(files.size());
    122122            Main.pleaseWaitDlg.progress.setValue(progress);
    123            
     123
    124124            for (File f : files) {
    125125
     
    149149        }
    150150
    151         private void addRecursiveFiles(List<File> files, File[] sel) { 
     151        private void addRecursiveFiles(List<File> files, File[] sel) {
    152152            boolean nullFile = false;
    153            
     153
    154154            for (File f : sel) {
    155                
     155
    156156                if(cancelled) {
    157157                    break;
    158158                }
    159                
     159
    160160                if (f == null) {
    161161                    nullFile = true;
    162                    
     162
    163163                } else if (f.isDirectory()) {
    164164                    String canonical = null;
     
    167167                    } catch (IOException e) {
    168168                        e.printStackTrace();
    169                         errorMessage += tr("Unable to get canonical path for directory {0}\n", 
     169                        errorMessage += tr("Unable to get canonical path for directory {0}\n",
    170170                                           f.getAbsolutePath());
    171171                    }
    172                    
     172
    173173                    if (canonical == null || loadedDirectories.contains(canonical)) {
    174174                        continue;
     
    176176                        loadedDirectories.add(canonical);
    177177                    }
    178                    
     178
    179179                    File[] children = f.listFiles(AgpifojPlugin.JPEG_FILE_FILTER);
    180180                    if (children != null) {
     
    189189                        errorMessage += tr("Error while getting files from directory {0}\n", f.getPath());
    190190                    }
    191                    
     191
    192192                } else {
    193193                      files.add(f);
    194194                }
    195195            }
    196            
     196
    197197            if (nullFile) {
    198198                throw new NullPointerException();
     
    251251    @Override
    252252    public Component[] getMenuEntries() {
    253        
     253
    254254        JMenuItem correlateItem = new JMenuItem(tr("Correlate to GPX"), ImageProvider.get("dialogs/gpx2img"));
    255255        correlateItem.addActionListener(new CorrelateGpxWithImages(this));
     
    283283        AgpifojLayer l = (AgpifojLayer) from;
    284284
    285         ImageEntry selected = null; 
     285        ImageEntry selected = null;
    286286        if (l.currentPhoto >= 0) {
    287287            selected = l.data.get(l.currentPhoto);
    288288        }
    289        
     289
    290290        data.addAll(l.data);
    291291        Collections.sort(data);
    292        
     292
    293293        // Supress the double photos.
    294294        if (data.size() > 1) {
     
    304304            }
    305305        }
    306        
     306
    307307        if (selected != null) {
    308308            for (int i = 0; i < data.size() ; i++) {
     
    314314            }
    315315        }
    316        
     316
    317317        name = l.name;
    318        
     318
    319319    }
    320320
     
    324324        int iconWidth = icon.getIconWidth() / 2;
    325325        int iconHeight = icon.getIconHeight() / 2;
    326        
     326
    327327        for (ImageEntry e : data) {
    328328            if (e.pos != null) {
     
    331331                Rectangle r = new Rectangle(p.x - iconWidth,
    332332                                            p.y - iconHeight,
    333                                             icon.getIconWidth(), 
     333                                            icon.getIconWidth(),
    334334                                            icon.getIconHeight());
    335335                icon.paintIcon(mv, g, r.x, r.y);
    336336            }
    337337        }
    338        
     338
    339339        // Draw the selection on top of the other pictures.
    340340        if (currentPhoto >= 0 && currentPhoto < data.size()) {
     
    346346                Rectangle r = new Rectangle(p.x - selectedIcon.getIconWidth() / 2,
    347347                                            p.y - selectedIcon.getIconHeight() / 2,
    348                                             selectedIcon.getIconWidth(), 
     348                                            selectedIcon.getIconWidth(),
    349349                                            selectedIcon.getIconHeight());
    350350                selectedIcon.paintIcon(mv, g, r.x, r.y);
     
    361361    /*
    362362     * Extract gps from image exif
    363      * 
     363     *
    364364     * If successful, fills in the LatLon and EastNorth attributes of passed in
    365365     * image;
     
    414414        }
    415415    }
    416    
     416
    417417    public void showNextPhoto() {
    418418        if (data != null && data.size() > 0) {
     
    427427        Main.main.map.repaint();
    428428    }
    429    
     429
    430430    public void showPreviousPhoto() {
    431431        if (data != null && data.size() > 0) {
     
    440440        Main.main.map.repaint();
    441441    }
    442    
     442
    443443    public void removeCurrentPhoto() {
    444444        if (data != null && data.size() > 0 && currentPhoto >= 0 && currentPhoto < data.size()) {
     
    455455        Main.main.map.repaint();
    456456    }
    457    
     457
    458458    private MouseAdapter mouseAdapter = null;
    459459
     
    481481                        continue;
    482482                    Point p = Main.map.mapView.getPoint(e.pos);
    483                     Rectangle r = new Rectangle(p.x - icon.getIconWidth() / 2, 
    484                                                 p.y - icon.getIconHeight() / 2, 
    485                                                 icon.getIconWidth(), 
     483                    Rectangle r = new Rectangle(p.x - icon.getIconWidth() / 2,
     484                                                p.y - icon.getIconHeight() / 2,
     485                                                icon.getIconWidth(),
    486486                                                icon.getIconHeight());
    487487                    if (r.contains(ev.getPoint())) {
  • applications/editors/josm/plugins/agpifoj/src/org/openstreetmap/josm/plugins/agpifoj/AgpifojPlugin.java

    r12747 r12778  
    11// License: GPL. Copyright 2007 by Christian Gallioz (aka khris78)
    2 // Parts of code from Geotagged plugin (by Rob Neild) 
     2// Parts of code from Geotagged plugin (by Rob Neild)
    33// and the core JOSM source code (by Immanuel Scholz and others)
    44
     
    2323
    2424public class AgpifojPlugin extends Plugin {
    25    
    26     static class JpegFileFilter extends javax.swing.filechooser.FileFilter 
     25
     26    static class JpegFileFilter extends javax.swing.filechooser.FileFilter
    2727                                        implements java.io.FileFilter {
    28        
     28
    2929        @Override public boolean accept(File f) {
    3030            if (f.isDirectory()) {
     
    4040        }
    4141    };
    42    
     42
    4343    static final JpegFileFilter JPEG_FILE_FILTER = new JpegFileFilter();
    44    
     44
    4545    private class Action extends JosmAction {
    4646
     
    5959            fc.setAcceptAllFileFilterUsed(false);
    6060            fc.setFileFilter(JPEG_FILE_FILTER);
    61            
     61
    6262            fc.showOpenDialog(Main.parent);
    63            
     63
    6464            File[] sel = fc.getSelectedFiles();
    6565            if (sel == null || sel.length == 0) {
    6666                return;
    6767            }
    68            
     68
    6969            Main.pref.put("tagimages.lastdirectory", fc.getCurrentDirectory().getPath());
    70            
     70
    7171            AgpifojLayer.create(sel);
    7272        }
    7373    }
    74    
     74
    7575    public AgpifojPlugin() {
    7676        MainMenu.add(Main.main.menu.fileMenu, new Action());
  • applications/editors/josm/plugins/agpifoj/src/org/openstreetmap/josm/plugins/agpifoj/CorrelateGpxWithImages.java

    r12747 r12778  
    11// License: GPL. Copyright 2007 by Christian Gallioz (aka khris78)
    2 // Parts of code from Geotagged plugin (by Rob Neild) 
     2// Parts of code from Geotagged plugin (by Rob Neild)
    33// and the core JOSM source code (by Immanuel Scholz and others)
    44
     
    6464import org.xml.sax.SAXException;
    6565
    66 /** This class displays the window to select the GPX file and the offset (timezone + delta). 
     66/** This class displays the window to select the GPX file and the offset (timezone + delta).
    6767 * Then it correlates the images of the layer with that GPX file.
    6868 */
     
    7676        long offset;
    7777    }
    78    
     78
    7979    AgpifojLayer yLayer = null;
    80    
     80
    8181    private static class GpxDataWrapper {
    8282        String name;
    8383        GpxData data;
    8484        File file;
    85        
     85
    8686        public GpxDataWrapper(String name, GpxData data, File file) {
    8787            this.name = name;
    88             this.data = data; 
     88            this.data = data;
    8989            this.file = file;
    9090        }
    91        
     91
    9292        public String toString() {
    9393            return name;
    9494        }
    9595    }
    96    
     96
    9797    Vector gpxLst = new Vector();
    9898    JPanel panel = null;
     
    103103    JRadioButton rbUntaggedImg = null;
    104104    JRadioButton rbNoExifImg = null;
    105    
    106     /** This class is called when the user doesn't find the GPX file he needs in the files that have 
     105
     106    /** This class is called when the user doesn't find the GPX file he needs in the files that have
    107107     * been loaded yet. It displays a FileChooser dialog to select the GPX file to be loaded.
    108      */ 
     108     */
    109109    private class LoadGpxDataActionListener implements ActionListener {
    110        
     110
    111111        public void actionPerformed(ActionEvent arg0) {
    112112            JFileChooser fc = new JFileChooser(Main.pref.get("lastDirectory"));
     
    118118                @Override public boolean accept(File f) {
    119119                    return (f.isDirectory()
    120                             || f .getName().toLowerCase().endsWith(".gpx") 
     120                            || f .getName().toLowerCase().endsWith(".gpx")
    121121                            || f.getName().toLowerCase().endsWith(".gpx.gz"));
    122122                }
     
    129129            if (sel == null)
    130130                return;
    131            
     131
    132132            try {
    133133                panel.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
    134                
     134
    135135                Main.pref.put("lastDirectory", sel.getPath());
    136                
     136
    137137                for (int i = gpxLst.size() - 1 ; i >= 0 ; i--) {
    138138                    if (gpxLst.get(i) instanceof GpxDataWrapper) {
    139                         GpxDataWrapper wrapper = (GpxDataWrapper) gpxLst.get(i); 
     139                        GpxDataWrapper wrapper = (GpxDataWrapper) gpxLst.get(i);
    140140                        if (sel.equals(wrapper.file)) {
    141141                            cbGpx.setSelectedIndex(i);
    142142                            if (!sel.getName().equals(wrapper.name)) {
    143                                 JOptionPane.showMessageDialog(Main.parent, 
     143                                JOptionPane.showMessageDialog(Main.parent,
    144144                                        tr("File {0} is loaded yet under the name \"{1}\"", sel.getName(), wrapper.name));
    145145                            }
     
    154154                        iStream = new GZIPInputStream(new FileInputStream(sel));
    155155                    } else {
    156                         iStream = new FileInputStream(sel); 
     156                        iStream = new FileInputStream(sel);
    157157                    }
    158158                    data = new GpxReader(iStream, sel).data;
    159159                    data.storageFile = sel;
    160                
     160
    161161                } catch (SAXException x) {
    162162                    x.printStackTrace();
     
    168168                    return;
    169169                }
    170                
     170
    171171                loadedGpxData.add(data);
    172172                if (gpxLst.get(0) instanceof String) {
     
    180180        }
    181181    }
    182    
    183     /** This action listener is called when the user has a photo of the time of his GPS receiver. It 
     182
     183    /** This action listener is called when the user has a photo of the time of his GPS receiver. It
    184184     * displays the list of photos of the layer, and upon selection displays the selected photo.
    185      * From that photo, the user can key in the time of the GPS. 
    186      * Then values of timezone and delta are set. 
     185     * From that photo, the user can key in the time of the GPS.
     186     * Then values of timezone and delta are set.
    187187     * @author chris
    188188     *
     
    195195        ImageDisplay imgDisp;
    196196        JList imgList;
    197        
     197
    198198        public void actionPerformed(ActionEvent arg0) {
    199199            SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
     
    203203            panel.add(new JLabel(tr("<html>Take a photo of your GPS receiver while it displays the time.<br>"
    204204                                    + "Display that photo here.<br>"
    205                                     + "And then, simply capture the time you read on the photo and select a timezone<hr></html>")), 
     205                                    + "And then, simply capture the time you read on the photo and select a timezone<hr></html>")),
    206206                                    BorderLayout.NORTH);
    207            
     207
    208208            imgDisp = new ImageDisplay();
    209209            imgDisp.setPreferredSize(new Dimension(300, 225));
    210210            panel.add(imgDisp, BorderLayout.CENTER);
    211            
     211
    212212            JPanel panelTf = new JPanel();
    213213            panelTf.setLayout(new GridBagLayout());
    214            
     214
    215215            GridBagConstraints gc = new GridBagConstraints();
    216216            gc.gridx = gc.gridy = 0;
     
    227227            gc.gridwidth = 2;
    228228            panelTf.add(lbExifTime, gc);
    229            
     229
    230230            gc.gridx = 0;
    231231            gc.gridy = 1;
     
    247247            gc.weightx = 0.2;
    248248            panelTf.add(new JLabel(tr(" [dd/mm/yyyy hh:mm:ss]")), gc);
    249            
     249
    250250            gc.gridx = 0;
    251251            gc.gridy = 2;
     
    255255            gc.anchor = GridBagConstraints.WEST;
    256256            panelTf.add(new JLabel(tr("I'm in the timezone of: ")), gc);
    257            
     257
    258258            Vector vtTimezones = new Vector<String>();
    259259            String[] tmp = TimeZone.getAvailableIDs();
    260            
     260
    261261            for (String tzStr : tmp) {
    262262                TimeZone tz = TimeZone.getTimeZone(tzStr);
    263                  
     263
    264264                String tzDesc = new StringBuffer(tzStr).append(" (")
    265265                                        .append(formatTimezone(tz.getRawOffset() / 3600000.0))
     
    267267                vtTimezones.add(tzDesc);
    268268            }
    269            
     269
    270270            Collections.sort(vtTimezones);
    271            
     271
    272272            cbTimezones = new JComboBox(vtTimezones);
    273            
     273
    274274            String tzId = Main.pref.get("tagimages.timezoneid", "");
    275275            TimeZone defaultTz;
     
    279279                defaultTz = TimeZone.getTimeZone(tzId);
    280280            }
    281            
     281
    282282            cbTimezones.setSelectedItem(new StringBuffer(defaultTz.getID()).append(" (")
    283283                    .append(formatTimezone(defaultTz.getRawOffset() / 3600000.0))
    284284                    .append(')').toString());
    285            
     285
    286286            gc.gridx = 1;
    287287            gc.weightx = 1.0;
     
    289289            gc.fill = GridBagConstraints.HORIZONTAL;
    290290            panelTf.add(cbTimezones, gc);
    291            
     291
    292292            panel.add(panelTf, BorderLayout.SOUTH);
    293293
    294294            JPanel panelLst = new JPanel();
    295295            panelLst.setLayout(new BorderLayout());
    296            
     296
    297297            imgList = new JList(new AbstractListModel() {
    298298                public Object getElementAt(int i) {
     
    312312                    Date date = yLayer.data.get(index).time;
    313313                    if (date != null) {
    314                         lbExifTime.setText(new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(date));                   
     314                        lbExifTime.setText(new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(date));
    315315                        tfGpsTime.setText(new SimpleDateFormat("dd/MM/yyyy ").format(date));
    316316                        tfGpsTime.setCaretPosition(tfGpsTime.getText().length());
    317317                        tfGpsTime.setEnabled(true);
    318                     } else {                       
     318                    } else {
    319319                        lbExifTime.setText(tr("No date"));
    320320                        tfGpsTime.setText("");
     
    322322                    }
    323323                }
    324                
     324
    325325            });
    326326            panelLst.add(new JScrollPane(imgList), BorderLayout.CENTER);
    327            
     327
    328328            JButton openButton = new JButton(tr("Open an other photo"));
    329329            openButton.addActionListener(new ActionListener() {
     
    349349                    }
    350350                    if (date != null) {
    351                         lbExifTime.setText(new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(date));                   
     351                        lbExifTime.setText(new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(date));
    352352                        tfGpsTime.setText(new SimpleDateFormat("dd/MM/yyyy ").format(date));
    353353                        tfGpsTime.setEnabled(true);
    354                     } else {                       
     354                    } else {
    355355                        lbExifTime.setText(tr("No date"));
    356356                        tfGpsTime.setText("");
     
    360360            });
    361361            panelLst.add(openButton, BorderLayout.PAGE_END);
    362            
     362
    363363            panel.add(panelLst, BorderLayout.LINE_START);
    364            
     364
    365365            boolean isOk = false;
    366366            while (! isOk) {
     
    370370                }
    371371
    372                 long delta; 
    373                    
     372                long delta;
     373
    374374                try {
    375                     delta = dateFormat.parse(lbExifTime.getText()).getTime() 
     375                    delta = dateFormat.parse(lbExifTime.getText()).getTime()
    376376                            - dateFormat.parse(tfGpsTime.getText()).getTime();
    377377                } catch(ParseException e) {
    378                     JOptionPane.showMessageDialog(Main.parent, tr("Error while parsing the date.\n" 
    379                             + "Please use the requested format"), 
     378                    JOptionPane.showMessageDialog(Main.parent, tr("Error while parsing the date.\n"
     379                            + "Please use the requested format"),
    380380                            tr("Invalid date"), JOptionPane.ERROR_MESSAGE );
    381381                    continue;
    382382                }
    383                
     383
    384384                String selectedTz = (String) cbTimezones.getSelectedItem();
    385385                int pos = selectedTz.lastIndexOf('(');
    386386                tzId = selectedTz.substring(0, pos - 1);
    387                 String tzValue = selectedTz.substring(pos + 1, selectedTz.length() - 1); 
    388                
     387                String tzValue = selectedTz.substring(pos + 1, selectedTz.length() - 1);
     388
    389389                Main.pref.put("tagimages.timezoneid", tzId);
    390390                tfOffset.setText(Long.toString(delta / 1000));
    391391                tfTimezone.setText(tzValue);
    392                
     392
    393393                isOk = true;
    394                
    395             }
    396            
    397         }
    398     }
    399    
     394
     395            }
     396
     397        }
     398    }
     399
    400400    public CorrelateGpxWithImages(AgpifojLayer layer) {
    401401        this.yLayer = layer;
     
    409409            Layer cur = iterLayer.next();
    410410            if (cur instanceof GpxLayer) {
    411                 gpxLst.add(new GpxDataWrapper(((GpxLayer) cur).name, 
    412                                               ((GpxLayer) cur).data, 
    413                                               ((GpxLayer) cur).data.storageFile)); 
     411                gpxLst.add(new GpxDataWrapper(((GpxLayer) cur).name,
     412                                              ((GpxLayer) cur).data,
     413                                              ((GpxLayer) cur).data.storageFile));
    414414            }
    415415        }
    416416        for (GpxData data : loadedGpxData) {
    417             gpxLst.add(new GpxDataWrapper(data.storageFile.getName(), 
     417            gpxLst.add(new GpxDataWrapper(data.storageFile.getName(),
    418418                                          data,
    419                                           data.storageFile)); 
    420         }
    421        
     419                                          data.storageFile));
     420        }
     421
    422422        if (gpxLst.size() == 0) {
    423423            gpxLst.add(tr("<No GPX track loaded yet>"));
    424424        }
    425        
     425
    426426        JPanel panelCb = new JPanel();
    427427        panelCb.setLayout(new FlowLayout());
    428        
     428
    429429        panelCb.add(new JLabel(tr("GPX track: ")));
    430        
     430
    431431        cbGpx = new JComboBox(gpxLst);
    432432        panelCb.add(cbGpx);
    433        
     433
    434434        JButton buttonOpen = new JButton(tr("Open another GPX trace"));
    435435        buttonOpen.setIcon(ImageProvider.get("agpifoj-open"));
    436436        buttonOpen.addActionListener(new LoadGpxDataActionListener());
    437        
     437
    438438        panelCb.add(buttonOpen);
    439        
     439
    440440        JPanel panelTf = new JPanel();
    441441        panelTf.setLayout(new GridBagLayout());
    442        
     442
    443443        GridBagConstraints gc = new GridBagConstraints();
    444444        gc.anchor = GridBagConstraints.WEST;
    445        
     445
    446446        gc.gridx = gc.gridy = 0;
    447447        gc.gridwidth = gc.gridheight = 1;
     
    464464        gc.weighty = 0.0;
    465465        panelTf.add(tfTimezone, gc);
    466        
     466
    467467        gc.gridx = 0;
    468468        gc.gridy = 1;
     
    493493        gc.weighty = 1.0;
    494494        panelTf.add(buttonViewGpsPhoto, gc);
    495        
     495
    496496        gc.gridx = 0;
    497497        gc.gridy = 2;
     
    500500        gc.weightx = gc.weighty = 0.0;
    501501        panelTf.add(new JLabel(tr("Update position for: ")), gc);
    502        
     502
    503503        gc.gridx = 1;
    504504        gc.gridy = 2;
     
    510510        rbAllImg = new JRadioButton(tr("All images"));
    511511        panelTf.add(rbAllImg, gc);
    512        
     512
    513513        gc.gridx = 1;
    514514        gc.gridy = 3;
     
    520520        rbNoExifImg = new JRadioButton(tr("Images with no exif position"));
    521521        panelTf.add(rbNoExifImg, gc);
    522        
     522
    523523        gc.gridx = 1;
    524524        gc.gridy = 4;
     
    530530        rbUntaggedImg = new JRadioButton(tr("Not yet tagged images"));
    531531        panelTf.add(rbUntaggedImg, gc);
    532        
     532
    533533        ButtonGroup group = new ButtonGroup();
    534534        group.add(rbAllImg);
    535535        group.add(rbNoExifImg);
    536536        group.add(rbUntaggedImg);
    537        
     537
    538538        rbUntaggedImg.setSelected(true);
    539        
     539
    540540        panel = new JPanel();
    541541        panel.setLayout(new BorderLayout());
    542        
     542
    543543        panel.add(panelCb, BorderLayout.PAGE_START);
    544544        panel.add(panelTf, BorderLayout.CENTER);
     
    555555
    556556            if (item == null || ! (item instanceof GpxDataWrapper)) {
    557                 JOptionPane.showMessageDialog(Main.parent, tr("You should select a GPX track"), 
     557                JOptionPane.showMessageDialog(Main.parent, tr("You should select a GPX track"),
    558558                                              tr("No selected GPX track"), JOptionPane.ERROR_MESSAGE );
    559559                continue;
     
    563563            Float timezoneValue = parseTimezone(tfTimezone.getText().trim());
    564564            if (timezoneValue == null) {
    565                 JOptionPane.showMessageDialog(Main.parent, tr("Error while parsing timezone.\nExpected format: {0}", "+H:MM"), 
     565                JOptionPane.showMessageDialog(Main.parent, tr("Error while parsing timezone.\nExpected format: {0}", "+H:MM"),
    566566                        tr("Invalid timezone"), JOptionPane.ERROR_MESSAGE);
    567567                continue;
    568568            }
    569569            gpstimezone = timezoneValue.floatValue();
    570            
     570
    571571            String deltaText = tfOffset.getText().trim();
    572572            if (deltaText.length() > 0) {
     
    574574                    delta = Long.parseLong(deltaText);
    575575                } catch(NumberFormatException nfe) {
    576                     JOptionPane.showMessageDialog(Main.parent, tr("Error while parsing offset.\nExpected format: {0}", "number"), 
     576                    JOptionPane.showMessageDialog(Main.parent, tr("Error while parsing offset.\nExpected format: {0}", "number"),
    577577                            tr("Invalid offset"), JOptionPane.ERROR_MESSAGE);
    578578                    continue;
     
    581581                delta = 0;
    582582            }
    583            
     583
    584584            Main.pref.put("tagimages.doublegpstimezone", Double.toString(gpstimezone));
    585585            Main.pref.put("tagimages.gpstimezone", Long.toString(- ((long) gpstimezone)));
    586586            Main.pref.put("tagimages.delta", Long.toString(delta * 1000));
    587            
     587
    588588            isOk = true;
    589589        }
    590        
     590
    591591        // Construct a list of images that have a date, and sort them on the date.
    592592        ArrayList<ImageEntry> dateImgLst = new ArrayList<ImageEntry>(yLayer.data.size());
     
    597597                }
    598598            }
    599        
     599
    600600        } else if (rbNoExifImg.isSelected()) {
    601601            for (ImageEntry e : yLayer.data) {
     
    605605            }
    606606
    607         } else { // rbUntaggedImg.isSelected() 
     607        } else { // rbUntaggedImg.isSelected()
    608608            for (ImageEntry e : yLayer.data) {
    609609                if (e.time != null && e.coor == null) {
     
    612612            }
    613613        }
    614        
     614
    615615        int matched = matchGpxTrack(dateImgLst, selectedGpx.data, (long) (gpstimezone * 3600000) + delta * 1000);
    616616
    617         // Search whether an other layer has yet defined some bounding box. 
     617        // Search whether an other layer has yet defined some bounding box.
    618618        // If none, we'll zoom to the bounding box of the layer with the photos.
    619619        Collection<Layer> layerCol = Main.map.mapView.getAllLayers();
    620620        Iterator<Layer> layerIter = layerCol.iterator();
    621         boolean boundingBoxedLayerFound = false; 
     621        boolean boundingBoxedLayerFound = false;
    622622        while (layerIter.hasNext()) {
    623623            Layer l = layerIter.next();
     
    636636            Main.map.mapView.recalculateCenterScale(bbox);
    637637        }
    638        
     638
    639639        Main.main.map.repaint();
    640        
     640
    641641        JOptionPane.showMessageDialog(Main.parent, tr("Found {0} matchs of {1} in GPX track {2}", matched, dateImgLst.size(), selectedGpx.name),
    642                 tr("GPX Track loaded"), 
    643                 ((dateImgLst.size() > 0 && matched == 0) ? JOptionPane.WARNING_MESSAGE 
     642                tr("GPX Track loaded"),
     643                ((dateImgLst.size() > 0 && matched == 0) ? JOptionPane.WARNING_MESSAGE
    644644                                                         : JOptionPane.INFORMATION_MESSAGE));
    645        
     645
    646646    }
    647647
    648648    private int matchGpxTrack(ArrayList<ImageEntry> dateImgLst, GpxData selectedGpx, long offset) {
    649649        int ret = 0;
    650        
     650
    651651        Collections.sort(dateImgLst, new Comparator<ImageEntry>() {
    652652            public int compare(ImageEntry arg0, ImageEntry arg1) {
     
    654654            }
    655655        });
    656        
     656
    657657        PrimaryDateParser dateParser = new PrimaryDateParser();
    658        
     658
    659659        for (GpxTrack trk : selectedGpx.tracks) {
    660660            for (Collection<WayPoint> segment : trk.trackSegs) {
    661                
     661
    662662                long prevDateWp = 0;
    663663                WayPoint prevWp = null;
    664                
     664
    665665                for (WayPoint curWp : segment) {
    666                
    667                     String curDateWpStr = (String) curWp.attr.get("time"); 
     666
     667                    String curDateWpStr = (String) curWp.attr.get("time");
    668668                    if (curDateWpStr != null) {
    669                        
     669
    670670                        try {
    671671                            long curDateWp = dateParser.parse(curDateWpStr).getTime() + offset;
    672672                            ret += matchPoints(dateImgLst, prevWp, prevDateWp, curWp, curDateWp);
    673                            
     673
    674674                            prevWp = curWp;
    675675                            prevDateWp = curDateWp;
     
    710710            } catch (Exception e) {
    711711            }
    712            
    713             while(i >= 0 
     712
     713            while(i >= 0
    714714                    && dateImgLst.get(i).time.getTime() == curDateWp) {
    715                 dateImgLst.get(i).pos = curWp.eastNorth; 
     715                dateImgLst.get(i).pos = curWp.eastNorth;
    716716                dateImgLst.get(i).coor = Main.proj.eastNorth2latlon(dateImgLst.get(i).pos);
    717717                dateImgLst.get(i).speed = speed;
     
    720720                i--;
    721721            }
    722            
     722
    723723            if (prevDateWp != 0) {
    724724                long imgDate;
    725                 while(i >= 0 
     725                while(i >= 0
    726726                        && (imgDate = dateImgLst.get(i).time.getTime()) > prevDateWp) {
    727727                    dateImgLst.get(i).pos = new EastNorth(
    728728                            prevWp.eastNorth.east() + ((curWp.eastNorth.east() - prevWp.eastNorth.east()) * (imgDate - prevDateWp)) / (curDateWp - prevDateWp),
    729                             prevWp.eastNorth.north() + ((curWp.eastNorth.north() - prevWp.eastNorth.north()) * (imgDate - prevDateWp)) / (curDateWp - prevDateWp)); 
     729                            prevWp.eastNorth.north() + ((curWp.eastNorth.north() - prevWp.eastNorth.north()) * (imgDate - prevDateWp)) / (curDateWp - prevDateWp));
    730730                    dateImgLst.get(i).coor = Main.proj.eastNorth2latlon(dateImgLst.get(i).pos);
    731731                    dateImgLst.get(i).speed = speed;
    732732                    if (curElevation != null && prevElevation != null) {
    733733                        dateImgLst.get(i).elevation = prevElevation + ((curElevation - prevElevation) * (imgDate - prevDateWp)) / (curDateWp - prevDateWp);
    734                     } 
     734                    }
    735735                    ret++;
    736736                    i--;
     
    757757            return curIndex;
    758758        }
    759        
     759
    760760        int curIndex = 0;
    761761        int startIndex=0;
     
    782782    private String formatTimezone(double timezone) {
    783783        StringBuffer ret = new StringBuffer();
    784        
     784
    785785        if (timezone < 0) {
    786786            ret.append('-');
     
    795795        }
    796796        ret.append(minutes);
    797        
     797
    798798        return ret.toString();
    799799    }
    800    
     800
    801801    private Float parseTimezone(String timezone) {
    802         if (timezone.length() == 0) {
    803                 return new Float(0);
    804         }
    805        
     802        if (timezone.length() == 0) {
     803            return new Float(0);
     804        }
     805
    806806        char sgnTimezone = '+';
    807807        StringBuffer hTimezone = new StringBuffer();
     
    817817                break;
    818818            case '+' :
    819             case '-' : 
     819            case '-' :
    820820                if (state == 1) {
    821821                    sgnTimezone = c;
     
    825825                }
    826826                break;
    827             case ':' : 
    828             case '.' : 
     827            case ':' :
     828            case '.' :
    829829                if (state == 2) {
    830830                    state = 3;
     
    833833                }
    834834                break;
    835             case '0' : case '1' : case '2' : case '3' : case '4' : 
     835            case '0' : case '1' : case '2' : case '3' : case '4' :
    836836            case '5' : case '6' : case '7' : case '8' : case '9' :
    837837                switch(state) {
    838                 case 1 : 
    839                 case 2 : 
     838                case 1 :
     839                case 2 :
    840840                    state = 2;
    841841                    hTimezone.append(c);
    842842                    break;
    843                 case 3 : 
     843                case 3 :
    844844                    mTimezone.append(c);
    845845                    break;
    846                 default : 
     846                default :
    847847                    return null;
    848848                }
    849849                break;
    850             default : 
     850            default :
    851851                return null;
    852852            }
    853853        }
    854        
     854
    855855        int h = 0;
    856856        int m = 0;
    857857        try {
    858                 h = Integer.parseInt(hTimezone.toString());
    859                 if (mTimezone.length() > 0) {
    860                         m = Integer.parseInt(mTimezone.toString());
    861                 }
     858            h = Integer.parseInt(hTimezone.toString());
     859            if (mTimezone.length() > 0) {
     860                m = Integer.parseInt(mTimezone.toString());
     861            }
    862862        } catch (NumberFormatException nfe) {
    863                 // Invalid timezone
    864                 return null;
    865         }
    866        
     863            // Invalid timezone
     864            return null;
     865        }
     866
    867867        if (h > 12 || m > 59 ) {
    868868            return null;
    869869        } else {
    870                 return new Float((h + m / 60.0) * (sgnTimezone == '-' ? -1 : 1));
    871         }
    872     }
    873 
    874     /** Return the distance in meters between 2 points 
     870            return new Float((h + m / 60.0) * (sgnTimezone == '-' ? -1 : 1));
     871        }
     872    }
     873
     874    /** Return the distance in meters between 2 points
    875875     * Formula and earth radius from : http://en.wikipedia.org/wiki/Great-circle_distance */
    876876    public double getDistance(WayPoint p1, WayPoint p2) {
    877877        double p1Lat = p1.latlon.lat() * Math.PI / 180;
    878         double p1Lon = p1.latlon.lon() * Math.PI / 180; 
     878        double p1Lon = p1.latlon.lon() * Math.PI / 180;
    879879        double p2Lat = p2.latlon.lat() * Math.PI / 180;
    880880        double p2Lon = p2.latlon.lon() * Math.PI / 180;
    881         double ret = Math.atan2(Math.sqrt(Math.pow(Math.cos(p2Lat) * Math.sin(p2Lon - p1Lon), 2) 
     881        double ret = Math.atan2(Math.sqrt(Math.pow(Math.cos(p2Lat) * Math.sin(p2Lon - p1Lon), 2)
    882882                                          + Math.pow(Math.cos(p1Lat) * Math.sin(p2Lat)
    883                                                      - Math.sin(p1Lat) * Math.cos(p2Lat) * Math.cos(p2Lon - p1Lon), 2)), 
    884                                 Math.sin(p1Lat) * Math.sin(p2Lat) 
     883                                                     - Math.sin(p1Lat) * Math.cos(p2Lat) * Math.cos(p2Lon - p1Lon), 2)),
     884                                Math.sin(p1Lat) * Math.sin(p2Lat)
    885885                                + Math.cos(p1Lat) * Math.cos(p2Lat) * Math.cos(p2Lon - p1Lon))
    886886                     * 6372795; // Earth radius, in meters
  • applications/editors/josm/plugins/agpifoj/src/org/openstreetmap/josm/plugins/agpifoj/ImageDisplay.java

    r10258 r12778  
    2525
    2626public class ImageDisplay extends JComponent {
    27    
     27
    2828    /** The file that is currently displayed */
    2929    private File file = null;
    30    
     30
    3131    /** The image currently displayed */
    3232    private Image image = null;
    33    
     33
    3434    /** The image currently displayed */
    3535    private boolean errorLoading = false;
    36    
    37     /** The rectangle (in image coordinates) of the image that is visible. This rectangle is calculated 
     36
     37    /** The rectangle (in image coordinates) of the image that is visible. This rectangle is calculated
    3838     * each time the zoom is modified */
    3939    private Rectangle visibleRect = null;
    40    
     40
    4141    /** When a selection is done, the rectangle of the selection (in image coordinates) */
    4242    private Rectangle selectedRect = null;
     
    4646
    4747    private String osdText = null;
    48    
     48
    4949    /** The thread that reads the images. */
    5050    private class LoadImageRunnable implements Runnable {
    5151
    5252        File file = null;
    53        
     53
    5454        public LoadImageRunnable(File file) {
    5555            this.file = file;
    5656        }
    57        
     57
    5858        public void run() {
    5959            Image img = Toolkit.getDefaultToolkit().createImage(file.getPath());
    6060            tracker.addImage(img, 1);
    61            
     61
    6262            // Wait for the end of loading
    6363            while (! tracker.checkID(1, true)) {
    6464                if (this.file != ImageDisplay.this.file) {
    65                     // The file has changed 
     65                    // The file has changed
    6666                    tracker.removeImage(img);
    6767                    return;
     
    7777                error = true;
    7878            }
    79            
     79
    8080            synchronized(ImageDisplay.this) {
    8181                if (this.file != ImageDisplay.this.file) {
    82                     // The file has changed 
     82                    // The file has changed
    8383                    tracker.removeImage(img);
    8484                    return;
     
    9393        }
    9494    }
    95    
     95
    9696    private class ImgDisplayMouseListener implements MouseListener, MouseWheelListener, MouseMotionListener {
    9797
    9898        boolean mouseIsDragging = false;
    9999        Point mousePointInImg = null;
    100        
    101         /** Zoom in and out, trying to preserve the point of the image that was under the mouse cursor 
    102          * at the same place */ 
     100
     101        /** Zoom in and out, trying to preserve the point of the image that was under the mouse cursor
     102         * at the same place */
    103103        public void mouseWheelMoved(MouseWheelEvent e) {
    104104            File file;
    105105            Image image;
    106106            Rectangle visibleRect;
    107            
     107
    108108            synchronized (ImageDisplay.this) {
    109109                file = ImageDisplay.this.file;
     
    111111                visibleRect = ImageDisplay.this.visibleRect;
    112112            }
    113            
     113
    114114            mouseIsDragging = false;
    115115            selectedRect = null;
    116            
     116
    117117            if (image == null) {
    118118                return;
    119119            }
    120120
    121             // Calculate the mouse cursor position in image coordinates, so that we can center the zoom 
    122             // on that mouse position. 
     121            // Calculate the mouse cursor position in image coordinates, so that we can center the zoom
     122            // on that mouse position.
    123123            if (e.getClickCount() == 1 || mousePointInImg == null) {
    124124                mousePointInImg = comp2imgCoord(visibleRect, e.getX(), e.getY());
    125125            }
    126            
     126
    127127            // Applicate the zoom to the visible rectangle in image coordinates
    128128            if (e.getWheelRotation() > 0) {
     
    133133                visibleRect.height = visibleRect.height * 2 / 3;
    134134            }
    135            
     135
    136136            // Check that the zoom doesn't exceed 2:1
    137137            if (visibleRect.width < getSize().width / 2) {
     
    141141                visibleRect.height = getSize().height / 2;
    142142            }
    143            
     143
    144144            // Set the same ratio for the visible rectangle and the display area
    145145            int hFact = visibleRect.height * getSize().width;
     
    150150                visibleRect.height = wFact / getSize().width;
    151151            }
    152            
     152
    153153            // The size of the visible rectangle is limited by the image size.
    154154            checkVisibleRectSize(image, visibleRect);
    155            
     155
    156156            // Set the position of the visible rectangle, so that the mouse cursor doesn't move on the image.
    157157            Rectangle drawRect = calculateDrawImageRectangle(visibleRect);
    158158            visibleRect.x = mousePointInImg.x + ((drawRect.x - e.getX()) * visibleRect.width) / drawRect.width;
    159159            visibleRect.y = mousePointInImg.y + ((drawRect.y - e.getY()) * visibleRect.height) / drawRect.height;
    160            
     160
    161161            // The position is also limited by the image size
    162162            checkVisibleRectPos(image, visibleRect);
    163            
     163
    164164            synchronized(ImageDisplay.this) {
    165165                if (ImageDisplay.this.file == file) {
     
    176176            Image image;
    177177            Rectangle visibleRect;
    178            
     178
    179179            synchronized (ImageDisplay.this) {
    180180                file = ImageDisplay.this.file;
     
    190190                return;
    191191            }
    192            
     192
    193193            // Calculate the translation to set the clicked point the center of the view.
    194194            Point click = comp2imgCoord(visibleRect, e.getX(), e.getY());
    195195            Point center = getCenterImgCoord(visibleRect);
    196            
     196
    197197            visibleRect.x += click.x - center.x;
    198198            visibleRect.y += click.y - center.y;
    199            
     199
    200200            checkVisibleRectPos(image, visibleRect);
    201            
     201
    202202            synchronized(ImageDisplay.this) {
    203203                if (ImageDisplay.this.file == file) {
     
    208208        }
    209209
    210         /** Initialize the dragging, either with button 1 (simple dragging) or button 3 (selection of 
     210        /** Initialize the dragging, either with button 1 (simple dragging) or button 3 (selection of
    211211         * a picture part) */
    212212        public void mousePressed(MouseEvent e) {
     
    216216                return;
    217217            }
    218            
     218
    219219            File file;
    220220            Image image;
    221221            Rectangle visibleRect;
    222            
     222
    223223            synchronized (ImageDisplay.this) {
    224224                file = ImageDisplay.this.file;
     
    251251                return;
    252252            }
    253            
     253
    254254            File file;
    255255            Image image;
    256256            Rectangle visibleRect;
    257            
     257
    258258            synchronized (ImageDisplay.this) {
    259259                file = ImageDisplay.this.file;
     
    279279                }
    280280                ImageDisplay.this.repaint();
    281                
     281
    282282            } else if (selectedRect != null) {
    283283                Point p = comp2imgCoord(visibleRect, e.getX(), e.getY());
     
    300300                return;
    301301            }
    302            
     302
    303303            File file;
    304304            Image image;
    305305            Rectangle visibleRect;
    306            
     306
    307307            synchronized (ImageDisplay.this) {
    308308                file = ImageDisplay.this.file;
     
    319319            if (mouseIsDragging) {
    320320                mouseIsDragging = false;
    321                
     321
    322322            } else if (selectedRect != null) {
    323323                int oldWidth = selectedRect.width;
     
    331331                    selectedRect.height = getSize().height / 2;
    332332                }
    333                
     333
    334334                // Set the same ratio for the visible rectangle and the display area
    335335                int hFact = selectedRect.height * getSize().width;
     
    340340                    selectedRect.height = wFact / getSize().width;
    341341                }
    342                
     342
    343343                // Keep the center of the selection
    344344                if (selectedRect.width != oldWidth) {
     
    348348                    selectedRect.y -= (selectedRect.height - oldHeight) / 2;
    349349                }
    350                
     350
    351351                checkVisibleRectSize(image, selectedRect);
    352352                checkVisibleRectPos(image, selectedRect);
    353                
     353
    354354                synchronized (ImageDisplay.this) {
    355355                    if (file == ImageDisplay.this.file) {
    356356                        ImageDisplay.this.visibleRect = selectedRect;
    357357                    }
    358                 }               
     358                }
    359359                selectedRect = null;
    360360                ImageDisplay.this.repaint();
     
    370370        public void mouseMoved(MouseEvent e) {
    371371        }
    372        
     372
    373373        private void checkPointInVisibleRect(Point p, Rectangle visibleRect) {
    374374            if (p.x < visibleRect.x) {
     
    386386        }
    387387    }
    388    
     388
    389389    public ImageDisplay() {
    390390        ImgDisplayMouseListener mouseListener = new ImgDisplayMouseListener();
     
    393393        addMouseMotionListener(mouseListener);
    394394    }
    395    
     395
    396396    public void setImage(File file) {
    397397        synchronized(this) {
     
    410410        this.osdText = text;
    411411    }
    412    
     412
    413413    public void paintComponent(Graphics g) {
    414414        Image image;
     
    416416        Rectangle visibleRect;
    417417        boolean errorLoading;
    418        
     418
    419419        synchronized(this) {
    420420            image = this.image;
     
    423423            errorLoading = this.errorLoading;
    424424        }
    425        
     425
    426426        if (file == null) {
    427427            g.setColor(Color.black);
     
    447447        } else {
    448448            Rectangle target = calculateDrawImageRectangle(visibleRect);
    449             g.drawImage(image, 
    450                         target.x, target.y, target.x + target.width, target.y + target.height, 
    451                         visibleRect.x, visibleRect.y, visibleRect.x + visibleRect.width, visibleRect.y + visibleRect.height, 
     449            g.drawImage(image,
     450                        target.x, target.y, target.x + target.width, target.y + target.height,
     451                        visibleRect.x, visibleRect.y, visibleRect.x + visibleRect.width, visibleRect.y + visibleRect.height,
    452452                        null);
    453453            if (selectedRect != null) {
    454454                Point topLeft = img2compCoord(visibleRect, selectedRect.x, selectedRect.y);
    455                 Point bottomRight = img2compCoord(visibleRect, 
    456                                                   selectedRect.x + selectedRect.width, 
     455                Point bottomRight = img2compCoord(visibleRect,
     456                                                  selectedRect.x + selectedRect.width,
    457457                                                  selectedRect.y + selectedRect.height);
    458458                g.setColor(new Color(128, 128, 128, 180));
     
    502502        }
    503503    }
    504    
     504
    505505    private final Point img2compCoord(Rectangle visibleRect, int xImg, int yImg) {
    506506        Rectangle drawRect = calculateDrawImageRectangle(visibleRect);
     
    524524        int x, y, w, h;
    525525        x = 0;
    526         y = 0; 
     526        y = 0;
    527527        w = size.width;
    528528        h = size.height;
    529        
     529
    530530        int wFact = w * visibleRect.height;
    531531        int hFact = h * visibleRect.width;
     
    546546        Image image;
    547547        Rectangle visibleRect;
    548        
     548
    549549        synchronized (this) {
    550550            file = ImageDisplay.this.file;
     
    560560            // The display is not at best fit. => Zoom to best fit
    561561            visibleRect = new Rectangle(0, 0, image.getWidth(null), image.getHeight(null));
    562        
     562
    563563        } else {
    564564            // The display is at best fit => zoom to 1:1
    565565            Point center = getCenterImgCoord(visibleRect);
    566             visibleRect = new Rectangle(center.x - getWidth() / 2, center.y - getHeight() / 2, 
     566            visibleRect = new Rectangle(center.x - getWidth() / 2, center.y - getHeight() / 2,
    567567                                        getWidth(), getHeight());
    568568            checkVisibleRectPos(image, visibleRect);
    569569        }
    570        
     570
    571571        synchronized(this) {
    572572            if (file == this.file) {
Note: See TracChangeset for help on using the changeset viewer.