001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.plugins.streetside.actions; 003 004import java.awt.event.ActionEvent; 005import java.awt.event.KeyEvent; 006 007import org.openstreetmap.josm.actions.JosmAction; 008import org.openstreetmap.josm.data.preferences.AbstractProperty.ValueChangeEvent; 009import org.openstreetmap.josm.data.preferences.AbstractProperty.ValueChangeListener; 010import org.openstreetmap.josm.plugins.streetside.StreetsideLayer; 011import org.openstreetmap.josm.plugins.streetside.StreetsidePlugin; 012import org.openstreetmap.josm.plugins.streetside.io.download.StreetsideDownloader; 013import org.openstreetmap.josm.plugins.streetside.utils.StreetsideProperties; 014import org.openstreetmap.josm.tools.I18n; 015import org.openstreetmap.josm.tools.ImageProvider; 016import org.openstreetmap.josm.tools.ImageProvider.ImageSizes; 017import org.openstreetmap.josm.tools.Shortcut; 018 019/** 020 * If in "download images in visible area" mode, downloads all the images in the current view. 021 * 022 * @author nokutu 023 * 024 */ 025public class StreetsideDownloadViewAction extends JosmAction implements ValueChangeListener<String> { 026 027 private static final long serialVersionUID = 6738276777802831669L; 028 029 private static final String DESCRIPTION = I18n.marktr("Download Streetside images in current view"); 030 031 /** 032 * Main constructor. 033 */ 034 public StreetsideDownloadViewAction() { 035 super( 036 I18n.tr(DESCRIPTION), 037 new ImageProvider(StreetsidePlugin.LOGO).setSize(ImageSizes.DEFAULT), 038 I18n.tr(DESCRIPTION), 039 Shortcut.registerShortcut("Streetside area", I18n.tr(DESCRIPTION), KeyEvent.VK_PERIOD, Shortcut.SHIFT), 040 false, 041 "streetsideArea", 042 true 043 ); 044 StreetsideProperties.DOWNLOAD_MODE.addListener(this); 045 initEnabledState(); 046 } 047 048 @Override 049 public void actionPerformed(ActionEvent arg0) { 050 StreetsideDownloader.downloadVisibleArea(); 051 } 052 053 @Override 054 protected boolean listenToSelectionChange() { 055 return false; 056 } 057 058 /** 059 * Enabled when the Streetside layer is instantiated and download mode is either "osm area" or "manual". 060 */ 061 @Override 062 protected void updateEnabledState() { 063 super.updateEnabledState(); 064 setEnabled( 065 StreetsideLayer.hasInstance() && ( 066 StreetsideDownloader.getMode() == StreetsideDownloader.DOWNLOAD_MODE.OSM_AREA 067 || StreetsideDownloader.getMode() == StreetsideDownloader.DOWNLOAD_MODE.MANUAL_ONLY 068 ) 069 ); 070 } 071 072 @Override 073 public void valueChanged(ValueChangeEvent<? extends String> e) { 074 updateEnabledState(); 075 } 076}