/* * Copyright (c) 2013-2016 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.report.cell; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.control.Button; import javafx.scene.control.TableCell; import org.adoptopenjdk.jitwatch.model.IMetaMember; import org.adoptopenjdk.jitwatch.report.Report; import org.adoptopenjdk.jitwatch.ui.main.IStageAccessProxy; import org.adoptopenjdk.jitwatch.ui.report.IReportRowBean; public class LinkedBCICell extends TableCell<IReportRowBean, Report> { private Button btnTriView; private static IStageAccessProxy triViewAccessor; public static void setTriViewAccessor(IStageAccessProxy triViewAccessor) { LinkedBCICell.triViewAccessor = triViewAccessor; } public LinkedBCICell() { btnTriView = new Button("View"); setGraphic(btnTriView); } @Override protected void updateItem(final Report report, boolean empty) { if (report != null && report.getCaller() != null) { final IMetaMember member = report.getCaller(); btnTriView.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent e) { if (report.getCompilationIndex() != -1) { member.setSelectedCompilation(report.getCompilationIndex()); } triViewAccessor.openTriView(member, false, report.getBytecodeOffset()); } }); btnTriView.setText("View BCI " + report.getBytecodeOffset()); btnTriView.setVisible(true); } else { btnTriView.setVisible(false); } } }