001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.data.osm.event; 003 004import org.openstreetmap.josm.data.osm.INode; 005import org.openstreetmap.josm.data.osm.IPrimitive; 006import org.openstreetmap.josm.data.osm.IRelation; 007import org.openstreetmap.josm.data.osm.IWay; 008import org.openstreetmap.josm.data.osm.OsmData; 009 010/** 011 * This interface indicates that the class can fire {@link IDataSelectionListener}. 012 * @author Taylor Smock, Michael Zangl (original code) 013 * @param <O> the base type of OSM primitives 014 * @param <N> type representing OSM nodes 015 * @param <W> type representing OSM ways 016 * @param <R> type representing OSM relations 017 * @param <D> The dataset type 018 * @since 17862 019 */ 020public interface IDataSelectionEventSource<O extends IPrimitive, N extends INode, W extends IWay<N>, R extends IRelation<?>, 021 D extends OsmData<O, N, W, R>> { 022 /** 023 * Add a listener 024 * @param listener The listener to add 025 * @return {@code true} if the listener was added 026 */ 027 boolean addSelectionListener(IDataSelectionListener<O, N, W, R, D> listener); 028 029 /** 030 * Remove a listener 031 * @param listener The listener to remove 032 * @return {@code true} if the listener was removed 033 */ 034 boolean removeSelectionListener(IDataSelectionListener<O, N, W, R, D> listener); 035}