/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.kapti.administration.helpers; import com.kapti.client.user.User; import com.kapti.client.user.UserFactory; import com.kapti.exceptions.StockPlayException; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.ResourceBundle; import java.util.logging.Level; import java.util.logging.Logger; import org.jdesktop.swingx.JXLoginPane; import org.jdesktop.swingx.JXLoginPane.JXLoginFrame; import org.jdesktop.swingx.JXLoginPane.Status; /** * * @author Thijs */ public class StockPlayLoginScreen implements LoginScreen { private static final ResourceBundle translations = ResourceBundle.getBundle("com/kapti/administration/translations"); private List<ActionListener> listeners = new ArrayList<ActionListener>(); public void addActionListener(ActionListener listener) { listeners.add(listener); } public void removeActionListener(ActionListener listener) { listeners.remove(listener); } private void fireActionEvent(ActionEvent e) { for (ActionListener listener : listeners) { listener.actionPerformed(e); } } private boolean success = false; public boolean isSuccess() { return success; } private User user = null; public User getUser() { return user; } private final JXLoginPane loginPane = new JXLoginPane(); private JXLoginFrame loginFrame; public StockPlayLoginScreen() { StockPlayPreferences prefs = new StockPlayPreferences(); loginPane.setBannerText(translations.getString("STOCKPLAY")); loginPane.setMessage(translations.getString("LOGIN_MESSAGE")); if (prefs.getSavePasswords() && prefs.getSaveUsernames()) { loginPane.setSaveMode(JXLoginPane.SaveMode.BOTH); } else if (prefs.getSaveUsernames()) { loginPane.setSaveMode(JXLoginPane.SaveMode.USER_NAME); } else if (prefs.getSavePasswords()) { loginPane.setSaveMode(JXLoginPane.SaveMode.PASSWORD); } else { loginPane.setSaveMode(JXLoginPane.SaveMode.NONE); } loginPane.setLoginService(new StockPlayLoginService()); loginPane.setUserNameStore(new StockPlayUsernameStore()); loginPane.setPasswordStore(new StockPlayPasswordStore()); loginFrame = JXLoginPane.showLoginFrame(loginPane); loginFrame.setTitle(translations.getString("LOGIN_TITLE")); loginFrame.setVisible(true); loginFrame.addWindowListener(new WindowAdapter() { @Override public void windowClosed(WindowEvent e) { if (loginPane.getStatus() == Status.SUCCEEDED) { success = true; try { Collection<User> users = UserFactory.getInstance().getUsersDetailsByFilter("nickname == '" + loginPane.getUserName() + "'"); Iterator<User> it = users.iterator(); if (it.hasNext()) { user = it.next(); } fireActionEvent(new ActionEvent(this, 1, "")); } catch (StockPlayException ex) { Logger.getLogger(StockPlayLoginScreen.class.getName()).log(Level.SEVERE, null, ex); } } else { fireActionEvent(new ActionEvent(this, 0, "")); } } }); } }