Changeset 31273 in osm for applications/editors/josm


Ignore:
Timestamp:
2015-06-17T14:04:39+02:00 (9 years ago)
Author:
nokutu
Message:

Several bugs fixed and now it is possible to select images from the OSM layer

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

Legend:

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

    r31270 r31273  
    2020import org.openstreetmap.josm.data.coor.LatLon;
    2121import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
     22import org.openstreetmap.josm.data.osm.visitor.paint.PaintColors;
    2223import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
    2324import org.openstreetmap.josm.gui.dialogs.LayerListPopup;
     
    6768
    6869        private MouseAdapter mouseAdapter;
     70       
     71    int highlightPointRadius = Main.pref.getInteger("mappaint.highlight.radius", 7);
     72    private int highlightStep = Main.pref.getInteger("mappaint.highlight.step", 4);
    6973
    7074        public MapillaryLayer() {
     
    248252                }
    249253        }
     254       
     255        /**
     256         * Draws the highlight of the icon.
     257         * @param g
     258         * @param p
     259         * @param size
     260         */
     261    private void drawPointHighlight(Graphics2D g, Point p, int size) {
     262        Color oldColor = g.getColor();
     263        Color highlightColor = PaintColors.HIGHLIGHT.get();
     264        Color highlightColorTransparent = new Color(highlightColor.getRed(), highlightColor.getGreen(), highlightColor.getBlue(), 100);
     265        g.setColor(highlightColorTransparent);
     266        int s = size + highlightPointRadius;
     267        while(s >= size) {
     268            int r = (int) Math.floor(s/2d);
     269            g.fillRoundRect(p.x-r, p.y-r, s, s, r, r);
     270            s -= highlightStep;
     271        }
     272        g.setColor(oldColor);
     273    }
    250274
    251275        /**
     
    260284        private void draw(Graphics2D g, MapillaryAbstractImage image,
    261285                        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) {
    269286                Image imagetemp = icon.getImage();
    270287                BufferedImage bi = (BufferedImage) imagetemp;
     
    273290
    274291                // Rotate the image
    275                 double rotationRequired = Math.toRadians(ca);
     292                double rotationRequired = Math.toRadians(image.getCa());
    276293                double locationX = width / 2;
    277294                double locationY = height / 2;
     
    283300                g.drawImage(op.filter(bi, null), p.x - (width / 2), p.y - (height / 2),
    284301                                Main.map.mapView);
    285         }
     302                if (MapillaryData.getInstance().getHoveredImage() == image) {
     303                        drawPointHighlight(g, p, 16);
     304                }
     305        }
     306
    286307
    287308        @Override
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryMouseAdapter.java

    r31271 r31273  
    88import org.openstreetmap.josm.Main;
    99import org.openstreetmap.josm.data.coor.LatLon;
     10import org.openstreetmap.josm.data.osm.OsmPrimitive;
     11import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    1012import org.openstreetmap.josm.plugins.mapillary.commands.CommandMoveImage;
    1113import org.openstreetmap.josm.plugins.mapillary.commands.CommandTurnImage;
     
    2729        private MapillaryRecord record;
    2830
     31        private boolean nothingHighlighted;
     32
    2933        public MapillaryMouseAdapter() {
    3034                mapillaryData = MapillaryData.getInstance();
     
    3741                if (e.getButton() != MouseEvent.BUTTON1)
    3842                        return;
    39                 if (Main.map.mapView.getActiveLayer() != MapillaryLayer.getInstance())
    40                         return;
    4143                MapillaryAbstractImage closestTemp = getClosest(e.getPoint());
     44                if (Main.map.mapView.getActiveLayer() instanceof OsmDataLayer && closestTemp != null) {
     45                        this.lastClicked = this.closest;
     46                        MapillaryData.getInstance().setSelectedImage(closestTemp);
     47                        return;
     48                } else if (Main.map.mapView.getActiveLayer() != MapillaryLayer
     49                                .getInstance())
     50                        return;
    4251                if (closestTemp instanceof MapillaryImage || closestTemp == null) {
    4352                        MapillaryImage closest = (MapillaryImage) closestTemp;
     
    180189        public void mouseMoved(MouseEvent e) {
    181190                MapillaryAbstractImage closestTemp = getClosest(e.getPoint());
     191
     192                if (closestTemp != null
     193                                && Main.map.mapView.getActiveLayer() instanceof OsmDataLayer
     194                                && Main.map.mapModeSelect.getValue("active") == Boolean.TRUE) {
     195                        Main.map.mapModeSelect.exitMode();
     196                } else if (closestTemp == null
     197                                && Main.map.mapView.getActiveLayer() instanceof OsmDataLayer
     198                                && Main.map.mapModeSelect.getValue("active") == Boolean.FALSE) {
     199                        Main.map.mapModeSelect.enterMode();
     200                        nothingHighlighted = false;
     201                } else if (Main.map.mapModeSelect.getValue("active") == Boolean.FALSE
     202                                && !nothingHighlighted) {
     203                        for (OsmPrimitive primivitive : Main.map.mapView.getEditLayer().data
     204                                        .allPrimitives()) {
     205                                primivitive.setHighlighted(false);
     206                        }
     207                        nothingHighlighted = true;
     208                }
     209
    182210                // TODO check if it is possible to do this while the OSM data layer is
    183211                // selected.
    184                 if (Main.map.mapView.getActiveLayer() instanceof MapillaryLayer
    185                                 && MapillaryData.getInstance().getHoveredImage() != closestTemp
     212                if (MapillaryData.getInstance().getHoveredImage() != closestTemp
    186213                                && closestTemp != null) {
    187214                        MapillaryData.getInstance().setHoveredImage(closestTemp);
    188215                        MapillaryToggleDialog.getInstance().setImage(closestTemp);
    189                         MapillaryData.getInstance().dataUpdated();
    190216                        MapillaryToggleDialog.getInstance().updateImage();
    191217                } else if (MapillaryData.getInstance().getHoveredImage() != closestTemp
     
    194220                        MapillaryToggleDialog.getInstance().setImage(
    195221                                        MapillaryData.getInstance().getSelectedImage());
    196                         MapillaryData.getInstance().dataUpdated();
    197222                        MapillaryToggleDialog.getInstance().updateImage();
    198223                }
     224                MapillaryData.getInstance().dataUpdated();
    199225        }
    200226}
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryPlugin.java

    r31271 r31273  
    4343        public static final ImageIcon MAP_SIGNAL = new ImageProvider("signal.png")
    4444                        .get();
    45         public static final ImageIcon MAP_ICON_HOVER = new ImageProvider(
    46                         "hover.png").get();
    4745        public static final int ICON_SIZE = 24;
    4846
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/cache/MapillaryCache.java

    r31245 r31273  
    6666                return false;
    6767        }
    68        
    69         public void cancelOutstandingTasks() {
    70                 // TODO
    71         }
    7268}
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryToggleDialog.java

    r31272 r31273  
    7070
    7171        private JPanel buttonsPanel;
    72         private JPanel top;
    7372
    7473        public MapillaryImageDisplay mapillaryImageDisplay;
     
    128127                        mode = NORMAL_MODE;
    129128                }
    130                 top = new JPanel();
    131                 top.setLayout(new BorderLayout());
    132                 top.add(titleBar, BorderLayout.NORTH);
     129               
    133130                createLayout(mapillaryImageDisplay, list,
    134131                                Main.pref.getBoolean("mapillary.reverse-buttons"));
     
    204201
    205202                                mapillaryImageDisplay.hyperlink.setURL(mapillaryImage.getKey());
     203                                // Downloads the thumbnail.
    206204                                this.mapillaryImageDisplay.setImage(null);
    207205                                if (thumbnailCache != null)
     
    211209                                thumbnailCache.submit(this, false);
    212210
     211                                // Downloads the full resolution image.
    213212                                if (imageCache != null)
    214213                                        imageCache.cancelOutstandingTasks();
     
    390389        public void createLayout(Component data, List<SideButton> buttons,
    391390                        boolean reverse) {
     391                this.removeAll();
    392392                JPanel panel = new JPanel();
    393393                panel.setLayout(new BorderLayout());
     
    407407                } else
    408408                        createLayout(panel, true, buttons);
     409                this.add(titleBar, BorderLayout.NORTH);
    409410        }
    410411
Note: See TracChangeset for help on using the changeset viewer.