001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.gui.util;
003
004import javax.swing.event.DocumentEvent;
005import javax.swing.event.DocumentListener;
006
007/**
008 * A functional DocumentListener which sends all events to {@link #update(DocumentEvent)}.
009 */
010@FunctionalInterface
011public interface DocumentAdapter extends DocumentListener {
012
013    /**
014     * Gives notification that there was an event.
015     *
016     * @param e the document event
017     */
018    void update(DocumentEvent e);
019
020    @Override
021    default void insertUpdate(DocumentEvent e) {
022        update(e);
023    }
024
025    @Override
026    default void removeUpdate(DocumentEvent e) {
027        update(e);
028    }
029
030    @Override
031    default void changedUpdate(DocumentEvent e) {
032        update(e);
033    }
034
035    /**
036     * Utility function to create an adapter from a lambda expression
037     * @param adapter the adapter
038     * @return {@code adapter}
039     */
040    static DocumentAdapter create(DocumentAdapter adapter) {
041        return adapter;
042    }
043}