package com.stardust.scriptdroid.ui.console;
import android.content.Intent;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.ForegroundColorSpan;
import android.util.Log;
import android.util.SparseArray;
import com.jraska.console.Console;
import com.stardust.autojs.runtime.api.AbstractConsole;
import com.stardust.scriptdroid.App;
import com.stardust.scriptdroid.sublime.SublimePluginService;
import com.stardust.util.SparseArrayEntries;
import com.stardust.util.TextUtils;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
/**
* Created by Stardust on 2017/4/2.
*/
public class JraskaConsole extends AbstractConsole {
private static final SparseArray<Integer> COLORS = new SparseArrayEntries<Integer>()
.entry(Log.VERBOSE, 0xff909090)
.entry(Log.DEBUG, 0xdf000000)
.entry(Log.INFO, 0xdf4caf50)
.entry(Log.WARN, 0xff2196f3)
.entry(Log.ERROR, 0xffff534e)
.entry(Log.ASSERT, 0xffff534e)
.sparseArray();
private static final SparseArray<String> TAGS = new SparseArrayEntries<String>()
.entry(Log.VERBOSE, "V")
.entry(Log.DEBUG, "D")
.entry(Log.INFO, "I")
.entry(Log.WARN, "W")
.entry(Log.ERROR, "E")
.entry(Log.ASSERT, "A")
.sparseArray();
private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("HH:mm:ss.SSS/", Locale.getDefault());
@Override
public void println(int level, CharSequence charSequence) {
Console.write(getLevelSpannable(level, getTag(level)));
Console.writeLine(getLevelSpannable(level, charSequence));
SublimePluginService.log(getTag(level) + charSequence.toString());
}
@Override
public void write(int level, CharSequence data) {
Console.write(getLevelSpannable(level, getTag(level)));
Console.write(getLevelSpannable(level, data));
SublimePluginService.log(getTag(level) + data.toString());
}
private CharSequence getTag(int level) {
return TextUtils.join("", DATE_FORMAT.format(new Date()), TAGS.get(level), ": ");
}
private SpannableString getLevelSpannable(int level, CharSequence charSequence) {
SpannableString spannable = new SpannableString(charSequence);
spannable.setSpan(new ForegroundColorSpan(COLORS.get(level)), 0, charSequence.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
return spannable;
}
@Override
public void clear() {
com.jraska.console.Console.clear();
}
@Override
public void show() {
App.getApp().startActivity(new Intent(App.getApp(), LogActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}
@Override
public void hide() {
throw new UnsupportedOperationException();
}
@Override
public void setTitle(CharSequence title) {
}
}