package de.lessvoid.nifty.examples.resolution;
import de.lessvoid.nifty.Nifty;
import de.lessvoid.nifty.NiftyEventSubscriber;
import de.lessvoid.nifty.controls.DropDown;
import de.lessvoid.nifty.controls.DropDownSelectionChangedEvent;
import de.lessvoid.nifty.controls.ListBox;
import de.lessvoid.nifty.examples.NiftyExample;
import de.lessvoid.nifty.screen.Screen;
import de.lessvoid.nifty.screen.ScreenController;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.Collection;
/**
* @author void
*/
public class ResolutionScreen<T> implements ScreenController, NiftyExample {
private Nifty nifty;
@Nullable
private DropDown<T> dropDown;
private ResolutionControl<T> resControl;
public ResolutionScreen(final ResolutionControl<T> newControl) {
resControl = newControl;
}
@SuppressWarnings("unchecked")
@Override
public void bind(@Nonnull final Nifty newNifty, @Nonnull final Screen screen) {
this.nifty = newNifty;
this.dropDown = screen.findNiftyControl("resolutions", DropDown.class);
ListBox<String> listBox = screen.findNiftyControl("listBox", ListBox.class);
fillResolutionDropDown(screen);
dropDown.selectItem(resControl.getCurrentResolution());
listBox.addItem("Test");
listBox.addItem("TestTestTestTestTestTestTestTestTestTestTestTest");
listBox.selectItem("Test");
}
@Override
public void onStartScreen() {
}
@Override
public void onEndScreen() {
}
@NiftyEventSubscriber(id = "resolutions")
public void onResolution(final String id, @Nonnull final DropDownSelectionChangedEvent<T> event) {
resControl.setResolution(event.getSelection());
nifty.resolutionChanged();
}
private void fillResolutionDropDown(final Screen screen) {
final Collection<T> resolutions = resControl.getResolutions();
for (T mode : resolutions) {
dropDown.addItem(mode);
}
}
@Nonnull
@Override
public String getStartScreen() {
return "start";
}
@Nonnull
@Override
public String getMainXML() {
return "resolution/resolution.xml";
}
@Nonnull
@Override
public String getTitle() {
return "Nifty Screen Resolution";
}
@Override
public void prepareStart(@Nonnull Nifty nifty) {
nifty.registerScreenController(this);
}
}