Search in sources :

Example 1 with SelectBoxScrollablePanel

use of com.spinyowl.legui.component.SelectBox.SelectBoxScrollablePanel in project legui by SpinyOwl.

the class SelectBoxAnimation method animate.

/**
 * This method used to update animated object. Called by animator every frame. Removed from
 * animator and stops when this method returns true. <p> Returns true if animation is finished and
 * could be removed from animator.
 *
 * @param delta delta time (from previous call).
 * @return true if animation is finished and could be removed from animator.
 */
@Override
protected boolean animate(double delta) {
    SelectBox selectBox = this.selectBox.get();
    SelectBoxScrollablePanel selectionListPanel = this.selectionListPanel.get();
    if (selectBox == null || selectionListPanel == null) {
        return true;
    }
    if (selectBox.isCollapsed()) {
        return false;
    }
    deltaSum += delta;
    if (deltaSum < 0.01d) {
        return false;
    }
    float buttonWidth = selectBox.getButtonWidth();
    selectionListPanel.getVerticalScrollBar().getStyle().setMaxWidth(buttonWidth);
    selectionListPanel.getVerticalScrollBar().getStyle().setMaxWidth(buttonWidth);
    int visibleCount = Math.min(selectBox.getVisibleCount(), selectBox.getElements().size());
    float elementHeight = selectBox.getElementHeight();
    Vector2f size = selectBox.getSize();
    Vector2f wsize = new Vector2f(size.x, visibleCount * elementHeight);
    Vector2f wpos = new Vector2f();
    Vector2f sbPos = selectBox.getAbsolutePosition();
    Vector2f pSize = selectBox.getSelectBoxLayer().getSize();
    if (sbPos.y + wsize.y + size.y > pSize.y && sbPos.y - wsize.y > 0) {
        wpos.set(sbPos.x, sbPos.y - wsize.y);
    } else {
        wpos.set(sbPos.x, sbPos.y + size.y);
    }
    selectionListPanel.setSize(wsize);
    selectionListPanel.setPosition(wpos);
    selectionListPanel.getContainer().getSize().y = selectionListPanel.getContainer().count() * elementHeight;
    selectionListPanel.getContainer().getSize().x = size.x - selectionListPanel.getVerticalScrollBar().getSize().x;
    deltaSum = 0;
    return false;
}
Also used : SelectBox(com.spinyowl.legui.component.SelectBox) Vector2f(org.joml.Vector2f) SelectBoxScrollablePanel(com.spinyowl.legui.component.SelectBox.SelectBoxScrollablePanel)

Aggregations

SelectBox (com.spinyowl.legui.component.SelectBox)1 SelectBoxScrollablePanel (com.spinyowl.legui.component.SelectBox.SelectBoxScrollablePanel)1 Vector2f (org.joml.Vector2f)1