
de.lessvoid.nifty.controls.slider.SliderControl Maven / Gradle / Ivy
package de.lessvoid.nifty.controls.slider;
import de.lessvoid.nifty.Nifty;
import de.lessvoid.nifty.controls.*;
import de.lessvoid.nifty.elements.Element;
import de.lessvoid.nifty.input.NiftyInputEvent;
import de.lessvoid.nifty.input.NiftyMouseInputEvent;
import de.lessvoid.nifty.input.NiftyStandardInputEvent;
import de.lessvoid.nifty.screen.Screen;
import de.lessvoid.nifty.tools.SizeValue;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.logging.Logger;
/**
* @deprecated Please use {@link de.lessvoid.nifty.controls.Slider} when accessing NiftyControls.
*/
@Deprecated
public class SliderControl extends AbstractController implements Slider {
@Nonnull
private static final Logger log = Logger.getLogger(SliderControl.class.getName());
@Nonnull
private final SliderImpl sliderImpl;
@Nullable
private SliderView sliderView;
@Nullable
private Element elementPosition;
@Nullable
private Element elementBackground;
@Nullable
private NextPrevHelper nextPrevHelper;
public SliderControl() {
sliderImpl = new SliderImpl();
}
@Override
public void bind(
@Nonnull final Nifty nifty,
@Nonnull final Screen screen,
@Nonnull final Element element,
@Nonnull final Parameters parameter) {
bind(element);
elementBackground = element.findElementById("#background");
elementPosition = element.findElementById("#position");
nextPrevHelper = new NextPrevHelper(element, screen.getFocusHandler());
if (elementBackground == null) {
log.severe("Background element of slider not found. Slider will not work properly. Looked for: #background");
}
if (elementPosition == null) {
log.severe("Position element of slider not found. Slider will not work properly. Looked for: #position");
} else if (elementBackground != null) {
if ("verticalSlider".equals(parameter.get("name"))) {
sliderView = new SliderViewVertical(nifty, this, elementBackground, elementPosition);
} else {
sliderView = new SliderViewHorizontal(nifty, this, elementBackground, elementPosition);
}
}
float min = parameter.getAsFloat("min", 0.f);
float max = parameter.getAsFloat("max", 100.f);
float initial = parameter.getAsFloat("initial", 0.f);
float stepSize = parameter.getAsFloat("stepSize", 1.f);
float buttonStepSize = parameter.getAsFloat("buttonStepSize", 25.f);
sliderImpl.bindToView(sliderView, min, max, stepSize, buttonStepSize);
sliderImpl.setValue(initial);
}
@Override
public void onStartScreen() {
}
@Override
public void layoutCallback() {
sliderImpl.updateView();
}
@Override
public boolean inputEvent(@Nonnull final NiftyInputEvent inputEvent) {
if (nextPrevHelper != null && nextPrevHelper.handleNextPrev(inputEvent)) {
return true;
}
if (inputEvent == NiftyStandardInputEvent.MoveCursorUp || inputEvent == NiftyStandardInputEvent.MoveCursorLeft) {
sliderImpl.stepDown();
return true;
} else if (inputEvent == NiftyStandardInputEvent.MoveCursorDown || inputEvent == NiftyStandardInputEvent
.MoveCursorRight) {
sliderImpl.stepUp();
return true;
}
return false;
}
public void upClick() {
sliderImpl.stepDown();
}
public void downClick() {
sliderImpl.stepUp();
}
public void mouseClick(final int mouseX, final int mouseY) {
if (elementBackground != null && elementPosition != null) {
sliderImpl.setValueFromPosition(
mouseX - elementBackground.getX() - elementPosition.getWidth() / 2,
mouseY - elementBackground.getY() - elementPosition.getHeight() / 2);
}
}
public void mouseWheel(final Element element, @Nonnull final NiftyMouseInputEvent inputEvent) {
int mouseWheel = inputEvent.getMouseWheel();
float currentValue = sliderImpl.getValue();
if (mouseWheel < 0) {
sliderImpl.setValue(currentValue - sliderImpl.getButtonStepSize() * mouseWheel);
} else if (mouseWheel > 0) {
sliderImpl.setValue(currentValue - sliderImpl.getButtonStepSize() * mouseWheel);
}
}
// Slider implementation
@Override
public void setValue(final float value) {
sliderImpl.setValue(value);
}
@Override
public float getValue() {
return sliderImpl.getValue();
}
@Override
public void setMin(final float min) {
sliderImpl.setMin(min);
}
@Override
public float getMin() {
return sliderImpl.getMin();
}
@Override
public void setMax(final float max) {
sliderImpl.setMax(max);
}
@Override
public float getMax() {
return sliderImpl.getMax();
}
@Override
public void setStepSize(final float stepSize) {
sliderImpl.setStepSize(stepSize);
}
@Override
public float getStepSize() {
return sliderImpl.getStepSize();
}
@Override
public void setButtonStepSize(final float buttonStepSize) {
sliderImpl.setButtonStepSize(buttonStepSize);
}
@Override
public float getButtonStepSize() {
return sliderImpl.getButtonStepSize();
}
@Override
public void setup(
final float min,
final float max,
final float current,
final float stepSize,
final float buttonStepSize) {
sliderImpl.setup(min, max, current, stepSize, buttonStepSize);
}
// SliderView implementation
private static class SliderViewVertical implements SliderView {
@Nonnull
private final Nifty nifty;
@Nonnull
private final SliderControl slider;
@Nonnull
private final Element elementBackground;
@Nonnull
private final Element elementPosition;
public SliderViewVertical(
@Nonnull Nifty nifty,
@Nonnull final SliderControl slider,
@Nonnull Element elementBackground,
@Nonnull Element elementPosition) {
this.nifty = nifty;
this.slider = slider;
this.elementBackground = elementBackground;
this.elementPosition = elementPosition;
}
@Override
public int getSize() {
return elementBackground.getHeight() - elementPosition.getHeight();
}
@Override
public void update(final int position) {
elementPosition.setConstraintY(SizeValue.px(position));
elementBackground.layoutElements();
}
@Override
public int filter(final int pixelX, final int pixelY) {
return pixelY;
}
@Override
public void valueChanged(final float value) {
String id = slider.getId();
if (id != null) {
nifty.publishEvent(id, new SliderChangedEvent(slider, value));
}
}
}
private static class SliderViewHorizontal implements SliderView {
@Nonnull
private final Nifty nifty;
@Nonnull
private final SliderControl slider;
@Nonnull
private final Element elementBackground;
@Nonnull
private final Element elementPosition;
public SliderViewHorizontal(
@Nonnull Nifty nifty,
@Nonnull final SliderControl slider,
@Nonnull Element elementBackground,
@Nonnull Element elementPosition) {
this.nifty = nifty;
this.slider = slider;
this.elementBackground = elementBackground;
this.elementPosition = elementPosition;
}
@Override
public int getSize() {
return elementBackground.getWidth() - elementPosition.getWidth();
}
@Override
public void update(final int position) {
elementPosition.setConstraintX(SizeValue.px(position));
elementBackground.layoutElements();
}
@Override
public int filter(final int pixelX, final int pixelY) {
return pixelX;
}
@Override
public void valueChanged(final float value) {
String id = slider.getId();
if (id != null) {
nifty.publishEvent(id, new SliderChangedEvent(slider, value));
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy