001    // License: GPL. For details, see LICENSE file.
002    package org.openstreetmap.josm.actions;
003    
004    import java.awt.event.ActionEvent;
005    import java.beans.PropertyChangeListener;
006    import java.util.HashMap;
007    import java.util.Map;
008    
009    import javax.swing.Action;
010    
011    public 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<String, Object>(parameters);
019        }
020    
021        public void addPropertyChangeListener(PropertyChangeListener listener) {
022            action.addPropertyChangeListener(listener);
023        }
024        public Object getValue(String key) {
025            return action.getValue(key);
026        }
027        public boolean isEnabled() {
028            return action.isEnabled();
029        }
030        public void putValue(String key, Object value) {
031            action.putValue(key, value);
032        }
033        public void removePropertyChangeListener(PropertyChangeListener listener) {
034            action.removePropertyChangeListener(listener);
035        }
036        public void setEnabled(boolean b) {
037            action.setEnabled(b);
038        }
039        public void actionPerformed(ActionEvent e) {
040            action.actionPerformed(e, parameters);
041        }
042    
043        public Map<String, Object> getParameters() {
044            return parameters;
045        }
046    
047    }