package org.wildstang.wildrank.desktop.modes;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JProgressBar;
import javax.swing.JTextField;
import org.json.JSONArray;
import org.json.JSONObject;
import org.wildstang.wildrank.desktop.GlobalAppHandler;
import org.wildstang.wildrank.desktop.TextFieldHintHandler;
import org.wildstang.wildrank.desktop.utils.FileUtilities;
import org.wildstang.wildrank.desktop.utils.JSONTools;
public class PitAssigner extends Mode implements ActionListener, Runnable {
JButton go;
JTextField numberOfTablets;
static JProgressBar progress;
Thread thread;
@Override
public void actionPerformed(ActionEvent event) {
if (event.getSource() == go) {
thread = new Thread(this);
thread.start();
}
}
@Override
protected void initializePanel() {
go = new JButton("Write pit configuration!");
go.addActionListener(this);
progress = new JProgressBar();
numberOfTablets = new JTextField("Number of tablets (default is 3)");
numberOfTablets.addFocusListener(new TextFieldHintHandler(numberOfTablets, "Number of tablets (default is 3)"));
c.gridx = 0;
c.gridy = 0;
panel.add(numberOfTablets, c);
c.gridx = 1;
panel.add(go, c);
c.gridy = 1;
c.gridx = 0;
c.gridwidth = 2;
panel.add(progress, c);
update.setMode("Pit Assigner");
}
@Override
public void run() {
GlobalAppHandler.getInstance().disableBackButton();
progress.setIndeterminate(true);
JSONArray eventTeamsListObject = new JSONArray(JSONTools.getJsonFromUrl("http://www.thebluealliance.com/api/v2/event/" + appData.getEventKey() + "/teams"));
JSONArray teamsArray = new JSONArray();
int posCounter = 0;
int numTablets;
try {
numTablets = Integer.parseInt(numberOfTablets.getText().toString());
} catch (NumberFormatException e) {
numTablets = 3;
}
for (int i = 0; i < eventTeamsListObject.length(); i++) {
JSONObject currentTeam = eventTeamsListObject.getJSONObject(i);
JSONObject team = new JSONObject();
team.put("number", currentTeam.get("team_number"));
team.put("name", currentTeam.getString("nickname"));
team.put("pit_group", posCounter);
posCounter++;
if (posCounter == numTablets) {
posCounter = 0;
}
teamsArray.put(team);
}
JSONObject rootObject = new JSONObject();
rootObject.put("team", teamsArray);
File file = new File(FileUtilities.getSyncedDirectory() + File.separator + "event" + File.separator + "pit.json");
file.getParentFile().mkdirs();
try {
if (!file.exists()) {
file.createNewFile();
}
BufferedWriter bw = new BufferedWriter(new FileWriter(file));
bw.write(rootObject.toString());
bw.flush();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
GlobalAppHandler.getInstance().enableBackButton();
setMode(new MainMenu());
}
}