diff options
author | Draknyte1 <Draknyte1@hotmail.com> | 2016-01-20 14:24:34 +1000 |
---|---|---|
committer | Draknyte1 <Draknyte1@hotmail.com> | 2016-01-20 14:24:34 +1000 |
commit | 869c206c4fcc8001bd2e1d66f704290331813835 (patch) | |
tree | 96735ce8fe4665e2759c3374221d6f06f4527df2 /src/Java/binnie/craftgui/controls/listbox/ControlListBox.java | |
parent | ec2c72827f01dd4bb2174137f1ab162f9ddaab62 (diff) | |
download | GT5-Unofficial-869c206c4fcc8001bd2e1d66f704290331813835.tar.gz GT5-Unofficial-869c206c4fcc8001bd2e1d66f704290331813835.tar.bz2 GT5-Unofficial-869c206c4fcc8001bd2e1d66f704290331813835.zip |
Initial Commit
Diffstat (limited to 'src/Java/binnie/craftgui/controls/listbox/ControlListBox.java')
-rw-r--r-- | src/Java/binnie/craftgui/controls/listbox/ControlListBox.java | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/src/Java/binnie/craftgui/controls/listbox/ControlListBox.java b/src/Java/binnie/craftgui/controls/listbox/ControlListBox.java new file mode 100644 index 0000000000..e9370daa3d --- /dev/null +++ b/src/Java/binnie/craftgui/controls/listbox/ControlListBox.java @@ -0,0 +1,76 @@ +package binnie.craftgui.controls.listbox; + +import binnie.core.util.IValidator; +import binnie.craftgui.controls.core.IControlValue; +import binnie.craftgui.controls.scroll.ControlScrollableContent; +import binnie.craftgui.core.IWidget; +import binnie.craftgui.events.EventKey.Down; +import binnie.craftgui.events.EventKey.Down.Handler; +import java.util.Collection; + +public class ControlListBox<T> + extends ControlScrollableContent<ControlList<T>> + implements IControlValue<T> +{ + public ControlListBox(IWidget parent, float x, float y, float w, float h, float scrollBarSize) + { + super(parent, x, y, w, h, scrollBarSize); + } + + public void initialise() + { + setScrollableContent(new ControlList(this, 1.0F, 1.0F, w() - 2.0F - this.scrollBarSize, h() - 2.0F)); + + addEventHandler(new EventKey.Down.Handler() + { + public void onEvent(EventKey.Down event) + { + EventKey.Down eventKey = event; + if (ControlListBox.this.calculateIsMouseOver()) + { + int currentIndex = ((ControlList)ControlListBox.this.getContent()).getCurrentIndex(); + if (eventKey.getKey() == 208) + { + currentIndex++; + if (currentIndex >= ((ControlList)ControlListBox.this.getContent()).getOptions().size()) { + currentIndex = 0; + } + } + else if (eventKey.getKey() == 200) + { + currentIndex--; + if (currentIndex < 0) { + currentIndex = ((ControlList)ControlListBox.this.getContent()).getOptions().size() - 1; + } + } + ((ControlList)ControlListBox.this.getContent()).setIndex(currentIndex); + } + } + }); + } + + public final T getValue() + { + return ((ControlList)getContent()).getValue(); + } + + public final void setValue(T value) + { + ((ControlList)getContent()).setValue(value); + } + + public void setOptions(Collection<T> options) + { + ((ControlList)getContent()).setOptions(options); + } + + public IWidget createOption(T value, int y) + { + return new ControlOption((ControlList)getContent(), value, y); + } + + public void setValidator(IValidator<IWidget> validator) + { + ((ControlList)getContent()).setValidator(validator); + } +} |