// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.gui.dialogs.changeset;
import static org.openstreetmap.josm.tools.I18n.tr;
import java.awt.Component;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import org.openstreetmap.josm.actions.downloadtasks.ChangesetContentDownloadTask;
import org.openstreetmap.josm.tools.CheckParameterUtil;
import org.openstreetmap.josm.tools.ImageProvider;
/**
* Downloads/Updates the content of the changeset.
* @since 9493
*/
public class DownloadChangesetContentAction extends AbstractAction {
private final transient ChangesetAware component;
/**
* Constructs a new {@code DownloadChangesetContentAction}.
* @param component changeset-aware component
*/
public DownloadChangesetContentAction(ChangesetAware component) {
CheckParameterUtil.ensureParameterNotNull(component, "component");
putValue(NAME, tr("Download content"));
new ImageProvider("dialogs/changeset", "downloadchangesetcontent").getResource().attachImageIcon(this);
putValue(SHORT_DESCRIPTION, tr("Download the changeset content from the OSM server"));
this.component = component;
}
@Override
public void actionPerformed(ActionEvent evt) {
if (component.getCurrentChangeset() != null) {
ChangesetCacheManager.getInstance().runDownloadTask(new ChangesetContentDownloadTask(
(Component) component, component.getCurrentChangeset().getId()));
}
}
/**
* Init properties.
*/
public void initProperties() {
if (component.getCurrentChangeset() == null) {
setEnabled(false);
return;
} else {
setEnabled(true);
}
if (component.getCurrentChangeset().getContent() == null) {
putValue(NAME, tr("Download content"));
new ImageProvider("dialogs/changeset", "downloadchangesetcontent").getResource().attachImageIcon(this);
putValue(SHORT_DESCRIPTION, tr("Download the changeset content from the OSM server"));
} else {
putValue(NAME, tr("Update content"));
new ImageProvider("dialogs/changeset", "updatechangesetcontent").getResource().attachImageIcon(this);
putValue(SHORT_DESCRIPTION, tr("Update the changeset content from the OSM server"));
}
}
}