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 }