Changeset 316 in josm


Ignore:
Timestamp:
2007-09-03T21:06:29+02:00 (17 years ago)
Author:
framm
Message:
  • Add "prev", "next", and "recenter" buttons to the GeoImage viewer. Patch by Robert Hart <bathterror@…>.
Location:
src/org/openstreetmap/josm
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/org/openstreetmap/josm/data/coor/LatLon.java

    r298 r316  
    44import org.openstreetmap.josm.data.Bounds;
    55import org.openstreetmap.josm.data.projection.Projection;
     6import java.text.NumberFormat;
    67
    78/**
     
    5051                return lat() >= b.min.lat() && lat() <= b.max.lat() && lon() > b.min.lon() && lon() < b.max.lon();
    5152        }
     53
     54        /**
     55         * Returns this lat/lon pair in human-readable format.
     56         *
     57         * @return String in the format "lat=1.23456°, lon=2.34567°"
     58         */
     59        public String toDisplayString() {
     60                NumberFormat nf = NumberFormat.getInstance();
     61                nf.setMaximumFractionDigits(5);
     62                return "lat=" + nf.format(lat()) + "°, lon=" + nf.format(lon()) + "°";
     63        }
    5264       
    53     @Override public String toString() {
    54         return "LatLon[lat="+lat()+",lon="+lon()+"]";
     65        @Override public String toString() {
     66                return "LatLon[lat="+lat()+",lon="+lon()+"]";
    5567    }
    5668}
  • src/org/openstreetmap/josm/gui/layer/GeoImageLayer.java

    r304 r316  
    4444import javax.swing.JTextField;
    4545import javax.swing.JToggleButton;
     46import javax.swing.JButton;
    4647import javax.swing.JViewport;
    4748import javax.swing.border.BevelBorder;
     
    161162        private static final SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
    162163        private MouseAdapter mouseAdapter;
    163 
     164    private int currentImage;
     165   
    164166        public static final class GpsTimeIncorrect extends Exception {
    165167                public GpsTimeIncorrect(String message, Throwable cause) {
     
    215217                                        Rectangle r = new Rectangle(p.x-e.icon.getIconWidth()/2, p.y-e.icon.getIconHeight()/2, e.icon.getIconWidth(), e.icon.getIconHeight());
    216218                                        if (r.contains(ev.getPoint())) {
    217                                                 showImage(e);
     219                                            //                                          showImage(e);
     220                                            showImage(i-1);
    218221                                                break;
    219222                                        }
     
    232235        }
    233236
    234         private void showImage(final ImageEntry e) {
     237    //  private void showImage(final ImageEntry e) {
     238        private void showImage(int i) {
     239            currentImage = i;
    235240                final JPanel p = new JPanel(new BorderLayout());
     241                final ImageEntry e = data.get(currentImage);
    236242                final JScrollPane scroll = new JScrollPane(new JLabel(loadScaledImage(e.image, 580)));
    237243                final JViewport vp = scroll.getViewport();
     
    239245
    240246                final JToggleButton scale = new JToggleButton(ImageProvider.get("misc", "rectangle"));
     247                final JButton next = new JButton(">>");
     248                final JButton prev = new JButton("<<");
     249                final JButton cent = new JButton("Centre");
     250
    241251                JPanel p2 = new JPanel();
     252                p2.add(prev);
    242253                p2.add(scale);
     254                p2.add(cent);
     255                p2.add(next);
     256                prev.setEnabled(currentImage>0?true:false);
     257                next.setEnabled(currentImage<data.size()-1?true:false);
    243258                p.add(p2, BorderLayout.SOUTH);
     259                final JOptionPane pane = new JOptionPane(p, JOptionPane.PLAIN_MESSAGE);
     260                //final JDialog dlg = pane.createDialog(Main.parent, e.image+" ("+e.coor.lat()+","+e.coor.lon()+")");
     261                final JDialog dlg = pane.createDialog(Main.parent, e.image+" ("+e.coor.toDisplayString()+")");
    244262                scale.addActionListener(new ActionListener(){
    245263                        public void actionPerformed(ActionEvent ev) {
     
    253271                });
    254272                scale.setSelected(true);
    255                 JOptionPane pane = new JOptionPane(p, JOptionPane.PLAIN_MESSAGE);
    256                 JDialog dlg = pane.createDialog(Main.parent, e.image+" ("+e.coor.lat()+","+e.coor.lon()+")");
     273                prev.addActionListener(new ActionListener(){
     274                        public void actionPerformed(ActionEvent ev) {
     275                                p.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
     276                                if(currentImage>0) currentImage--;
     277                                if(currentImage==0) prev.setEnabled(false);
     278                                next.setEnabled(true);
     279                                final ImageEntry e = data.get(currentImage);
     280                                if (scale.getModel().isSelected())
     281                                        ((JLabel)vp.getView()).setIcon(loadScaledImage(e.image, Math.max(vp.getWidth(), vp.getHeight())));
     282                                else
     283                                        ((JLabel)vp.getView()).setIcon(new ImageIcon(e.image.getPath()));
     284                                dlg.setTitle(e.image+" ("+e.coor.toDisplayString()+")");
     285                                //dlg.setTitle(e.image+" ("+e.coor.lat()+","+e.coor.lon()+")");
     286                                p.setCursor(Cursor.getDefaultCursor());
     287                        }
     288                });
     289                next.addActionListener(new ActionListener(){
     290                        public void actionPerformed(ActionEvent ev) {
     291                                p.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
     292                                if(currentImage<data.size()-1) currentImage++;
     293                                if(currentImage==data.size()-1) next.setEnabled(false);
     294                                prev.setEnabled(true);
     295                                final ImageEntry e = data.get(currentImage);
     296                                if (scale.getModel().isSelected())
     297                                        ((JLabel)vp.getView()).setIcon(loadScaledImage(e.image, Math.max(vp.getWidth(), vp.getHeight())));
     298                                else
     299                                        ((JLabel)vp.getView()).setIcon(new ImageIcon(e.image.getPath()));
     300                                dlg.setTitle(e.image+" (" + e.coor.toDisplayString() + ")");
     301                                p.setCursor(Cursor.getDefaultCursor());
     302                        }
     303                });
     304                cent.addActionListener(new ActionListener(){
     305                        public void actionPerformed(ActionEvent ev) {
     306                            final ImageEntry e = data.get(currentImage);
     307                            //Main.map.mapView.repaint();
     308                            Main.map.mapView.zoomTo(e.pos, Main.map.mapView.getScale());
     309                        }
     310                    });
    257311                dlg.setModal(false);
    258312                dlg.setVisible(true);
Note: See TracChangeset for help on using the changeset viewer.