/*
* Copyright (c) 2013-2017 Chris Newland.
* Licensed under https://github.com/AdoptOpenJDK/jitwatch/blob/master/LICENSE-BSD
* Instructions: https://github.com/AdoptOpenJDK/jitwatch/wiki
*/
package org.adoptopenjdk.jitwatch.ui.viewer;
import static org.adoptopenjdk.jitwatch.core.JITWatchConstants.S_EMPTY;
import static org.adoptopenjdk.jitwatch.core.JITWatchConstants.S_NEWLINE;
import static org.adoptopenjdk.jitwatch.core.JITWatchConstants.S_OPEN_ANGLE;
import static org.adoptopenjdk.jitwatch.core.JITWatchConstants.TAG_INLINE_FAIL;
import static org.adoptopenjdk.jitwatch.core.JITWatchConstants.TAG_INLINE_SUCCESS;
import static org.adoptopenjdk.jitwatch.core.JITWatchConstants.TAG_INTRINSIC;
import static org.adoptopenjdk.jitwatch.util.UserInterfaceUtil.FONT_MONOSPACE_FAMILY;
import static org.adoptopenjdk.jitwatch.util.UserInterfaceUtil.FONT_MONOSPACE_SIZE;
import java.util.ArrayList;
import java.util.List;
import javafx.scene.control.Label;
import javafx.scene.paint.Color;
import org.adoptopenjdk.jitwatch.model.Compilation;
import org.adoptopenjdk.jitwatch.ui.main.JITWatchUI;
import org.adoptopenjdk.jitwatch.ui.triview.Viewer;
public class JournalViewerStage extends AbstractTextViewerStage
{
public JournalViewerStage(final JITWatchUI parent, String title, Compilation compilation)
{
super(parent, title, false);
int maxLineLength = 0;
List<Label> labels = new ArrayList<>();
String[] tagLines = compilation.toStringVerbose().split(S_NEWLINE);
for (int i = 0; i < tagLines.length; i++)
{
String row = tagLines[i];
int rowLen = row.length();
if (rowLen > maxLineLength)
{
maxLineLength = rowLen;
}
String style = "-fx-font-family:" + FONT_MONOSPACE_FAMILY + "; -fx-font-size:" + FONT_MONOSPACE_SIZE + "px;";
String colour = Viewer.COLOUR_BLACK;
if (tagLines[i].contains(S_OPEN_ANGLE + TAG_INLINE_FAIL))
{
colour = Viewer.COLOUR_RED;
}
else if (tagLines[i].contains(S_OPEN_ANGLE + TAG_INLINE_SUCCESS))
{
colour = Viewer.COLOUR_GREEN;
}
else if (tagLines[i].contains(S_OPEN_ANGLE + TAG_INTRINSIC))
{
colour = Viewer.COLOUR_BLUE;
}
// else if (tagLines[i].contains(S_OPEN_ANGLE + TAG_PARSE + C_SPACE))
// {
// Map<String, String> attrs = StringUtil.getLineAttributesDoubleQuote(tagLines[i].substring(1 + TAG_PARSE
// .length()));
//
// String method = attrs.get(ATTR_METHOD);
//
// if (tag instanceof Task)
// {
// tagLines[i] += ((Task) tag).decodeParseMethod(method);
// }
// }
Label lblLine = new Label(tagLines[i]);
lblLine.setStyle(style);
lblLine.setTextFill(Color.web(colour));
labels.add(lblLine);
}
Label lblLine = new Label(S_EMPTY);
labels.add(lblLine);
setContent(labels, maxLineLength);
}
}