/**
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE, Version 3, 29 June 2007;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.gnu.org/licenses/lgpl-3.0.txt
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE, Version 3, 29 June 2007;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.gnu.org/licenses/lgpl-3.0.txt
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.kevoree.platform.android.boot.utils;
import android.support.v4.app.FragmentActivity;
import android.widget.TextView;
import java.io.OutputStream;
/**
* Created by jed
* User: jedartois@gmail.com
* Date: 09/03/12
* Time: 11:39
*/
public class PrintStreamTraceLogger extends OutputStream {
private TextView _textArea = null;
private int _color = 0;
StringBuilder currentLine = new StringBuilder();
FragmentActivity ctx;
public PrintStreamTraceLogger(FragmentActivity ctx,TextView textArea, int color) {
_textArea = textArea;
_color = color;
this.ctx = ctx;
}
@Override
public void write(final int b) {
ctx.runOnUiThread(new Runnable() {
@Override
public void run() {
try {
if (b == (int) '\n') {
currentLine.append("\n");
if (!currentLine.toString().startsWith("Error reading from ")) {
_textArea.append(currentLine);
final int scrollAmount = _textArea.getLayout().getLineTop(_textArea.getLineCount()) - _textArea.getHeight();
if (scrollAmount > 0)
_textArea.scrollTo(0, scrollAmount);
else
_textArea.scrollTo(0, 0);
_textArea.setTextColor(_color);
currentLine = new StringBuilder();
}
} else {
currentLine.append((char) b);
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}