package org.isatools.isacreator.autofilteringlist;
import org.isatools.isacreator.ontologybrowsingutils.TreeObserver;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Filter;
/**
* The FilterFields which implements the DocumentListener class. Calls updates on the JList as and
* when modifications occur in the textfield as a result of user insertion, deletion, or update.
*/
public class FilterField extends JTextField implements DocumentListener, FilterSubject {
private List<FilterObserver> observers;
public FilterField() {
super(20);
observers = new ArrayList<FilterObserver>();
getDocument().addDocumentListener(this);
}
public void changedUpdate(DocumentEvent event) {
notifyObservers(FilterSubject.UPDATE);
}
public void insertUpdate(DocumentEvent event) {
notifyObservers(FilterSubject.UPDATE);
}
public void removeUpdate(DocumentEvent event) {
notifyObservers(FilterSubject.REMOVE);
}
public void registerObserver(FilterObserver observer) {
observers.add(observer);
}
public void unregisterObserver(FilterObserver observer) {
observers.remove(observer);
}
public void notifyObservers(String observation) {
for (FilterObserver observer : observers) {
observer.notifyOfSelection(observation);
}
}
public void unregisterAllObservers() {
observers.clear();
}
}