001 /* 002 * LAPIS lightweight structured text processing system 003 * 004 * Copyright (C) 1998-2002 Carnegie Mellon University, 005 * Copyright (C) 2003 Massachusetts Institute of Technology. 006 * All rights reserved. 007 * 008 * This library is free software; you can redistribute it 009 * and/or modify it under the terms of the GNU General 010 * Public License as published by the Free Software 011 * Foundation, version 2. 012 * 013 * LAPIS homepage: http://graphics.lcs.mit.edu/lapis/ 014 */ 015 016 package lapisx.swing; 017 018 import java.awt.event.*; 019 import java.beans.*; 020 import javax.swing.*; 021 022 public class MaskedAction implements Action, PropertyChangeListener { 023 String masked; 024 Action action; 025 PropertyChangeSupport support = new PropertyChangeSupport (this); 026 027 public MaskedAction (String masked, Action action) { 028 this.masked = masked; 029 this.action = action; 030 action.addPropertyChangeListener (this); 031 } 032 033 public Object getValue (String name) { 034 if (name.equals (masked)) 035 return null; 036 else 037 return action.getValue (name); 038 } 039 040 public void putValue (String name, Object obj) { 041 if (!name.equals (masked)) 042 action.putValue (name, obj); 043 } 044 045 public void setEnabled (boolean f) { 046 action.setEnabled (f); 047 } 048 049 public boolean isEnabled () { 050 return action.isEnabled (); 051 } 052 053 public void propertyChange (PropertyChangeEvent event) { 054 String name = event.getPropertyName (); 055 if (!name.equals (masked)) 056 support.firePropertyChange (name, 057 event.getOldValue (), 058 event.getNewValue ()); 059 } 060 061 public void addPropertyChangeListener (PropertyChangeListener listener) { 062 support.addPropertyChangeListener (listener); 063 } 064 065 public void removePropertyChangeListener (PropertyChangeListener listener) { 066 support.removePropertyChangeListener (listener); 067 } 068 069 public void actionPerformed (ActionEvent event) { 070 action.actionPerformed (event); 071 } 072 }