patrickfav/under-the-hood

View on GitHub
hood-core/src/release/java/at/favre/lib/hood/internal/entries/TextMessageEntry.java

Summary

Maintainability
A
0 mins
Test Coverage
package at.favre.lib.hood.internal.entries;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import androidx.annotation.ColorInt;
import androidx.annotation.NonNull;

import at.favre.lib.hood.R;
import at.favre.lib.hood.interfaces.PageEntry;
import at.favre.lib.hood.interfaces.ViewTemplate;
import at.favre.lib.hood.interfaces.ViewTypes;
import at.favre.lib.hood.view.HoodDebugPageView;

/**
 * A simple, non-interactive entry that displays a simple text message
 */
public class TextMessageEntry implements PageEntry<CharSequence> {

    private final CharSequence message;
    private boolean loggingEnabled = true;

    /**
     * Creates a simple, non-interactive text message
     *
     * @param message as shown in
     */
    public TextMessageEntry(@NonNull CharSequence message) {
        this.message = message;
    }

    @Override
    public CharSequence getValue() {
        return message;
    }

    @Override
    public ViewTemplate<CharSequence> createViewTemplate() {
        return new Template(getViewType());
    }

    @Override
    public int getViewType() {
        return ViewTypes.VIEWTYPE_MESSAGE;
    }

    @Override
    public String toLogString() {
        return loggingEnabled ? message.toString() : null;
    }

    @Override
    public void disableLogging() {
        loggingEnabled = false;
    }

    @Override
    public void refresh() {
        //no-op
    }

    private static class Template implements ViewTemplate<CharSequence> {
        private final int viewType;

        Template(int viewType) {
            this.viewType = viewType;
        }

        @Override
        public int getViewType() {
            return viewType;
        }

        @Override
        public View constructView(ViewGroup viewGroup, LayoutInflater inflater) {
            return inflater.inflate(R.layout.hoodlib_template_message, viewGroup, false);
        }

        @Override
        public void setContent(CharSequence value, @NonNull View view) {
            ((TextView) view.findViewById(R.id.message)).setText(value);
        }

        @Override
        public void decorateViewWithZebra(@NonNull View view, @ColorInt int zebraColor, boolean isOdd) {
            HoodDebugPageView.setZebraToView(view, zebraColor, isOdd);
        }
    }
}