Ignore:
Timestamp:
2015-06-16T13:36:43+02:00 (9 years ago)
Author:
nokutu
Message:

Icon hovering implemented

Location:
applications/editors/josm/plugins/mapillary
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryData.java

    r31266 r31270  
    2424        private final List<MapillaryAbstractImage> images;
    2525        private MapillaryAbstractImage selectedImage;
     26        private MapillaryAbstractImage hoveredImage;
    2627        private final List<MapillaryAbstractImage> multiSelectedImages;
    2728
     
    8687                        addWithoutUpdate(image);
    8788                }
     89        }
     90
     91        /**
     92         * Sets the image under the mouse cursor.
     93         *
     94         * @param image
     95         */
     96        public void setHoveredImage(MapillaryAbstractImage image) {
     97                hoveredImage = image;
     98        }
     99
     100        /**
     101         * Returns the image under the mouse cursor.
     102         *
     103         * @return
     104         */
     105        public MapillaryAbstractImage getHoveredImage() {
     106                return hoveredImage;
    88107        }
    89108
     
    212231        }
    213232
    214         private void fireSelectedImageChanged(MapillaryAbstractImage oldImage, MapillaryAbstractImage newImage) {
     233        private void fireSelectedImageChanged(MapillaryAbstractImage oldImage,
     234                        MapillaryAbstractImage newImage) {
    215235                if (listeners.isEmpty())
    216236                        return;
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryImage.java

    r31267 r31270  
    1616        /** Unique identifier of the object */
    1717        private final String key;
    18         /** Sequence of pictures containing this */
     18        /** Sequence of pictures containing this object*/
    1919        private MapillarySequence sequence;
    2020
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryLayer.java

    r31266 r31270  
    229229                                        else
    230230                                                icon = MapillaryPlugin.MAP_ICON_SELECTED;
    231                                         Image imagetemp = icon.getImage();
    232                                         BufferedImage bi = (BufferedImage) imagetemp;
    233                                         int width = icon.getIconWidth();
    234                                         int height = icon.getIconHeight();
    235 
    236                                         // Rotate the image
    237                                         double rotationRequired = Math.toRadians(image.getCa());
    238                                         double locationX = width / 2;
    239                                         double locationY = height / 2;
    240                                         AffineTransform tx = AffineTransform.getRotateInstance(
    241                                                         rotationRequired, locationX, locationY);
    242                                         AffineTransformOp op = new AffineTransformOp(tx,
    243                                                         AffineTransformOp.TYPE_BILINEAR);
    244 
    245                                         g.drawImage(op.filter(bi, null), p.x - (width / 2), p.y
    246                                                         - (height / 2), Main.map.mapView);
     231                                        draw(g, image, icon, p);
    247232                                        if (!image.getSignals().isEmpty()) {
    248233                                                g.drawImage(MapillaryPlugin.MAP_SIGNAL.getImage(), p.x
    249                                                                 + width / 2, p.y - height / 2,
     234                                                                + icon.getIconWidth() / 2,
     235                                                                p.y - icon.getIconHeight() / 2,
    250236                                                                Main.map.mapView);
    251237                                        }
     
    257243                                        else
    258244                                                icon = MapillaryPlugin.MAP_ICON_SELECTED;
    259                                         Image imagetemp = icon.getImage();
    260                                         BufferedImage bi = (BufferedImage) imagetemp;
    261                                         int width = icon.getIconWidth();
    262                                         int height = icon.getIconHeight();
    263 
    264                                         // Rotate the image
    265                                         double rotationRequired = Math.toRadians(image.getCa());
    266                                         double locationX = width / 2;
    267                                         double locationY = height / 2;
    268                                         AffineTransform tx = AffineTransform.getRotateInstance(
    269                                                         rotationRequired, locationX, locationY);
    270                                         AffineTransformOp op = new AffineTransformOp(tx,
    271                                                         AffineTransformOp.TYPE_BILINEAR);
    272 
    273                                         g.drawImage(op.filter(bi, null), p.x - (width / 2), p.y
    274                                                         - (height / 2), Main.map.mapView);
     245                                        draw(g, image, icon, p);
    275246                                }
    276247                        }
    277248                }
     249        }
     250
     251        /**
     252         * Draws the given icon of an image. Also checks if the mouse is over the
     253         * image.
     254         *
     255         * @param g
     256         * @param image
     257         * @param icon
     258         * @param p
     259         */
     260        private void draw(Graphics2D g, MapillaryAbstractImage image,
     261                        ImageIcon icon, Point p) {
     262                draw(g, icon, p, image.getCa());
     263                if (MapillaryData.getInstance().getHoveredImage() == image) {
     264                        draw(g, MapillaryPlugin.MAP_ICON_HOVER, p, image.getCa());
     265                }
     266        }
     267
     268        private void draw(Graphics2D g, ImageIcon icon, Point p, double ca) {
     269                Image imagetemp = icon.getImage();
     270                BufferedImage bi = (BufferedImage) imagetemp;
     271                int width = icon.getIconWidth();
     272                int height = icon.getIconHeight();
     273
     274                // Rotate the image
     275                double rotationRequired = Math.toRadians(ca);
     276                double locationX = width / 2;
     277                double locationY = height / 2;
     278                AffineTransform tx = AffineTransform.getRotateInstance(
     279                                rotationRequired, locationX, locationY);
     280                AffineTransformOp op = new AffineTransformOp(tx,
     281                                AffineTransformOp.TYPE_BILINEAR);
     282
     283                g.drawImage(op.filter(bi, null), p.x - (width / 2), p.y - (height / 2),
     284                                Main.map.mapView);
    278285        }
    279286
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryMouseAdapter.java

    r31264 r31270  
    1111import org.openstreetmap.josm.plugins.mapillary.commands.CommandTurnImage;
    1212import org.openstreetmap.josm.plugins.mapillary.commands.MapillaryRecord;
     13import org.openstreetmap.josm.plugins.mapillary.gui.MapillaryToggleDialog;
    1314
    1415/**
     
    8485                                                                                                .subList(j, i + 1)));
    8586                                }
    86                         // click
     87                                // click
    8788                        } else
    8889                                mapillaryData.setSelectedImage(closest);
    89                 // If you select an imported image
     90                        // If you select an imported image
    9091                } else if (closestTemp instanceof MapillaryImportedImage) {
    9192                        MapillaryImportedImage closest = (MapillaryImportedImage) closestTemp;
     
    173174        }
    174175
     176        /**
     177         * Checks if the mouse is over pictures.
     178         */
     179        @Override
     180        public void mouseMoved(MouseEvent e) {
     181                MapillaryAbstractImage closestTemp = getClosest(e.getPoint());
     182
     183                if (Main.map.mapView.getActiveLayer() instanceof MapillaryLayer
     184                                && MapillaryData.getInstance().getHoveredImage() != closestTemp
     185                                && closestTemp != null) {
     186                        MapillaryData.getInstance().setHoveredImage(closestTemp);
     187                        MapillaryToggleDialog.getInstance().setImage(closestTemp);
     188                        MapillaryData.getInstance().dataUpdated();
     189                        MapillaryToggleDialog.getInstance().updateImage();
     190                } else if (MapillaryData.getInstance().getHoveredImage() != closestTemp
     191                                && closestTemp == null) {
     192                        MapillaryData.getInstance().setHoveredImage(null);
     193                        MapillaryToggleDialog.getInstance().setImage(
     194                                        MapillaryData.getInstance().getSelectedImage());
     195                        MapillaryData.getInstance().dataUpdated();
     196                        MapillaryToggleDialog.getInstance().updateImage();
     197                }
     198        }
    175199}
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryPlugin.java

    r31268 r31270  
    4343        public static final ImageIcon MAP_SIGNAL = new ImageProvider("signal.png")
    4444                        .get();
     45        public static final ImageIcon MAP_ICON_HOVER = new ImageProvider("hover.png").get();
    4546        public static final int ICON_SIZE = 24;
    4647
Note: See TracChangeset for help on using the changeset viewer.