private void setupCutoffTimers() { Logger cutoffLogger = sessionLogger(); Random random = new Random(); int cutoffIfSimultaneous = (int) (random.nextDouble() * (latestCutoff - earliestCutoff)); if (simultaneousCutoff) { cutoffLogger.info("using a simultaneous cutoff of " + cutoffIfSimultaneous + " seconds."); } Iterator<String> nameIterator = playerNameIterator(); while (nameIterator.hasNext()) { Judge judge = getJudgeOrNull(nameIterator.next()); if (judge == null) { continue; } int cutoff; if (simultaneousCutoff) { cutoff = cutoffIfSimultaneous; } else { cutoff = earliestCutoff + (int) (random.nextDouble() * (latestCutoff - earliestCutoff)); cutoffLogger.info( "using a cutoff for judge '" + judge.getName() + "' of " + cutoff + " seconds."); int roundDuration = timeLimit(); if (cutoff > roundDuration + 10) { cutoff = roundDuration + 10; cutoffLogger.info( "reducing timeout to " + cutoff + " (10 seconds after round finishes)."); } } TimerTask task = judge.getCutoffTimer(); timer.schedule(task, 1000 * cutoff); } }
// -------------------------------------------------------------------------- // Constructor. If judge is null, it's to create a new judge. // -------------------------------------------------------------------------- CreateJudgeScreen(JudgesPanel panel, Tournament t, Judge j) { jp = panel; tournament = t; judge = j; ScSS = new SchoolStrikesScreen(judge, tournament, this); StSS = new StudentStrikesScreen(judge, tournament, this); gbc = new GridBagConstraints(); JLabel nameLabel = new JLabel("Last name:"); nameField = new JTextField(); nameField.setColumns(15); if (judge != null) nameField.setText(judge.getName()); JLabel priorityLabel = new JLabel("Default priority:"); priorityBox = new JComboBox(Priority.PriorityLevel.values()); if (judge == null) priorityBox.setSelectedItem(Priority.PriorityLevel.Normal); else priorityBox.setSelectedItem(judge.getDefaultPriority()); JButton schoolStrikes = new JButton("School strikes:"); schoolStrikes.addActionListener(new SchoolStrikesListener()); schoolStrikesLabel = new JLabel(); resetSchoolStrikesLabel(); JButton studentStrikes = new JButton("Student strikes:"); studentStrikes.addActionListener(new StudentStrikesListener()); studentStrikesLabel = new JLabel(); resetStudentStrikesLabel(); topPanel = new JPanel(); topPanel.setLayout(new GridLayout(4, 2)); topPanel.add(nameLabel); topPanel.add(nameField); topPanel.add(priorityLabel); topPanel.add(priorityBox); topPanel.add(schoolStrikes); topPanel.add(schoolStrikesLabel); topPanel.add(studentStrikes); topPanel.add(studentStrikesLabel); saveButton = new JButton("Save"); saveButton.addActionListener(new SaveListener()); cancelButton = new JButton("Cancel"); cancelButton.addActionListener(new CancelListener()); deleteButton = new JButton("Delete"); deleteButton.addActionListener(new DeleteListener()); bottomPanel = new JPanel(); bottomPanel.setLayout(new BoxLayout(bottomPanel, BoxLayout.X_AXIS)); bottomPanel.add(saveButton); bottomPanel.add(cancelButton); bottomPanel.add(deleteButton); mainPanel = new JPanel(); mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS)); mainPanel.add(topPanel); mainPanel.add(bottomPanel); scrollPane = new JScrollPane(mainPanel); add(scrollPane); }