public class LoginScreen extends GenericPopup implements Clickable { public AuthMe plugin = AuthMe.getInstance(); private SpoutCfg spoutCfg = SpoutCfg.getInstance(); private CustomButton exitBtn; private CustomButton loginBtn; private GenericTextField passBox; private GenericLabel titleLbl; private GenericLabel textLbl; private GenericLabel errorLbl; String exitTxt = spoutCfg.getString("LoginScreen.exit button"); String loginTxt = spoutCfg.getString("LoginScreen.login button"); String exitMsg = spoutCfg.getString("LoginScreen.exit message"); String title = spoutCfg.getString("LoginScreen.title"); @SuppressWarnings("unchecked") List<String> textlines = (List<String>) spoutCfg.getList("LoginScreen.text"); public SpoutPlayer splayer; public LoginScreen(SpoutPlayer player) { this.splayer = player; createScreen(); } private void createScreen() { int objects = textlines.size() + 4; int part = !(textlines.size() <= 5) ? 195 / objects : 20; int h = 3 * part / 4, w = 8 * part; titleLbl = new GenericLabel(); titleLbl .setText(title) .setTextColor(new Color(1.0F, 0, 0, 1.0F)) .setAlign(WidgetAnchor.TOP_CENTER) .setHeight(h) .setWidth(w) .setX(maxWidth / 2) .setY(25); this.attachWidget(plugin, titleLbl); int ystart = 25 + h + part / 2; for (int x = 0; x < textlines.size(); x++) { textLbl = new GenericLabel(); textLbl .setText(textlines.get(x)) .setAlign(WidgetAnchor.TOP_CENTER) .setHeight(h) .setWidth(w) .setX(maxWidth / 2) .setY(ystart + x * part); this.attachWidget(plugin, textLbl); } passBox = new GenericTextField(); passBox .setMaximumCharacters(18) .setMaximumLines(1) .setHeight(h - 2) .setWidth(w - 2) .setY(220 - h - 2 * part); passBox.setPasswordField(true); setXToMid(passBox); this.attachWidget(plugin, passBox); errorLbl = new GenericLabel(); errorLbl .setText("") .setTextColor(new Color(1.0F, 0, 0, 1.0F)) .setHeight(h) .setWidth(w) .setX(passBox.getX() + passBox.getWidth() + 2) .setY(passBox.getY()); this.attachWidget(plugin, errorLbl); loginBtn = new CustomButton(this); loginBtn.setText(loginTxt).setHeight(h).setWidth(w).setY(220 - h - part); setXToMid(loginBtn); this.attachWidget(plugin, loginBtn); exitBtn = new CustomButton(this); exitBtn.setText(exitTxt).setHeight(h).setWidth(w).setY(220 - h); setXToMid(exitBtn); this.attachWidget(plugin, exitBtn); this.setPriority(RenderPriority.Highest); } @EventHandler(priority = EventPriority.HIGHEST) public void handleClick(ButtonClickEvent event) { Button b = event.getButton(); SpoutPlayer player = event.getPlayer(); if (event.isCancelled() || event == null || event.getPlayer() == null) return; if (b.equals(loginBtn)) { plugin.management.performLogin(player, passBox.getText(), false); } else if (b.equals(exitBtn)) { event.getPlayer().kickPlayer(exitMsg); } } private void setXToMid(Widget w) { w.setX((maxWidth - w.getWidth()) / 2); } }
public static LimboCache getInstance() { if (singleton == null) { singleton = new LimboCache(AuthMe.getInstance()); } return singleton; }