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 java.util.ArrayList; import java.util.List; import java.util.Vector; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JTextField; import org.json.JSONObject; import org.wildstang.wildrank.desktop.game.Game; import org.wildstang.wildrank.desktop.game.Item; import org.wildstang.wildrank.desktop.game.Item.ItemType; import org.wildstang.wildrank.desktop.game.Section; import org.wildstang.wildrank.desktop.utils.Logger; public class ManualMatchEntering extends Mode implements ActionListener { List<JTextField> fields = new ArrayList<JTextField>(); List<JCheckBox> boxes = new ArrayList<JCheckBox>(); List<JLabel> labels = new ArrayList<JLabel>(); Game game; JButton save; @Override protected void initializePanel() { game = appData.getGame(); save = new JButton("Save"); save.addActionListener(this); labels.add(new JLabel("Match")); labels.add(new JLabel("Team")); labels.add(new JLabel("Scouter")); fields.add(new JTextField()); fields.add(new JTextField()); fields.add(new JTextField()); int startingx = 0; c.gridx = startingx; c.gridy = 0; for (int i = 0; i < fields.size(); i++) { c.gridx = startingx; panel.add(labels.get(i), c); c.gridx = startingx + 1; panel.add(fields.get(i), c); c.gridy++; } for (Section section : game.getSections()) { startingx += 2; c.gridy = 0; for (Item item : section.getItems()) { labels.add(new JLabel(item.getName())); if (item.getType() == ItemType.TYPE_BOOLEAN) { boxes.add(new JCheckBox()); c.gridx = startingx; panel.add(labels.get(labels.size() - 1), c); c.gridx = startingx + 1; panel.add(boxes.get(boxes.size() - 1), c); c.gridy++; } else { fields.add(new JTextField()); c.gridx = startingx; panel.add(labels.get(labels.size() - 1), c); c.gridx = startingx + 1; panel.add(fields.get(fields.size() - 1), c); c.gridy++; } } } c.gridy++; panel.add(save, c); Vector<JComponent> order = new Vector<JComponent>(); for (int i = 0; i < fields.size(); i++) { order.add(fields.get(i)); } for (int i = 0; i < boxes.size(); i++) { order.add(boxes.get(i)); } } @Override public void actionPerformed(ActionEvent event) { if (event.getSource() == save) { JSONObject json = new JSONObject(); JSONObject object; json.put("match_number", Integer.parseInt(fields.get(0).getText())); json.put("team_number", Integer.parseInt(fields.get(1).getText())); json.put("scouter_id", fields.get(2).getText()); int counter = 3; int bcounter = 0; JSONObject scoring = new JSONObject(); for (Section section : game.getSections()) { object = new JSONObject(); for (Item item : section.getItems()) { switch (item.getType()) { case TYPE_NUM: object.put(item.getKey(), Integer.parseInt(fields.get(counter).getText())); counter++; break; case TYPE_BOOLEAN: object.put(item.getKey(), boxes.get(bcounter).isSelected()); bcounter++; break; case TYPE_STRING: object.put(item.getKey(), fields.get(counter).getText()); counter++; break; } } scoring.put(section.getKey(), object); } File file = new File(appData.getLocalLocation() + File.separator + "synced" + File.separator + "matches" + File.separator + Integer.parseInt(fields.get(0).getText()) + File.separator + Integer.parseInt(fields.get(1).getText()) + ".json"); Logger.getInstance().log(file.toString()); if (!file.exists()) { file.getParentFile().mkdir(); try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } json.put("scoring", scoring); try { BufferedWriter bw = new BufferedWriter(new FileWriter(file)); bw.write(json.toString()); bw.close(); } catch (IOException e) { e.printStackTrace(); } for (int i = 0; i < fields.size(); i++) { fields.get(i).setText(""); } for (int i = 0; i < boxes.size(); i++) { boxes.get(i).setSelected(false); } } } }