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
026    @Override
027    public Object getValue(String key) {
028        return action.getValue(key);
029    }
030
031    @Override
032    public boolean isEnabled() {
033        return action.isEnabled();
034    }
035
036    @Override
037    public void putValue(String key, Object value) {
038        action.putValue(key, value);
039    }
040
041    @Override
042    public void removePropertyChangeListener(PropertyChangeListener listener) {
043        action.removePropertyChangeListener(listener);
044    }
045
046    @Override
047    public void setEnabled(boolean b) {
048        action.setEnabled(b);
049    }
050
051    @Override
052    public void actionPerformed(ActionEvent e) {
053        action.actionPerformed(e, parameters);
054    }
055
056    public Map<String, Object> getParameters() {
057        return parameters;
058    }
059}