From 3fcbe5f9985ffc8558626da4ede4fdd8f29737d1 Mon Sep 17 00:00:00 2001 From: mrbesen Date: Tue, 4 Apr 2017 14:51:28 +0200 Subject: [PATCH] Added Radius of Placement Slider. --- src/mrbesen/cr/auto/clicker/UI.java | 113 ++++++++++++++++++++++------ 1 file changed, 92 insertions(+), 21 deletions(-) diff --git a/src/mrbesen/cr/auto/clicker/UI.java b/src/mrbesen/cr/auto/clicker/UI.java index eb905b0..3440019 100644 --- a/src/mrbesen/cr/auto/clicker/UI.java +++ b/src/mrbesen/cr/auto/clicker/UI.java @@ -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 + } + } } \ No newline at end of file