/*
* 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.triview;
import javafx.event.EventHandler;
import javafx.scene.control.Label;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
public class TriViewPane extends VBox
{
private boolean isFocussed = false;
private HBox titleComponents;
private static final String STYLE_UNFOCUSSED = "-fx-background-color:#dddddd; -fx-padding:4px;";
private static final String STYLE_FOCUSSED = "-fx-background-color:#ffffaa; -fx-padding:4px;";
private Viewer viewer;
public TriViewPane(TriView parent, String title, Viewer viewer)
{
construct(parent, title, viewer, new HBox());
}
public TriViewPane(TriView parent, String title, Viewer viewer, HBox titleComponents)
{
construct(parent, title, viewer, titleComponents);
}
public void clear()
{
viewer.clear();
}
private void construct(final TriView parent, String title, final Viewer viewer, HBox titleComponents)
{
this.titleComponents = titleComponents;
this.viewer = viewer;
titleComponents.setStyle(STYLE_UNFOCUSSED);
titleComponents.prefWidthProperty().bind(widthProperty());
titleComponents.setPrefHeight(60);
Label lblTitle = new Label(title);
titleComponents.getChildren().add(0, lblTitle);
viewer.prefWidthProperty().bind(widthProperty());
viewer.prefHeightProperty().bind(heightProperty());
getChildren().add(titleComponents);
getChildren().add(viewer);
titleComponents.setOnMouseEntered(new EventHandler<MouseEvent>()
{
@Override
public void handle(MouseEvent arg0)
{
if (viewer.getConfig().isTriViewMouseFollow())
{
parent.handleFocusSelf(viewer.getLineType());
}
}
});
titleComponents.setOnMouseClicked(new EventHandler<MouseEvent>()
{
@Override
public void handle(MouseEvent arg0)
{
parent.handleFocusSelf(viewer.getLineType());
}
});
}
public void focus()
{
if (!isFocussed)
{
titleComponents.setStyle(STYLE_FOCUSSED);
isFocussed = true;
}
}
public void unFocus()
{
if (isFocussed)
{
titleComponents.setStyle(STYLE_UNFOCUSSED);
isFocussed = false;
}
}
}