001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.actions;
003
004import java.awt.event.ActionEvent;
005import java.beans.PropertyChangeListener;
006import java.util.HashMap;
007import java.util.Map;
008
009import javax.swing.Action;
010
011public class ParameterizedActionDecorator implements Action {
012
013    private final ParameterizedAction action;
014    private final Map<String, Object> parameters;
015
016    public ParameterizedActionDecorator(ParameterizedAction action, Map<String, Object> parameters) {
017        this.action = action;
018        this.parameters = new HashMap<>(parameters);
019    }
020
021    @Override
022    public void addPropertyChangeListener(PropertyChangeListener listener) {
023        action.addPropertyChangeListener(listener);
024    }
025    @Override
026    public Object getValue(String key) {
027        return action.getValue(key);
028    }
029    @Override
030    public boolean isEnabled() {
031        return action.isEnabled();
032    }
033    @Override
034    public void putValue(String key, Object value) {
035        action.putValue(key, value);
036    }
037    @Override
038    public void removePropertyChangeListener(PropertyChangeListener listener) {
039        action.removePropertyChangeListener(listener);
040    }
041    @Override
042    public void setEnabled(boolean b) {
043        action.setEnabled(b);
044    }
045    @Override
046    public void actionPerformed(ActionEvent e) {
047        action.actionPerformed(e, parameters);
048    }
049
050    public Map<String, Object> getParameters() {
051        return parameters;
052    }
053
054}