001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.data.sources;
003
004import javax.swing.ImageIcon;
005
006import org.openstreetmap.josm.tools.ImageProvider.ImageSizes;
007
008/**
009 * This is an enum for a source category (i.e. PHOTO/ELEVATION/etc.)
010 *
011 * @author Taylor Smock
012 *
013 * @param <T> The enum that is extending this interface
014 * @since 16545
015 */
016public interface ISourceCategory<T extends Enum<T>> extends ICommonSource<T> {
017    /**
018     * Returns the unique string identifying this category.
019     * @return the unique string identifying this category
020     */
021    String getCategoryString();
022
023    /**
024     * Returns the description of this category.
025     * @return the description of this category
026     */
027    String getDescription();
028
029    /**
030     * Returns the category icon at the given size.
031     * @param size icon wanted size
032     * @return the category icon at the given size
033     */
034    ImageIcon getIcon(ImageSizes size);
035}