Added Radius of Placement Slider.

This commit is contained in:
mrbesen 2017-04-04 14:51:28 +02:00
parent 63f7b77c7c
commit 3fcbe5f998
1 changed files with 92 additions and 21 deletions

View File

@ -5,6 +5,7 @@ import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.Scanner;
import javax.swing.JButton;
@ -26,7 +27,7 @@ public class UI implements ActionListener, ChangeListener{
JPanel root = new JPanel();
JPanel top = new JPanel();
JPanel bottom = new JPanel();
JPanel slider = new JPanel();
//JPanel slider = new JPanel();
JMenuBar menubar = new JMenuBar();
JMenu file_ = new JMenu("File");
@ -53,8 +54,13 @@ public class UI implements ActionListener, ChangeListener{
JLabel info = new JLabel("Define positions, to start.");
JSlider truppenwait = new JSlider(JSlider.HORIZONTAL, 1, 300, 180);
JLabel wait = new JLabel("Waittime between playouts: 18.0");
//JSlider truppenwait = new JSlider(JSlider.HORIZONTAL, 1, 300, 180);
//JLabel wait = new JLabel("Waittime between playouts: 18.0");
Slider[] slider = {
new Slider("Waittime: ","s", 1,300,180,-1, this, false),
new Slider("Radius of Placement: ","px",0,40,15,0,this,true)
};
Clicker bot = new Clicker();
@ -64,7 +70,7 @@ public class UI implements ActionListener, ChangeListener{
Main.get().ui = this;
//init screen
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frame.setSize(620, 140);
frame.setSize(620, 180);
save.setText("Save");
save.addActionListener(this);
@ -79,18 +85,18 @@ public class UI implements ActionListener, ChangeListener{
skip.setEnabled(false);
start.setEnabled(false);
doubleplace.setSelected(false);
doubleplace.setSelected(true);
doubleplace.setEnabled(false);
truppenwait.setEnabled(false);
// slider[0].setEnabled(false);
skip.addActionListener(this);
start.addActionListener(this);
exit.addActionListener(this);
autoplay.addActionListener(this);
doubleplace.addActionListener(this);
truppenwait.addChangeListener(this);
//truppenwait.addChangeListener(this);
for(PosSelector poss : posselctors) {
top.add(poss.button);
}
@ -102,13 +108,17 @@ public class UI implements ActionListener, ChangeListener{
bottom.add(doubleplace);
bottom.add(info);
slider.add(truppenwait);
slider.add(wait);
//slider.add(truppenwait);
//slider.add(wait);
root.add(top);
root.add(bottom);
root.add(slider);
// root.add(slider);
for(Slider s : slider) {
root.add(s);
}
frame.add(root);
frame.setVisible(true);
@ -159,18 +169,18 @@ public class UI implements ActionListener, ChangeListener{
if(srcb.equals(autoplay)) {
bot.setAutoPlay(srcb.isSelected());
if(srcb.isSelected()) {
truppenwait.setEnabled(true);
slider[0].setEnabled(true);
doubleplace.setEnabled(true);
} else {
truppenwait.setEnabled(false);
slider[0].setEnabled(false);
doubleplace.setEnabled(false);
}
} else if(srcb.equals(doubleplace)) {
bot.setDoublePlay(srcb.isSelected());
if(srcb.isSelected()) {//*2
truppenwait.setValue(truppenwait.getValue()*2);
slider[0].setValue(slider[0].getValue()*2);
} else {// /2
truppenwait.setValue(truppenwait.getValue()/2);
slider[0].setValue(slider[0].getValue()/2);
}
}
}
@ -181,9 +191,8 @@ public class UI implements ActionListener, ChangeListener{
Object o = e.getSource();
if(o instanceof JSlider) {
JSlider slider = (JSlider) o;
if(slider.equals(truppenwait)) {
if(slider.equals(this.slider[0])) {
bot.setWait(slider.getValue());
wait.setText("Waittime between playouts: "+(slider.getValue()/10f));
}
}
}
@ -199,13 +208,13 @@ public class UI implements ActionListener, ChangeListener{
if(num > 100) {
if(num == 101) {//truppenwait
int wait = Integer.parseInt(split[1]);
truppenwait.setValue(wait);
slider[0].setValue(wait);
} else if(num == 102) { // double playout
boolean dp = Boolean.parseBoolean(split[1]);
if(dp) {
autoplay.setSelected(true);
doubleplace.setEnabled(true);
truppenwait.setEnabled(true);
slider[0].setEnabled(true);
}
doubleplace.setSelected(dp);
}
@ -233,7 +242,7 @@ public class UI implements ActionListener, ChangeListener{
file.createNewFile();
FileWriter fw = new FileWriter(file);
fw.write(bot.serialize()+"\n101 "+ truppenwait.getValue() + "\n102 " + doubleplace.isSelected());
fw.write(bot.serialize()+"\n101 "+ slider[0].getValue() + "\n102 " + doubleplace.isSelected());
fw.flush();
fw.close();
@ -259,4 +268,66 @@ public class UI implements ActionListener, ChangeListener{
public void info(String a) {
info.setText(a);
}
public class Slider extends JPanel implements ChangeListener{
private static final long serialVersionUID = 1L;
private JSlider slider;
private JLabel label;
private ChangeListener listener;
private String prefix = "", sufix = "";
private int offset;
/**
* @param prefix the text of the Label
* @param sufix thge text of the Label
* @param minvalue start vlaue
* @param maxvalue last value
* @param startvalue inital value
* @param komma 10^x offset for komma digits
*/
public Slider(String prefix, String sufix, int minvalue, int maxvalue, int startvalue, int komma, ChangeListener cl, boolean enabled) {
slider = new JSlider(minvalue, maxvalue, startvalue);
slider.addChangeListener(this);
if(prefix != null)
this.prefix = prefix;
if(sufix != null) {
this.sufix = sufix;
}
offset = komma;
label = new JLabel(getLabelText());
add(slider);
add(label);
listener = cl;
slider.setEnabled(enabled);
}
public int getValue() {
return slider.getValue();
}
public void setValue(int val) {
slider.setValue(val);
}
private String getLabelText() {
if(offset >= 0)
return prefix + (slider.getValue() * (int) Math.pow(10, offset)) + sufix;
return prefix + (BigDecimal.valueOf(Math.pow(10, offset)).multiply(BigDecimal.valueOf(slider.getValue()))) + sufix;
}
/*public void setChangeListener(ChangeListener l) { //not required anymore
listener = l;
}*/
@Override
public void setEnabled(boolean enabled) {
slider.setEnabled(enabled);
}
@Override
public void stateChanged(ChangeEvent e) {
label.setText(getLabelText());//update info
listener.stateChanged(e);//forward Event
}
}
}