package org.openbakery.racecontrol.plugin; import java.io.IOException; import java.util.Collections; import java.util.List; import java.util.StringTokenizer; import org.openbakery.jinsim.response.InSimResponse; import org.openbakery.jinsim.response.NewConnectionResponse; import org.openbakery.racecontrol.gui.Button; import org.openbakery.racecontrol.web.bean.MenuItem; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class WelcomeMessage implements Plugin { private static Logger log = LoggerFactory.getLogger(WelcomeMessage.class); private String message; public WelcomeMessage(String message) { this.message = message; } public void packetReceived(InSimResponse response) { if (response instanceof NewConnectionResponse) { processNewConnectionResponse((NewConnectionResponse) response); } } private void processNewConnectionResponse(NewConnectionResponse response) { Button button = new Button(response.getConnectionId(), "", 50, 5, 100, 6); log.debug("Show message to {} - {}", response.getConnectionId(), response.getPlayerName()); MessageRunner runner = new MessageRunner(button, 6000); Thread thread = new Thread(runner); thread.start(); } private class MessageRunner implements Runnable { private Button button; private int time; public MessageRunner(Button button, int time) { this.button = button; this.time = time; } public void run() { try { StringTokenizer tokens = new StringTokenizer(message, "\n"); while (tokens.hasMoreTokens()) { log.debug("Show button text {}", button); button.setText(tokens.nextToken()); button.setVisible(true); Thread.sleep(time); } } catch (Exception e) { log.error("Unable so set button visible", e); } finally { try { button.setVisible(false); } catch (IOException e) { log.error("Unable so set button invisible", e); } } } } public String getHelp() { return ""; } public String getName() { return "Welcome Message"; } public List<MenuItem> getMenuItems() { return Collections.emptyList(); } }