package test.module.battle;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.text.AttributeSet;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyleContext;
import javax.swing.text.TabSet;
import javax.swing.text.TabStop;
import org.junit.Before;
import org.junit.Test;
public class PreBattleTaskTest {
private class IntBox{
public int MaxValue;
public int currentValue;
public String name;
public IntBox(int value, String name){
this.MaxValue = value;
this.currentValue = 0;
this.name = name;
}
public boolean isReady(){
if (currentValue >= MaxValue){
currentValue = 0;
return true;
}
return false;
}
}
private class BattleTask extends TimerTask{
private ArrayList<IntBox> list = new ArrayList<IntBox>();
public void addElement(int input, String name){
list.add(new IntBox(input, name));
}
public void run(){
double result;
textpane.setText("");
for (IntBox num : list) {
result = (double) num.currentValue / (double) num.MaxValue * 100;
textpane.setText(String.format("%d%%\t|%s\n", (int) result, num.name));
if (num.isReady()){
System.out.println("Someone is ready!");
}
else num.currentValue += 100;
}
}
}
private class InputListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
JTextField input = (JTextField) e.getSource();
System.out.println(input.getText());
input.setText("");
}
}
private BattleTask task;
private JTextPane textpane;
@Before
public void setUp(){
task = new BattleTask();
// GUI setup
JFrame demo = new JFrame();
demo.setSize(400, 300);
demo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
textpane = new JTextPane();
TabStop[] tabs = new TabStop[1];
tabs[0] = new TabStop(40, TabStop.ALIGN_LEFT, TabStop.LEAD_NONE);
TabSet tabset = new TabSet(tabs);
StyleContext sc = StyleContext.getDefaultStyleContext();
AttributeSet aset = sc.addAttribute(SimpleAttributeSet.EMPTY,
StyleConstants.TabSet, tabset);
textpane.setParagraphAttributes(aset, false);
textpane.setEditable(false);
JTextField input = new JTextField();
InputListener listener = new InputListener();
input.addActionListener(listener);
demo.getContentPane().add(BorderLayout.CENTER, textpane);
demo.getContentPane().add(BorderLayout.SOUTH, input);
demo.setVisible(true);
input.requestFocusInWindow();
}
@Test
public void someTest(){
task.addElement(3000, "Tao/����");
//task.addElement(5000, "Kao/���d");
Timer timer = new Timer();
timer.schedule(task, 0, 100);
try {
Thread.sleep(8000);
} catch (InterruptedException e){}
timer.cancel();
}
}