package org.limewire.ui.swing.search.resultpanel;

import java.text.MessageFormat;

import org.limewire.inject.LazySingleton;
import org.limewire.ui.swing.search.model.BasicDownloadState;
import org.limewire.ui.swing.util.I18n;

@LazySingleton
public class SearchHeadingDocumentBuilderImpl implements SearchHeadingDocumentBuilder {

    @Override
	public String getHeadingDocument(SearchHeading heading, BasicDownloadState downloadState, boolean isSpam) {
        if (isSpam) {
            return I18n.tr("{0} is marked as spam.", wrapHeading(heading.getText()));
        } else {
            switch(downloadState) {
            case DOWNLOADING:
                String downloadMessage = I18n.tr("Downloading {0}...");
                return MessageFormat.format(downloadMessage, wrapHeading(heading.getText(downloadMessage)));
            case NOT_STARTED:
                return wrapHeading(underLine(wrapForDownload(heading.getText())));
            case DOWNLOADED:
            case LIBRARY:
                String message = I18n.tr("{0} is in your Library.");
                return MessageFormat.format(message, wrapHeading(heading.getText(message)));
            case REMOVED:
                String removeMessage = I18n.tr("{0} was removed for your protection.");
                return MessageFormat.format(removeMessage, wrapHeading(heading.getText(removeMessage)));
            }
        }
        return "";
    }

    private String wrapHeading(String heading) {
        return "<span class=\"title\">" + heading + "</span>";
    }
    
    private String wrapForDownload(String heading) {
        return "<a href=\"#download\">" + heading + "</a>";
    }

    private String underLine(String heading) {
        return "<u>" + heading + "</u>";
    }
}
