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}