/FileExtraction/Java_unseen/PowerExplorer_PowerFileExplorer/PowerFileExplorer/src/main/java/com/amaze/filemanager/services/asynctasks/SearchTextTask.java
//package com.amaze.filemanager.services.asynctasks;
//
//import android.graphics.Color;
//import android.os.AsyncTask;
//import android.text.Editable;
//import android.text.Spanned;
//import android.text.style.BackgroundColorSpan;
//import android.widget.EditText;
//import android.widget.ImageButton;
//
//import com.amaze.filemanager.activities.TextReader;
//import com.amaze.filemanager.utils.MapEntry;
//import com.amaze.filemanager.utils.theme.AppTheme;
//
//import java.io.IOException;
//import java.io.LineNumberReader;
//import java.io.StringReader;
//import java.util.ArrayList;
//import java.util.Map;
//
///**
// * Created by Vishal on 2/1/16.
// */
//public class SearchTextTask extends AsyncTask<Editable, Void, ArrayList<MapEntry>> {
//
//    private EditText searchEditText, mInput;
//    private ArrayList<MapEntry> nodes;
//    private int searchTextLength;
//    private ImageButton upButton, downButton;
//    private TextReader textReader;
//    private Editable editText;
//    private String searchSubString;
//    private StringReader stringReader;
//    private LineNumberReader lineNumberReader;
//
//    public SearchTextTask(TextReader textReader) {
//        this.textReader = textReader;
//    }
//
//    @Override
//    protected void onPreExecute() {
//        super.onPreExecute();
//
//        this.searchEditText = textReader.searchEditText;
//        this.nodes = textReader.nodes;
//        this.upButton = textReader.upButton;
//        this.downButton = textReader.downButton;
//        this.mInput = textReader.mInput;
//        searchTextLength = searchEditText.length();
//        editText = mInput.getText();
//        stringReader = new StringReader(editText.toString());
//        lineNumberReader = new LineNumberReader(stringReader);
//    }
//
//    @Override
//    protected ArrayList<MapEntry> doInBackground(Editable... params) {
//        for (int i = 0; i < (editText.length() - params[0].length()); i++) {
//            if (searchTextLength == 0 || isCancelled())
//                break;
//
//            searchSubString = editText.subSequence(i, i + params[0].length()).toString();
//
//            // comparing and adding searched phrase to a list
//            if (searchSubString.equalsIgnoreCase(params[0].toString())) {
//
//                nodes.add(new MapEntry(new MapEntry.KeyMapEntry(i, i + params[0].length()),
//                        lineNumberReader.getLineNumber()));
//            }
//
//            // comparing and incrementing line number
//            // ended up using LineNumberReader api instead
//            try {
//                lineNumberReader.skip(params[0].length());
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//        }
//        return nodes;
//    }
//
//    @Override
//    protected void onPostExecute(final ArrayList<MapEntry> mapEntries) {
//        super.onPostExecute(mapEntries);
//
//        for (Map.Entry mapEntry : mapEntries) {
//
//            Map.Entry keyMapEntry = (Map.Entry) mapEntry.getKey();
//            mInput.getText().setSpan(textReader.getAppTheme().equals(AppTheme.LIGHT) ? new BackgroundColorSpan(Color.YELLOW) :
//                            new BackgroundColorSpan(Color.LTGRAY),
//                    (Integer) keyMapEntry.getKey(), (Integer) keyMapEntry.getValue(),
//                    Spanned.SPAN_INCLUSIVE_INCLUSIVE);
//        }
//
//        if (mapEntries.size()!=0) {
//            upButton.setEnabled(true);
//            downButton.setEnabled(true);
//
//            // downButton
//            textReader.onClick(downButton);
//        } else {
//            upButton.setEnabled(false);
//            downButton.setEnabled(false);
//        }
//    }
//
//}
