package org.limewire.ui.desktop.search;

import org.limewire.core.api.search.SearchCategory;
import org.limewire.ui.desktop.settings.SwingUiSettings;

public enum SearchViewType {
    LIST(0), TABLE(1);

    /**
     * The explicit id of the type. Not an ordinal because it is serialized over
     * multiple sessions.
     */
    private final int id;

    SearchViewType(int id) {
        this.id = id;
    }

    public int getId() {
        return id;
    }

    /**
     * Returns the search view type for the given search view id. If non match,
     * LIST type is returned by default. This is used to save values in the
     * SearchSettings.SEARCH_VIEW_TYPE_ID.
     */
    public static SearchViewType forId(int id) {
        for(SearchViewType type : values()) {
            if(type.getId() == id) {
                return type;
            }
        }
        return LIST;
    }
    
    /**
     * @return the search view type for the search category taking settings into
     * account 
     */
    public static SearchViewType getSearchViewType(SearchCategory searchCategory) {
        if (searchCategory == SearchCategory.TORRENT) {
            return SearchViewType.forId(SwingUiSettings.TORRENT_SEARCH_VIEW_TYPE_ID.getValue());
        } else {
            return SearchViewType.forId(SwingUiSettings.SEARCH_VIEW_TYPE_ID.getValue());
        } 
    }
}