001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.gui.dialogs.changeset; 003 004import static org.openstreetmap.josm.tools.I18n.tr; 005 006import java.awt.Component; 007import java.awt.event.ActionEvent; 008 009import javax.swing.AbstractAction; 010 011import org.openstreetmap.josm.actions.downloadtasks.ChangesetContentDownloadTask; 012import org.openstreetmap.josm.tools.CheckParameterUtil; 013import org.openstreetmap.josm.tools.ImageProvider; 014 015/** 016 * Downloads/Updates the content of the changeset. 017 * @since 9493 018 */ 019public class DownloadChangesetContentAction extends AbstractAction { 020 private final transient ChangesetAware component; 021 022 /** 023 * Constructs a new {@code DownloadChangesetContentAction}. 024 * @param component changeset-aware component 025 */ 026 public DownloadChangesetContentAction(ChangesetAware component) { 027 CheckParameterUtil.ensureParameterNotNull(component, "component"); 028 putValue(NAME, tr("Download content")); 029 new ImageProvider("dialogs/changeset", "downloadchangesetcontent").getResource().attachImageIcon(this); 030 putValue(SHORT_DESCRIPTION, tr("Download the changeset content from the OSM server")); 031 this.component = component; 032 } 033 034 @Override 035 public void actionPerformed(ActionEvent evt) { 036 if (component.getCurrentChangeset() != null) { 037 ChangesetCacheManager.getInstance().runDownloadTask(new ChangesetContentDownloadTask( 038 (Component) component, component.getCurrentChangeset().getId())); 039 } 040 } 041 042 /** 043 * Init properties. 044 */ 045 public void initProperties() { 046 if (component.getCurrentChangeset() == null) { 047 setEnabled(false); 048 return; 049 } else { 050 setEnabled(true); 051 } 052 if (component.getCurrentChangeset().getContent() == null) { 053 putValue(NAME, tr("Download content")); 054 new ImageProvider("dialogs/changeset", "downloadchangesetcontent").getResource().attachImageIcon(this); 055 putValue(SHORT_DESCRIPTION, tr("Download the changeset content from the OSM server")); 056 } else { 057 putValue(NAME, tr("Update content")); 058 new ImageProvider("dialogs/changeset", "updatechangesetcontent").getResource().attachImageIcon(this); 059 putValue(SHORT_DESCRIPTION, tr("Update the changeset content from the OSM server")); 060 } 061 } 062}