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}