package com.gameminers.glasspane.testharness;
import gminers.glasspane.GlassPane;
import gminers.glasspane.component.button.PaneButton;
import gminers.glasspane.component.button.PaneCheckBox;
import gminers.glasspane.component.numeric.PaneSlider;
import gminers.glasspane.component.progress.PaneProgressBar;
import gminers.glasspane.component.progress.PaneProgressHueRing;
import gminers.glasspane.event.StateChangedEvent;
import gminers.glasspane.listener.PaneEventHandler;
import gminers.kitchensink.Strings;
import gminers.kitchensink.WaveType;
public class PaneTestProgressBars
extends GlassPane {
private WaveType[] waves = {
WaveType.SINE,
WaveType.TANGENT,
WaveType.SECANT,
WaveType.TRIANGLE
};
public PaneTestProgressBars() {
setName("Progress Bars");
add(PaneButton.createDoneButton());
add(PaneTestHarness.createGithubButton("PaneTestProgressBars.java"), PaneTestHarness.createFlipButton());
final PaneProgressBar basic = new PaneProgressBar();
basic.setProgressTextShown(true);
basic.setProgressText("Basic Bar");
basic.setX(10);
basic.setY(10);
basic.setWidth(200);
basic.setHeight(14);
basic.setProgress(0);
basic.setMaximumProgress(100);
final PaneSlider slider = new PaneSlider();
slider.setText("Progress");
slider.setMaximum(100);
slider.setX(10);
slider.setY(28);
slider.setWidth(200);
slider.setHeight(14);
slider.registerListeners(new Object() {
@PaneEventHandler
public void onStateChange(StateChangedEvent e) {
basic.setProgress(slider.getValue());
}
});
add(basic, slider);
int y = 46;
for (WaveType w : waves) {
final PaneProgressBar indeterminate = new PaneProgressBar();
indeterminate.setProgressTextShown(true);
indeterminate.setProgressText("Indeterminate Bar (" + Strings.formatTitleCase(w.name()) + ")");
indeterminate.setX(10);
indeterminate.setY(y);
indeterminate.setIndeterminateWave(w);
indeterminate.setWidth(200);
indeterminate.setHeight(14);
indeterminate.setIndeterminateColor(indeterminate.getColor());
indeterminate.setIndeterminate(true);
add(indeterminate);
// It's pretty busy and distracting with all of them animating at once, so offer a way to turn it off
final PaneCheckBox animate = new PaneCheckBox("Animate", false);
animate.setX(214);
animate.setY(y + 2);
animate.registerListeners(new Object() {
@PaneEventHandler
public void onStateChange(StateChangedEvent e) {
if (animate.isSelected()) {
indeterminate.setIndeterminateColor(0x5555FF);
} else {
indeterminate.setIndeterminateColor(indeterminate.getColor());
}
}
});
add(animate);
y += 18;
}
final PaneProgressHueRing ring = new PaneProgressHueRing();
ring.setX(10);
ring.setY(y);
ring.setProgressTextShown(true);
ring.setProgressText("Ring");
ring.setWidth(40);
ring.setHeight(40);
ring.setProgress(0);
ring.setMaximumProgress(100);
final PaneSlider ringSlider = new PaneSlider();
ringSlider.setText("Ring Progress");
ringSlider.setMaximum(100);
ringSlider.setX(54);
ringSlider.setY(y);
ringSlider.setWidth(156);
ringSlider.setHeight(20);
ringSlider.registerListeners(new Object() {
@PaneEventHandler
public void onStateChange(StateChangedEvent e) {
ring.setProgress(ringSlider.getValue());
}
});
final PaneSlider hueSlider = new PaneSlider();
hueSlider.setText("Ring Hue");
hueSlider.setMaximum(360);
hueSlider.setX(54);
hueSlider.setY(y + 20);
hueSlider.setWidth(156);
hueSlider.setHeight(20);
hueSlider.setValue((int) ring.getTargetHue());
hueSlider.registerListeners(new Object() {
@PaneEventHandler
public void onStateChange(StateChangedEvent e) {
ring.setTargetHue(hueSlider.getValue());
}
});
add(ring, ringSlider, hueSlider);
final PaneProgressBar exact = new PaneProgressBar();
exact.setProgressTextShown(true);
exact.setProgressText("Exact, Colored Bar");
exact.setX(214);
exact.setY(10);
exact.setColor(0xFFFFFF);
exact.setProgressTextColor(0xFFFF00);
exact.setFilledColor(0x0000FF);
exact.setWidth(200);
exact.setHeight(14);
exact.setAccuracy(1.0);
exact.setProgress(0);
exact.setMaximumProgress(100);
final PaneSlider exactSlider = new PaneSlider();
exactSlider.setText("Exact Progress");
exactSlider.setMaximum(100);
exactSlider.setX(214);
exactSlider.setY(28);
exactSlider.setWidth(200);
exactSlider.setHeight(14);
exactSlider.registerListeners(new Object() {
@PaneEventHandler
public void onStateChange(StateChangedEvent e) {
exact.setProgress(exactSlider.getValue());
}
});
add(exact, exactSlider);
}
}