package org.freeplane.core.user;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.List;
public class LocalUser implements IUserAccount {
private final List<PropertyChangeListener> listeners = new ArrayList<PropertyChangeListener>();
private final String name;
private boolean enabled = true;
public LocalUser(String username) {
this.name = username;
}
public String getName() {
return this.name;
}
public boolean isEnabled() {
return enabled;
}
public boolean isActive() {
return this.equals(UserAccountController.getController().getActiveUser());
}
public void activate() {
UserAccountController.getController().setActiveUser(this);
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
public String toString() {
return "LocalUser["+getName()+(isActive() ? ";active":"")+"]";
}
public void addPropertyChangeListener(PropertyChangeListener listener) {
if(listener == null) {
return;
}
synchronized (listeners) {
if(!listeners.contains(listener)) {
listeners.add(0, listener);
}
}
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
if(listener == null) {
return;
}
synchronized (listeners) {
listeners.remove(listener);
}
}
protected void firePropertyChanged(String propertyName, Object oldValue, Object newValue) {
PropertyChangeEvent evt = new PropertyChangeEvent(this, propertyName, oldValue, newValue);
firePropertyChangedEvent(evt);
}
protected void firePropertyChangedEvent(PropertyChangeEvent event) {
synchronized (listeners) {
for (PropertyChangeListener listener : listeners) {
listener.propertyChange(event);
}
}
}
}