1 package com.sshtools.ui.awt; 2 3 import java.beans.PropertyChangeEvent ; 4 import java.beans.PropertyChangeListener ; 5 import java.util.Hashtable ; 6 import java.util.Vector ; 7 8 11 public abstract class AbstractAction 12 implements Action { 13 14 private Hashtable attributes = new Hashtable (); 16 private boolean enabled; 17 private Vector listeners; 18 19 24 public AbstractAction(String name) { 25 super(); 26 listeners = new Vector (); 27 putValue(NAME, name); 28 enabled = true; 29 } 30 31 34 public boolean isEnabled() { 35 return enabled; 36 } 37 40 public void setEnabled(boolean enabled) { 41 if(this.enabled != enabled) { 42 boolean oldVal = this.enabled; 43 this.enabled = enabled; 44 firePropertyChanged(this, "enabled", oldVal ? Boolean.TRUE : Boolean.FALSE, enabled ? Boolean.TRUE : Boolean.FALSE); } 46 } 47 48 51 public String getName() { 52 return (String ) getValue(NAME); 53 } 54 55 58 public void putValue(String key, Object value) { 59 Object oldVal = attributes.put(key, value); 60 firePropertyChanged(this, key, oldVal, value); 61 } 62 63 64 71 public Object getValue(String key) { 72 return attributes.get(key); 73 } 74 75 78 public void addPropertyChangeListener(PropertyChangeListener l) { 79 listeners.addElement(l); 80 } 81 82 85 public void removePropertyChangeListener(PropertyChangeListener l) { 86 listeners.removeElement(l); 87 } 88 89 92 private void firePropertyChanged(Object source, String key, Object oldVal, Object newVal) { 93 PropertyChangeEvent evt = null; 94 synchronized(listeners) { 95 for(int i = listeners.size() - 1; i >= 0 ; i-- ) { 96 if(evt == null) { 97 evt = new PropertyChangeEvent (source, key, oldVal, newVal); 98 } 99 ((PropertyChangeListener )listeners.elementAt(i)).propertyChange(evt); 100 } 101 } 102 } 103 } 104 | Popular Tags |