package org.darkstorm.minecraft.gui.component.basic; import org.darkstorm.minecraft.gui.component.*; import org.darkstorm.minecraft.gui.listener.*; public class BasicComboBox extends AbstractComponent implements ComboBox { private String[] elements; private int selectedIndex; private boolean selected; public BasicComboBox() { elements = new String[0]; } public BasicComboBox(String... elements) { this.elements = elements; } @Override public String[] getElements() { return elements; } @Override public void setElements(String... elements) { selectedIndex = 0; this.elements = elements; } @Override public int getSelectedIndex() { return selectedIndex; } @Override public void setSelectedIndex(int selectedIndex) { this.selectedIndex = selectedIndex; for(ComponentListener listener : getListeners()) { if(listener instanceof ComboBoxListener) { try { ((ComboBoxListener) listener) .onComboBoxSelectionChanged(this); } catch(Exception exception) { exception.printStackTrace(); } } } } @Override public String getSelectedElement() { return elements[selectedIndex]; } @Override public boolean isSelected() { return selected; } @Override public void setSelected(boolean selected) { this.selected = selected; for(ComponentListener listener : getListeners()) { if(listener instanceof SelectableComponentListener) { try { ((SelectableComponentListener) listener).onSelectedStateChanged(this); } catch(Exception exception) { exception.printStackTrace(); } } } } @Override public void addComboBoxListener(ComboBoxListener listener) { addListener(listener); } @Override public void removeComboBoxListener(ComboBoxListener listener) { removeListener(listener); } @Override public void addSelectableComponentListener(SelectableComponentListener listener) { addListener(listener); } @Override public void removeSelectableComponentListener(SelectableComponentListener listener) { removeListener(listener); } }