Package org.adoptopenjdk.jitwatch.ui.triview

Source Code of org.adoptopenjdk.jitwatch.ui.triview.TriViewNavigationStack

/*
* Copyright (c) 2013, 2014 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 java.util.Deque;
import java.util.LinkedList;

import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;

import org.adoptopenjdk.jitwatch.model.IMetaMember;

public class TriViewNavigationStack
{
  private boolean isCtrlPressed = false;
  private Deque<IMetaMember> navigationStack = new LinkedList<>();
  private TriView triView;

  public TriViewNavigationStack(final TriView triView, final Scene scene)
  {
    this.triView = triView;

    scene.setOnKeyPressed(new EventHandler<KeyEvent>()
    {
      @Override
      public void handle(KeyEvent event)
      {
        KeyCode code = event.getCode();

        if (code == KeyCode.CONTROL)
        {
          isCtrlPressed = true;
        }
      }
    });

    scene.setOnKeyReleased(new EventHandler<KeyEvent>()
    {
      @Override
      public void handle(KeyEvent event)
      {
        KeyCode code = event.getCode();

        if (code == KeyCode.CONTROL)
        {
          isCtrlPressed = false;
        }
      }
    });

    scene.setOnKeyReleased(new EventHandler<KeyEvent>()
    {
      @Override
      public void handle(KeyEvent event)
      {
        KeyCode code = event.getCode();

        if (code == KeyCode.BACK_SPACE)
        {
          if (!navigationStack.isEmpty())
          {
            IMetaMember previous = navigationStack.pop();

            triView.setMember(previous, false);
          }
        }
      }
    });
  }

  public void navigateTo(IMetaMember nextMember)
  {
    if (nextMember != null)
    {
      IMetaMember currentMember = triView.getMetaMember();

      if (currentMember != null)
      {
        navigationStack.push(currentMember);
      }

      triView.setMember(nextMember, false);
    }
  }

  public boolean isCtrlPressed()
  {
    return isCtrlPressed;
  }
}
TOP

Related Classes of org.adoptopenjdk.jitwatch.ui.triview.TriViewNavigationStack

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.