Search in sources :

Example 1 with SelectBox

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

the class ExampleGui method createSelectBox.

private void createSelectBox() {
    SelectBox<Object> selectBox = new SelectBox<>(20, 260, 100, 20);
    selectBox.addElement(0.25f);
    selectBox.addElement(0.5d);
    selectBox.addElement(1);
    selectBox.addElement("MyText");
    selectBox.addElement(new Long(2L));
    selectBox.setVisibleCount(7);
    selectBox.setElementHeight(20);
    selectBox.addSelectBoxChangeSelectionEventListener((SelectBoxChangeSelectionEventListener<Object>) event -> {
        Dialog dialog = new Dialog("SelectBox clicked", 300, 100);
        Label valueLabel = new Label("Value: " + event.getNewValue().toString(), 10, 10, 300, 20);
        dialog.getContainer().add(valueLabel);
        Label classLabel = new Label("Class: " + event.getNewValue().getClass().getName(), 10, 30, 300, 20);
        dialog.getContainer().add(classLabel);
        dialog.show(event.getFrame());
    });
    this.add(selectBox);
    Button sbb = new Button("Add element", 130, 260, 70, 20);
    sbb.getListenerMap().addListener(MouseClickEvent.class, (MouseClickEventListener) event -> {
        if (event.getAction() == CLICK) {
            selectBox.addElement("Dynamic#" + selectBox.getElements().size());
        }
    });
    this.add(sbb);
}
Also used : TextInput(com.spinyowl.legui.component.TextInput) Button(com.spinyowl.legui.component.Button) ChangeSizeEvent(com.spinyowl.legui.component.event.component.ChangeSizeEvent) PRESS(com.spinyowl.legui.event.MouseClickEvent.MouseClickAction.PRESS) BASELINE(com.spinyowl.legui.component.optional.align.VerticalAlign.BASELINE) SliderChangeValueEventListener(com.spinyowl.legui.component.event.slider.SliderChangeValueEventListener) Shadow(com.spinyowl.legui.style.shadow.Shadow) SliderChangeValueEvent(com.spinyowl.legui.component.event.slider.SliderChangeValueEvent) Themes(com.spinyowl.legui.theme.Themes) KeyEvent(com.spinyowl.legui.event.KeyEvent) Theme(com.spinyowl.legui.theme.Theme) RELEASE(com.spinyowl.legui.event.MouseClickEvent.MouseClickAction.RELEASE) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) ImageLoader(com.spinyowl.legui.image.loader.ImageLoader) TOP(com.spinyowl.legui.component.optional.align.VerticalAlign.TOP) SelectBoxChangeSelectionEventListener(com.spinyowl.legui.component.event.selectbox.SelectBoxChangeSelectionEventListener) DropEvent(com.spinyowl.legui.event.DropEvent) UpdateLabelWidthListener(com.spinyowl.legui.component.misc.listener.label.UpdateLabelWidthListener) CursorEnterEventListener(com.spinyowl.legui.listener.CursorEnterEventListener) CursorEnterEvent(com.spinyowl.legui.event.CursorEnterEvent) TextUtil(com.spinyowl.legui.util.TextUtil) HorizontalAlign(com.spinyowl.legui.component.optional.align.HorizontalAlign) PositionType(com.spinyowl.legui.style.Style.PositionType) Animation(com.spinyowl.legui.animation.Animation) ColorConstants(com.spinyowl.legui.style.color.ColorConstants) LEFT(com.spinyowl.legui.component.optional.align.HorizontalAlign.LEFT) Icon(com.spinyowl.legui.icon.Icon) RadioButtonGroup(com.spinyowl.legui.component.RadioButtonGroup) MIDDLE(com.spinyowl.legui.component.optional.align.VerticalAlign.MIDDLE) PasswordInput(com.spinyowl.legui.component.PasswordInput) Label(com.spinyowl.legui.component.Label) Orientation(com.spinyowl.legui.component.optional.Orientation) LabelWidthChangeEvent(com.spinyowl.legui.component.event.label.LabelWidthChangeEvent) GLFW(org.lwjgl.glfw.GLFW) CheckBox(com.spinyowl.legui.component.CheckBox) List(java.util.List) MOUSE_BUTTON_LEFT(com.spinyowl.legui.input.Mouse.MouseButton.MOUSE_BUTTON_LEFT) FocusEvent(com.spinyowl.legui.event.FocusEvent) Vector2f(org.joml.Vector2f) CLICK(com.spinyowl.legui.event.MouseClickEvent.MouseClickAction.CLICK) TooltipTextSizeChangeEvent(com.spinyowl.legui.component.event.tooltip.TooltipTextSizeChangeEvent) Component(com.spinyowl.legui.component.Component) MouseClickEventListener(com.spinyowl.legui.listener.MouseClickEventListener) ImageView(com.spinyowl.legui.component.ImageView) VerticalAlign(com.spinyowl.legui.component.optional.align.VerticalAlign) ScrollablePanel(com.spinyowl.legui.component.ScrollablePanel) SelectBox(com.spinyowl.legui.component.SelectBox) RadioButton(com.spinyowl.legui.component.RadioButton) SplitPanel(com.spinyowl.legui.component.SplitPanel) Style(com.spinyowl.legui.style.Style) CENTER(com.spinyowl.legui.component.optional.align.HorizontalAlign.CENTER) ToggleButton(com.spinyowl.legui.component.ToggleButton) ProgressBar(com.spinyowl.legui.component.ProgressBar) BOTTOM(com.spinyowl.legui.component.optional.align.VerticalAlign.BOTTOM) FontRegistry(com.spinyowl.legui.style.font.FontRegistry) Dialog(com.spinyowl.legui.component.Dialog) ImageIcon(com.spinyowl.legui.icon.ImageIcon) TextDirection(com.spinyowl.legui.style.font.TextDirection) RIGHT(com.spinyowl.legui.component.optional.align.HorizontalAlign.RIGHT) Tooltip(com.spinyowl.legui.component.Tooltip) Panel(com.spinyowl.legui.component.Panel) ScrollBar(com.spinyowl.legui.component.ScrollBar) MouseClickEvent(com.spinyowl.legui.event.MouseClickEvent) KeyEventListener(com.spinyowl.legui.listener.KeyEventListener) DisplayType(com.spinyowl.legui.style.Style.DisplayType) FocusEventListener(com.spinyowl.legui.listener.FocusEventListener) Slider(com.spinyowl.legui.component.Slider) SimpleLineBorder(com.spinyowl.legui.style.border.SimpleLineBorder) Widget(com.spinyowl.legui.component.Widget) TextArea(com.spinyowl.legui.component.TextArea) Vector4f(org.joml.Vector4f) Button(com.spinyowl.legui.component.Button) RadioButton(com.spinyowl.legui.component.RadioButton) ToggleButton(com.spinyowl.legui.component.ToggleButton) SelectBox(com.spinyowl.legui.component.SelectBox) Dialog(com.spinyowl.legui.component.Dialog) Label(com.spinyowl.legui.component.Label)

Example 2 with SelectBox

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

the class SelectBoxClickListener method process.

@Override
public void process(MouseClickEvent event) {
    SelectBox<T> box = selectBox;
    if (event.getAction() == CLICK && selectBox.isEnabled()) {
        Frame frame = event.getFrame();
        SelectBox.SelectBoxLayer selectBoxLayer = box.getSelectBoxLayer();
        boolean collapsed = box.isCollapsed();
        box.setCollapsed(!collapsed);
        if (collapsed) {
            Vector2f layerSize = new Vector2f(frame.getContainer().getSize());
            selectBoxLayer.setSize(layerSize);
            frame.addLayer(selectBoxLayer);
        } else {
            frame.removeLayer(selectBoxLayer);
        }
    }
}
Also used : Frame(com.spinyowl.legui.component.Frame) SelectBox(com.spinyowl.legui.component.SelectBox) Vector2f(org.joml.Vector2f)

Example 3 with SelectBox

use of com.spinyowl.legui.component.SelectBox 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)

Example 4 with SelectBox

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

the class SelectBoxFocusListener method process.

@Override
public void process(FocusEvent event) {
    if (!event.isFocused() && !selectBox.isCollapsed() && selectBox.isEnabled()) {
        boolean collapse = true;
        Component nextFocus = event.getNextFocus();
        for (SelectBox<T>.SelectBoxElement<T> selectBoxElement : selectBox.getSelectBoxElements()) {
            if (nextFocus == selectBoxElement) {
                collapse = false;
            }
        }
        if (nextFocus == selectBox.getExpandButton() || nextFocus == selectBox.getSelectionButton() || nextFocus == selectBox.getSelectionListPanel() || nextFocus == selectBox.getSelectionListPanel().getVerticalScrollBar()) {
            collapse = false;
        }
        if (selectBox.isCollapsed() != collapse) {
            selectBox.setCollapsed(collapse);
            event.getFrame().removeLayer(selectBox.getSelectBoxLayer());
        }
    }
}
Also used : SelectBox(com.spinyowl.legui.component.SelectBox) Component(com.spinyowl.legui.component.Component)

Aggregations

SelectBox (com.spinyowl.legui.component.SelectBox)4 Vector2f (org.joml.Vector2f)3 Component (com.spinyowl.legui.component.Component)2 Animation (com.spinyowl.legui.animation.Animation)1 Button (com.spinyowl.legui.component.Button)1 CheckBox (com.spinyowl.legui.component.CheckBox)1 Dialog (com.spinyowl.legui.component.Dialog)1 Frame (com.spinyowl.legui.component.Frame)1 ImageView (com.spinyowl.legui.component.ImageView)1 Label (com.spinyowl.legui.component.Label)1 Panel (com.spinyowl.legui.component.Panel)1 PasswordInput (com.spinyowl.legui.component.PasswordInput)1 ProgressBar (com.spinyowl.legui.component.ProgressBar)1 RadioButton (com.spinyowl.legui.component.RadioButton)1 RadioButtonGroup (com.spinyowl.legui.component.RadioButtonGroup)1 ScrollBar (com.spinyowl.legui.component.ScrollBar)1 ScrollablePanel (com.spinyowl.legui.component.ScrollablePanel)1 SelectBoxScrollablePanel (com.spinyowl.legui.component.SelectBox.SelectBoxScrollablePanel)1 Slider (com.spinyowl.legui.component.Slider)1 SplitPanel (com.spinyowl.legui.component.SplitPanel)1