Package com.baulsupp.kolja.ansi

Source Code of com.baulsupp.kolja.ansi.TailRenderer

package com.baulsupp.kolja.ansi;

import java.awt.Color;
import java.util.List;

import jline.ANSIBuffer;
import jline.Terminal;

import com.baulsupp.kolja.log.line.Line;
import com.baulsupp.kolja.log.viewer.renderer.Renderer;
import com.baulsupp.kolja.log.viewer.renderer.TextDisplayRow;
import com.baulsupp.kolja.util.ColouredString;
import com.baulsupp.kolja.util.MultiColourString;

public class TailRenderer implements ConsoleRenderer<Line> {
  private Renderer<Line> renderer;

  private boolean ansi;

  private int fixedWidth;

  public TailRenderer(Renderer<Line> renderer, boolean ansi) {
    this.renderer = renderer;
    this.ansi = ansi;
  }
 
  public void show(Line l) {
    TextDisplayRow row = renderer.getRow(l)
    print(row);
  }

  private void print(TextDisplayRow row) {
    ANSIBuffer buffy = new ANSIBuffer();
   
    List<MultiColourString> lines = row.getLines();
   
    for (MultiColourString string : lines) {
      if (fixedWidth > 0 && string.length() > fixedWidth) {
        string = string.part(0, fixedWidth);
      }
     
      append(buffy, string);
      buffy.append("\n");
    }
   
    if (ansi) {
      System.out.print(buffy.getAnsiBuffer());
    } else {
      System.out.print(buffy.getPlainBuffer());
    }
  }
 
  private void append(ANSIBuffer buffy, MultiColourString string) {
    for (ColouredString s : string.getColouredStrings()) {
      append(buffy, s);
    }
  }

  private void append(ANSIBuffer buffy, ColouredString string) {
    if (string.getForegroundColor() == Color.BLUE) {
      buffy.blue(string.toString());
    } else if (string.getForegroundColor() == Color.RED) {
      buffy.red(string.toString());
    } else if (string.getForegroundColor() == Color.MAGENTA) {
      buffy.magenta(string.toString());
    } else if (string.getForegroundColor() == Color.GREEN) {
      buffy.green(string.toString());
    } else if (string.getForegroundColor() == Color.WHITE) {
      buffy.yellow(string.toString());
    } else if (string.getForegroundColor() == Color.BLACK) {
      buffy.black(string.toString());
    } else if (string.getForegroundColor() == Color.CYAN) {
      buffy.cyan(string.toString());
    } else {
      buffy.append(string.toString());
    }
  }

  public void setFixedWidth(boolean b) {
    if (b) {
      this.fixedWidth = Terminal.getTerminal().getTerminalWidth();
    } else {
      this.fixedWidth = 0;
    }
  }
}
TOP

Related Classes of com.baulsupp.kolja.ansi.TailRenderer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.