@Override
  public IRotaryControllable next() {
    if (getPager().isAtEnd()) {
      return UIStateController.getInstance().getGoogleNaviController();
    }
    super.next();

    if (getPager().getPosition() < (VISIBLE_ITEM_COUNT - 1)) {
      return this;
    }
    if (getPager().getPosition() > ((getPager().size()) - VISIBLE_ITEM_COUNT)) {
      return this;
    }

    TransitionUtil.moveNodeY(
        songBox, scrollPos, scrollPos - SCROLL_LEFT_LENGTH, false, SCROLL_DELAY);
    scrollPos -= SCROLL_LEFT_LENGTH;
    return this;
  }
  @Override
  public IRotaryControllable prev() {
    if (getPager().isAtStart()) {
      return UIStateController.getInstance().getGoogleNaviController();
    }

    super.prev();

    if (getPager().getPosition() > (getPager().size() - VISIBLE_ITEM_COUNT)) {
      return this;
    }

    if (scrollPos < 0) {
      TransitionUtil.moveNodeY(
          songBox, scrollPos, scrollPos + SCROLL_LEFT_LENGTH, false, SCROLL_DELAY);
      scrollPos += SCROLL_LEFT_LENGTH;
    }
    return this;
  }