/* * Copyright (c) 2013-2015 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 java.util.ArrayList; import java.util.List; import org.adoptopenjdk.jitwatch.ui.main.JITWatchUI; import org.adoptopenjdk.jitwatch.util.StringUtil; import static org.adoptopenjdk.jitwatch.core.JITWatchConstants.*; import javafx.scene.control.Label; public class TextViewerStage extends AbstractTextViewerStage { public TextViewerStage(final JITWatchUI parent, String title, String inSource, boolean showLineNumbers, boolean highlighting) { super(parent, title, highlighting); String source = inSource; if (source == null) { source = "Empty"; } source = source.replace("\t", " "); // 4 spaces String[] lines = source.split(S_NEWLINE); int maxLineLength = 0; int maxWidth = Integer.toString(lines.length).length(); List<Label> labels = new ArrayList<>(); for (int i = 0; i < lines.length; i++) { String row = lines[i]; if (showLineNumbers) { lines[i] = StringUtil.alignRight(i + 1, maxWidth) + S_DOUBLE_SPACE + row; } int rowLen = row.length(); if (rowLen > maxLineLength) { maxLineLength = rowLen; } Label lblLine = new Label(lines[i]); labels.add(lblLine); } setContent(labels, maxLineLength); } }